网络基础之------网络协议(传输层)

0 阅读6分钟

一·TCP协议

1、TCP简介

TCP(传输控制协议)是互联网核心协议之一,属于传输层协议,提供可靠的、面向连接的数据传输服务。工作在IP协议之上,通常使用端口号标识应用(如80-HTTP、443-HTTPS)。


2、TCP核心特性
  1. 可靠性

    • 数据包确认(ACK)、重传机制、顺序控制确保数据完整到达。
  2. 面向连接

    • 通信前需通过三次握手建立连接,结束后通过四次挥手释放连接。
  3. 流量控制

    • 滑动窗口机制动态调整发送速率,避免接收方过载。
  4. 拥塞控制

    • 通过慢启动、拥塞避免等算法适应网络状况(如Reno、CUBIC算法)。

3、TCP报文结构
 0                   1                   2                   3
 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|          Source Port          |       Destination Port        |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                        Sequence Number                        |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                    Acknowledgment Number                      |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|  Data |           |U|A|P|R|S|F|                               |
| Offset| Reserved  |R|C|S|S|Y|I|            Window             |
|       |           |G|K|H|T|N|N|                               |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|           Checksum            |         Urgent Pointer        |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                    Options (if any)                           |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                             Data                             |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  • 关键字段

    • 源/目的端口(各16位):标识应用进程。
    • 序列号(32位):数据字节流的编号。
    • 确认号(32位):期望收到的下一字节序号。
    • 标志位(6位):SYN(建立连接)、ACK(确认)、FIN(关闭连接)等。

4、TCP连接管理
1. 三次握手(建立连接)

image.png

2. 四次挥手(释放连接)

image.png

5、TCP的优缺点
优点
优点说明
可靠传输数据不丢失、不重复、按序到达
全双工通信双方可同时收发数据
自适应网络动态调整速率避免拥塞
缺点
缺点说明
头部开销大最小20字节(不含选项)
延迟敏感场景弱重传机制导致延迟波动(游戏/视频通话可能选UDP)
连接管理复杂握手/挥手增加延迟

6、TCP的应用场景
场景协议示例原因
网页浏览HTTP/HTTPS需保证文本/图片完整加载
文件传输FTP、SFTP防止文件损坏
电子邮件SMTP、IMAP邮件内容不可丢失
数据库访问MySQL、PostgreSQL事务数据一致性

二·UDP协议

1、UDP简介

UDP(用户数据报协议)是一种无连接的、不可靠的传输层协议,工作在IP协议之上,使用端口号标识应用(如53-DNS、123-NTP)。其设计目标是轻量高效,因为是无连接传输,所以在传输大量数据包的时候会发生丢包情况,对比tcp的三次握手显得不安全。不过在视频传输等对完整性要求不高的时候,udp的快速传输就显得重要了。


2、UDP核心特性
  1. 无连接
    • 无需握手,直接发送数据(低延迟)。
  2. 不可靠传输
    • 无确认(ACK)、重传、顺序控制,数据可能丢失或乱序。
  3. 头部开销小
    • 固定8字节头部(TCP至少20字节)。
  4. 支持广播/多播
    • 可同时向多个主机发送数据(如视频直播)。

3、UDP报文结构
 0                   1                   2                   3
 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|          Source Port          |       Destination Port        |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|            Length             |           Checksum            |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                             Data                             |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  • 关键字段
    • 源/目的端口(各16位):标识应用进程。
    • 长度(16位):整个UDP报文的字节数(含头部)。
    • 校验和(16位):可选,用于检测数据错误。

4、UDP的优缺点
优点
优点说明
低延迟无握手、无拥塞控制,实时性极佳
高效头部仅8字节,适合小数据包
多播支持适合视频会议、在线直播
缺点
缺点说明
不可靠丢包、重复、乱序需应用层处理
无流量控制可能淹没接收方(需自定义限速)
易受攻击伪造源IP的UDP洪水攻击(如DNS放大攻击)

5、UDP的应用场景
场景协议示例选择原因
实时音视频RTP、WebRTC延迟敏感,少量丢包可接受
在线游戏QUIC(部分)、游戏引擎协议需要快速响应
DNS查询DNS短连接,一次请求即完成
物联网CoAP、MQTT-SN低功耗设备资源有限

tcp和udp的对比

特性UDPTCP
连接性❌ 无连接✅ 面向连接
可靠性❌ 不保证交付✅ 确认+重传
顺序性❌ 可能乱序✅ 按序到达
速度⚡ 极快(无控制开销)🐢 较慢(握手/拥塞控制)
头部大小8字节20~60字节
多播支持✅ 支持❌ 不支持

三·sctp

1、SCTP简介

SCTP(流控制传输协议)是由IETF设计的面向消息的传输层协议,结合了TCP的可靠性和UDP的多流特性,默认使用端口号标识应用(如SCTP的默认端口与TCP/UDP独立)。


2、SCTP核心特性
  1. 多流(Multi-Streaming)

    • 在单个连接内支持多个独立的逻辑数据流(避免TCP的队头阻塞问题)。
  2. 多宿主(Multi-Homing)

    • 终端可绑定多个IP地址,自动切换故障路径(提高容错性)。
  3. 消息边界保留

    • 传输消息而非字节流(类似UDP,但保证顺序和可靠性)。
  4. 选择性确认(SACK)

    • 仅重传丢失的数据块(非整个窗口),提高效率。

3、SCTP报文结构

plaintext

 0                   1                   2                   3
 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|     Source Port Number        |     Destination Port Number   |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                      Verification Tag                        |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                           Checksum                           |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                      Chunk 1 (Mandatory)                     |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                           ...                                |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                      Chunk N (Optional)                      |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  • 关键字段

    • 块(Chunk) :SCTP的基本数据单元,每个块包含类型、标志和长度。
    • 验证标签(Verification Tag) :防止旧连接的重复报文干扰。

4、SCTP的优缺点
优点
优点说明
抗队头阻塞多流设计避免单个流阻塞整体传输
高可靠性支持ACK、重传和拥塞控制(类似TCP)
网络容错多宿主切换提升链路可靠性
消息边界适合传输离散消息(如信令协议)
缺点
缺点说明
兼容性有限部分防火墙/NAT设备不支持
部署复杂需操作系统和应用程序显式支持
头部开销比UDP大(但小于TCP的复杂控制)

5、SCTP的应用场景
场景协议示例选择原因
电信信令SIGTRAN(SS7 over IP)多流+高可靠性需求
WebRTC数据通道(DataChannel)避免TCP队头阻塞
物联网关键设备通信多宿主容错
金融交易低延迟+可靠传输替代部分TCP场景

三者的对比

特性SCTPTCPUDP
连接性✅ 面向连接✅ 面向连接❌ 无连接
可靠性✅ 可靠传输✅ 可靠传输❌ 不可靠
多流支持✅ 独立多流❌ 单字节流❌ 单数据报
多宿主✅ 支持❌ 不支持❌ 不支持
消息边界✅ 保留❌ 字节流✅ 保留