
一、问题描述作为网络设计者在设计传输层时面临以下核心问题子问题1如何标识通信的端点网络层IP层只能把数据送到目的主机但主机上同时运行着多个应用进程浏览器、邮件客户端、视频播放器等。传输层必须解决“数据应该交给哪个进程”的问题。子问题2如何提供不同类型的传输服务不同应用对传输服务的要求不同网页浏览、文件传输要求数据可靠、按序到达实时视频、语音通话要求低时延能容忍少量丢包路由选择、DNS查询要求简单高效。子问题3如何在不可靠的IP网络上实现可靠传输IP层提供的是“尽最大努力交付”服务分组可能丢失、乱序、重复。传输层必须在此基础上实现可靠传输。子问题4如何控制发送速率流量控制接收方处理能力有限发送方不能发得太快拥塞控制网络核心路由器、链路容量有限过多数据注入会导致拥塞甚至崩溃。子问题5如何管理连接面向连接的传输需要解决如何建立连接、如何释放连接、如何应对异常情况。子问题6如何适应新型网络环境传统TCP/UDP在高带宽、高时延、移动切换等场景下存在不足需要新型传输层协议。二、方案说明子问题1的解决端口与套接字方案使用16位端口号标识应用进程。端口号范围0~65535分为三类周知端口0~1023IANA统一分配如HTTP80、HTTPS443、DNS53登记端口1024~49151在IANA登记供特定应用使用短暂端口49152~65535客户端临时使用通信结束后回收。端口号只具有本地意义不同主机的相同端口号没有联系。套接字 (IP地址 : 端口号)唯一标识一条TCP连接的端点。TCP连接由两个套接字唯一确定TCP连接 :: {socket1, socket2}。复用与分用复用发送方多个应用进程的数据通过传输层封装后交给IP层发送分用接收方传输层根据目的端口号将数据分别交付给正确的应用进程。子问题2的解决UDP与TCP两种协议方案提供UDP和TCP两种传输层协议满足不同应用需求。特性UDPTCP连接方式无连接面向连接可靠性尽最大努力交付不保证可靠可靠交付确认重传数据单位面向报文不合并、不拆分面向字节流拥塞控制无有慢启动、拥塞避免、快重传、快恢复流量控制无滑动窗口首部开销8字节20字节最小通信方式一对一、一对多、多对一、多对多仅点对点一对一典型应用UDPDNS、DHCP、RIP、SNMP、流式多媒体、IP电话TCPHTTP、SMTP、FTP、BGP、文件传送。UDP首部格式8字节源端口2字节、目的端口2字节、长度2字节、校验和2字节校验和计算时需加12字节伪首部检验首部和数据。TCP首部格式20字节固定首部可选选项源端口、目的端口、序号、确认号、数据偏移、保留、控制位URG/ACK/PSH/RST/SYN/FIN、窗口、校验和、紧急指针、选项。子问题3的解决可靠传输工作原理方案确认、重传、序号、滑动窗口。1停止等待协议每发送一个分组就停止发送等待确认后再发送下一个超时重传发送方设置超时计时器超时未收到确认则重传确认丢失/迟到接收方丢弃重复分组重发确认缺点信道利用率低。2连续ARQ协议发送窗口发送方在未收到确认的情况下可连续发送多个分组累积确认对分组Mn的确认表明Mn及以前所有分组都已正确接收滑动窗口每收到一个确认发送窗口向前滑动。3TCP的滑动窗口机制以字节为单位发送方和接收方分别维持发送窗口和接收窗口发送窗口是发送缓冲区的一个子集接收窗口大小由接收方通知发送窗口还受拥塞窗口限制真正的发送窗口 Min(接收方通知的窗口值, 拥塞窗口值)。4超时重传时间的选择加权平均往返时间新的RTTs (1-α)×旧的RTTs α×新的RTT样本α推荐1/8超时重传时间RTO RTTs 4×RTTDRTTD是RTT偏差的加权平均值报文段重传时RTO加倍指数退避。5选择性确认SACK在TCP首部选项中增加SACK选项报告收到的不连续字节块边界发送方只重传丢失的数据避免重传已正确到达的数据。子问题4的解决流量控制与拥塞控制1流量控制方案利用滑动窗口机制接收方控制发送方发送速率。接收方在确认报文中通知自己的接收窗口大小rwnd发送方发送窗口不能超过rwnd零窗口死锁若接收方通知rwnd0发送方停止发送若后续窗口更新丢失双方互相等待持续计时器收到零窗口通知后启动到期发送零窗口探测报文打破死锁。2拥塞控制方案TCP发送方维持拥塞窗口cwnd根据网络拥塞程度动态调整。判断拥塞的依据超时重传网络拥塞导致分组丢弃。四种经典算法TCP Reno慢启动初始cwnd1 MSS每收到一个对新报文段的确认cwnd增加1 MSS每经过一个RTTcwnd加倍当cwnd≥ssthresh时改用拥塞避免。拥塞避免每经过一个RTTcwnd增加1 MSS线性增长出现超时ssthreshcwnd/2cwnd1重新慢启动。快重传收到3个连续重复确认立即重传丢失报文段不等超时。快恢复收到3个重复确认时ssthreshcwnd/2cwndssthresh3每收到一个重复确认cwnd增加1收到新确认后cwndssthresh执行拥塞避免。拥塞控制状态机慢启动 → 拥塞避免 → 快重传/快恢复 → 慢启动或拥塞避免。3其他拥塞控制机制TCP CUBIC以时间为横坐标三次曲线增长Linux/Windows默认TCP BBR基于瓶颈带宽和往返时间不依赖丢包适合高BDP网络ECN显式拥塞通知路由器标记CE接收方通过ECE通知发送方发送方CWR响应AQM主动队列管理RED、CoDel、FQ-CoDel、PIE等避免全局同步。子问题5的解决TCP连接管理方案三报文握手建立连接四报文握手释放连接。1连接建立三报文握手客户发送SYN1seqx服务器回复SYN1ACK1seqyackx1客户回复ACK1seqx1acky1。目的防止已失效的连接请求报文段突然到达导致错误连接。2连接释放四报文握手主动关闭方发送FIN1sequ被动关闭方回复ACK1acku1seqv被动关闭方发送FIN1ACK1seqwacku1主动关闭方回复ACK1sequ1ackw1。TIME-WAIT状态主动关闭方等待2MSL确保最后ACK到达防止旧报文段干扰新连接。3保活计时器服务器每收到一次客户数据就重置通常2小时超时后每隔75秒发送探测报文10次无响应则关闭连接。子问题6的解决新型传输层协议方案针对特定场景设计新型协议。协议特点应用场景SCTP面向连接多流多宿主电信信令传输DCTCP基于TCP扩展数据中心拥塞控制数据中心DCCP无连接拥塞控制实时应用QUIC基于UDP0-RTT/1-RTT连接内置TLS多路复用无队头阻塞Web、移动、CDNQUIC核心优势在UDP上实现可靠传输不需要修改内核每个流独立序号和重传避免队头阻塞连接ID标识连接支持IP/端口变化时保持连接默认使用CUBIC拥塞控制集成TLS加密。三、总结作为网络设计者传输层的设计围绕以下核心目标展开标识通信端点通过端口号和套接字实现应用进程间的逻辑通信提供差异化服务UDP简单高效适合实时应用TCP可靠有序适合文件传输和Web实现可靠传输通过确认、重传、序号、滑动窗口在不可靠IP网络上实现可靠字节流传输控制发送速率流量控制保护接收方拥塞控制保护网络核心管理连接三报文握手建立、四报文握手释放确保连接可靠建立和释放适应新环境CUBIC、BBR、ECN、QUIC等新机制应对高带宽、高时延、移动切换等挑战。传输层是计算机网络体系结构中承上启下的关键层次它向应用层屏蔽了网络核心的细节同时利用网络层提供的服务实现了端到端的可靠或高效通信。