传输层
传输层是承接应用层和网络层的关键一环,传输层基于网络层提供的服务将主机与主机之间的通信封装为端与端之间的通信,实现了两台主机进程之间的数据交付,并且为上层应用屏蔽了复杂的底层网络细节,建立了网络的抽象模型。围绕以上特性,本章探讨传输层使用的技术。 (1)传输层多路复用/分用功能与端到端传输 传输层通过 多路复用 和 多路分用 实现多个应用进程共享网络层服务。 多路复用:发送方传输层将多个应用进程的数据(来自不同套接字)封装成数据段,然后传递给网络层。 多路分用:接收方传输层根据数据段中的端口号,将数据交付给正确的套接字(即相应进程)。 端口:16 位整数(0–65535),用于标识主机上的特定进程。 熟知端口(0–1023):分配给标准服务,如 HTTP(80)、HTTPS(443)、FTP(21)、SSH(22)、DNS(53)。 注册端口(1024–49151):用户应用程序使用,需要向 IANA 注册。 动态/私有端口(49152–65535):客户端临时使用。 套接字(Socket):IP 地址 + 端口号的组合,唯一标识网络中的一个端点。套接字是应用层与传输层之间的编程抽象。 传输层提供两种核心服务模式:无连接的 UDP 和面向连接的 TCP。 (2)UDP(用户数据报协议) UDP 提供无连接、不可靠的数据传输服务,不保证顺序,不进行重传。 特点: 无连接:发送前无需建立连接,每个 UDP 数据段独立处理。 轻量:头部开销小(仅 8 字节),无拥塞控制和流量控制。 支持组播和广播。 应用场景:对延迟敏感、容忍丢包、实时性要求高的场景(如 DNS 查询、VoIP、视频直播、在线游戏)。 UDP 数据段格式: 源端口(2 字节)、目的端口(2 字节)、长度(2 字节,包括头部和数据)、校验和(2 字节,覆盖头部和数据及伪头部)。 校验和计算:包含 UDP 伪头部(源 IP、目的 IP、协议号、UDP 长度),用于检测从网络层到传输层的差错。 典型应用: 远程过程调用(RPC):客户调用远程服务时,UDP 的低延迟适合请求-响应交互。 实时传输协议(RTP):通常运行在 UDP 上,传输音视频媒体流,允许少量丢包。 (3)TCP(传输控制协议) TCP 提供面向连接、可靠、有序的字节流服务。 特点: 面向连接:数据传输前需经过三次握手建立连接。 可靠传输:使用序号、确认、重传保证数据不丢失、不重复、按序到达。 流量控制:基于滑动窗口机制,协调发送速率避免接收方缓存溢出。 拥塞控制:动态调整发送速率,避免网络过载。 全双工通信:支持双向同时传输数据。 TCP 数据段格式: 源端口、目的端口(各 2 字节) 序号(4 字节,本段第一个字节的序号) 确认号(4 字节,期望收到的下一个序号,表示之前的数据都已收到) 数据偏移(4 位,头部长度) 标志位:ACK(确认有效)、RST(复位)、SYN(同步序号)、FIN(终止连接)、URG(紧急指针有效)、PSH(立即推送) 窗口大小(2 字节,接收方给出的剩余缓存空间) 校验和(2 字节,覆盖头部、数据和伪头部) 紧急指针(2 字节,与 URG 配合) 选项(可变长,如最大段大小 MSS、时间戳、窗口缩放因子) 可靠传输机制: ...