当前位置:首页 > 技术知识 > 正文内容

一文带你玩转网络八大核心协议,收藏!

maynowei6个月前 (09-18)技术知识63

你知道吗?每当你刷视频、发邮件、传文件时,背后都有一群“数字交警”在默默指挥流量!今天我们将深入揭秘支撑互联网运转的八大核心协议,用最生动的语言+表情包+技术细节,带你解锁网络世界的底层密码!

SSH协议

黑客最恨的“加密隧道”

定义

Secure Shell(安全外壳协议)

核心功能

加密远程登录(默认端口22)

技术亮点

  • 非对称加密(RSA/ECDSA) + 对称加密(AES/ChaCha20)双保险
  • 防中间人攻击:首次连接时验证主机指纹
  • 端口转发:轻松突破防火墙限制(ssh -L/-D/-R)

验证方式

  1. 基于口令的安全验证:只要知道自己的帐号和口令,就可以登录到远程主机。所有传输的数据都会被加密,但是不能保证正在连接的服务器就是自己想连接的服务器,可能会受到“中间人”攻击。
  2. 基于密钥的安全验证:需要为自己创建一对密钥,并把公用密钥放在需要访问的服务器上。连接时,客户端软件向服务器发出请求,服务器收到请求后,先在服务器上的主目录下寻找公用密钥,然后与客户端发送过来的公用密钥进行比较。如果一致,服务器用公用密钥加密“质询”并发送给客户端软件,客户端软件收到“质询”后用私人密钥解密再发送给服务器。这种方式不仅加密所有传送的数据,而且能有效防止“中间人”攻击,因为攻击者没有私人密钥。不过,整个登录过程可能需要10秒左右。

组成部分

  1. 传输层协议(SSH - TRANS):提供了服务器认证,保密性及完整性,有时还提供压缩功能。通常运行在TCP/IP连接上,也可能用于其它可靠数据流上,提供了强力的加密技术、密码主机认证及完整性保护。该协议中的认证基于主机,并且不执行用户认证,更高层的用户认证协议可以设计在此协议之上。
  2. 用户认证协议(SSH - USERAUTH):用于向服务器提供客户端用户鉴别功能,运行在传输层协议SSH - TRANS上面。当SSH - USERAUTH开始后,它从低层协议那里接收会话标识符,会话标识符唯一标识此会话并且适用于标记以证明私钥的所有权,同时也需要知道低层协议是否提供保密性保护。
  3. 连接协议(SSH - CONNECT):将多个加密隧道分成逻辑通道,运行在用户认证协议上,提供了交互式登录话路、远程命令执行、转发TCP/IP连接和转发X11连接。

深度扩展

SSH密钥对生成命令:

ssh-keygen -t ed25519 -C "your_email@example.com"

(比传统RSA更安全高效)

企业级应用

  • GitHub代码推送的底层协议
  • 云服务器运维的黄金标准

FTP协议

文件传输界的“老司机”

定义

File Transfer Protocol(文件传输协议)

双通道架构

  • 控制连接(端口21)
  • 数据连接(动态端口/被动模式)

FTP使用客户端 - 服务器模型,客户端与服务器之间建立两个连接:控制连接和数据连接。控制连接用于在客户端和服务器之间传输命令和响应,数据连接则用于传输实际的文件数据。客户端通过控制连接向服务器发送各种命令,如登录、切换目录、上传文件、下载文件等,服务器根据接收到的命令执行相应的操作,并通过控制连接返回响应信息。当需要传输文件时,客户端和服务器之间会建立数据连接,进行文件数据的传输。

安全隐患

明文传输 → 衍生出FTPS(FTP over SSL)和SFTP(SSH File Transfer Protocol)

经典操作演示

ftp 192.168.1.100  
user: admin  
pass: ********  
get filename.zip  

现代替代方案

云存储协议(S3/MinIO)+ 断点续传技术

TCP协议

数据快递的“保价服务”

核心特性

  • 三次握手建立连接(SYN → SYN-ACK → ACK)

在进行数据传输之前,TCP客户端和服务器之间需要通过三次握手来建立连接。首先,客户端向服务器发送一个SYN(同步序列编号)包,请求建立连接;服务器收到SYN包后,向客户端发送一个SYN + ACK(确认编号)包,表示同意建立连接;客户端收到服务器的SYN + ACK包后,再向服务器发送一个ACK包,确认连接建立。通过三次握手,客户端和服务器之间就建立了一个可靠的连接。

  • 数据分片重组 + 超时重传机制
  • 流量控制(滑动窗口) + 拥塞控制(慢启动/AIMD)

报文结构图

| 源端口(16bit) | 目的端口(16bit) |  
| 序列号(32bit) | 确认号(32bit) |  
| 数据偏移 | 保留位 | URG|ACK|PSH|RST|SYN|FIN | 窗口大小(16bit) |  
| 校验和(16bit) | 紧急指针(16bit) |  

性能调优

Linux内核参数调整:

sysctl -w net.ipv4.tcp_window_scaling=1 (启用窗口缩放)

UDP协议

直播游戏的“闪电侠”

核心定位

无连接 + 尽最大努力交付

杀手级应用

  • 实时游戏(UDP数据包头部仅8字节!)
  • 视频会议(RTP协议基于UDP)
  • DNS查询(快速响应优先)

协议对比实验

指标

TCP

UDP

延迟

100-300ms

<50ms

丢包处理

自动重传

直接丢弃

适用场景

网页/邮件

直播/物联网

IP协议

网络世界的“GPS导航”

核心任务

  • IPv4地址分配(32位,如192.168.1.1)
  • IPv6革命性升级(128位,fe80::1%lo0)
  • 路由选择(OSPF/BGP协议协作)

IP版本

目前,IP协议主要有两个版本:IPv4和IPv6。

  1. IPv4:IPv4是目前广泛使用的IP协议版本,它使用32位二进制数表示IP地址,理论上可以提供约43亿个IP地址。然而,随着互联网的快速发展,IPv4地址已经逐渐耗尽。
  2. IPv6:IPv6是IPv4的下一代版本,它使用128位二进制数表示IP地址,理论上可以提供的IP地址数量几乎是无限的。IPv6不仅解决了IPv4地址耗尽的问题,还在安全性、移动性等方面进行了改进和增强。

IP数据报结构

| 版本(4) | 头长度 | 服务类型 | 总长度 |  
| 标识符 | 标志 | 分片偏移 |  
| TTL | 协议 | 头部校验和 |  
| 源IP地址 |  
| 目的IP地址 |  

NAT穿透技术

STUN/TURN/ICE三剑客解决P2P连接难题

HTTPS协议

电商支付的“防盗门”

安全四重奏

1 对称加密(AES-256-GCM)
2 非对称加密(RSA/ECC)
3 数字证书(CA机构认证)
4 散列算法(SHA-256)

TLS握手全流程

  1. ClientHello → 2. ServerHello → 3. 证书验证 → 4. 密钥交换 → 5. 加密通信

实战命令

查看网站证书链:

openssl s_client -connect www.baidu.com:443 -showcerts

HTTP协议

万维网的“普通话”

版本进化史

  • HTTP/1.1:持久连接 + 管线化
  • HTTP/2:二进制分帧 + 头部压缩
  • HTTP/3:基于QUIC协议 + 0-RTT握手

请求报文解剖

GET /index.html HTTP/1.1  
Host: www.example.com  
User-Agent: Mozilla/5.0  
Accept-Language: en-us  

开发者工具

Chrome DevTools中的Waterfall图表分析加载性能

SMTP协议:

电子邮件的“邮递员”

工作流程

  1. 客户端 → SMTP服务器(端口25)
  2. 服务器间MX记录查询
  3. 收件服务器(POP3/IMAP)

安全升级

  • STARTTLS加密传输
  • SPF/DKIM/DMARC反垃圾邮件三件套

手动发邮件实验

telnet smtp.example.com 25  
HELO client.example.com  
MAIL FROM: <sender@example.com>  
RCPT TO: <receiver@example.com>  
DATA  
Subject: Test  
Hello World!  
.  
QUIT

协议森林的生存法则

在这个每秒传输PB级数据的时代,这些协议就像精密的瑞士钟表零件般协同工作。下次当你在直播中抢购商品时,请记住:正是UDP保证了实时画面流畅,HTTPS守护着支付安全,而SMTP正悄悄把你的订单确认信送向云端!

相关文章

事半功倍 轻松制作可交互移动原型

写在前面先讲个场景,看看有多少人躺枪,你在一个没有专职的交互设计师的公司做客户端的产品,基本上产品和交互的活儿你全承包了,当你准备好一切需要向领导和项目团队一起讲新版本的设计:做过WEB产品的老手,或...

Win10系统除了移植Objective C,还要有Swift

IT之家讯Build2015大会最让人震惊的莫属微软推出工具,Win10系统可以移植安卓/iOS应用,特别是后者使用的Objective C编程语言,不过最新消息表明,微软连苹果最新的Swift移植也...

Android主流UI开源库整理(android完整开源项目)

前言最近老大让我整理一份 Android主流UI开源库 的资料,以补充公司的Android知识库。由于对格式不做特别限制,于是打算用博客的形式记录下来,方便查看、防丢并且可以持续维护、不断更新。标题隐...

如何优雅地使用嵌入式事件标志组?

事件标志组嵌入式事件标志组是一种在嵌入式系统中广泛使用的同步机制,主要用于实现多任务间的同步与通信。事件标志组是一组事件标志位的集合,每个位代表一个事件是否发生。它允许任务等待特定的事件发生,当事件发...

Linux系统编程:条件变量为什么要用锁

条件变量可以解决线程同步和共享资源访问的问题,条件变量是对互斥锁的补充,它允许一个线程阻塞并等待另一个线程发送的信号,当收到信号时,阻塞的线程被唤醒并试图锁定与之相关的互斥锁。具体定义如下:等待:in...

Google前工程主管“入住”Oracle(google公司前台)

ZDNet至顶网服务器频道 10月11日 新闻消息:Oracle 已聘用了前 Snapchat 和 Google 工程部主管 Peter Magnusson,其主要的职责是运行一个被重新调整过的 of...