传输层
穿透TCP/UDP每一层机制,看清可靠传输的设计权衡与异常路径
按 空格/→ 演示下一步
全部页面点击任意一页,跳回舞台从这页播放
传输层
穿透TCP/UDP每一层机制,看清可靠传输的设计权衡与异常路径
传输层概述
你电脑同时打开网页、看直播、聊 QQ——三个应用的数据在网线上并行传输。系统怎么知道哪个包该交给哪个应用?网络层只负责把包送到主机,剩下的「最后一公里」由传输层完成。
网络层是城市间运输,传输层负责把包裹送到具体收件人手里
用户数据报协议 UDP
上一页我们看了传输层的整体定位,这一页进入其中最轻的协议——UDP。它几乎不做额外工作:把应用层的数据加上一个 8 字节的小信封就发出去。
写好地址投筒即走,不挂号不签收,便宜但可能丢
通信模型
上一页讲了 UDP 是「发完就走」的简单模式。但浏览网页、看视频、远程登录这些真实应用,通信远比一次发包复杂。先把通信模型拆清楚,下一页 TCP 的可靠传输才有立足点。
平信是 UDP——写好地址寄出就完;挂号信是 TCP——要签收回执、全程可追
TCP数据段
上一页我们看到 UDP 把数据扔出去就不管了,TCP 要做到可靠,就必须给每个数据包附加更多信息——这个被打包好的单元,就叫 TCP 段。
信头=挂号单(寄件人/收件人/单号),信纸=数据负载
TCP三次握手建立连接
你点开网页时TCP在背后悄悄握手三次。本节把上一节段首部的SYN标志位真正用起来——为什么建立连接要三次报文,而不是两次?
客人亮证件→前台递表→客人签字交回,每步都在双向确认,缺一不可
TCP连接释放
三次握手建起了通话,怎么收尾?打电话你说「我挂了」,对方答「好」——但他也得说「我也挂了」才能真结束。TCP全双工,两个方向独立关闭,所以比建立多一步。
你说挂、我答好、我又说挂、你答好——两次「我说+你答」是因为两个方向独立
TCP传输策略
三次握手把通道打开后,真正困难的部分才开始——怎么把数据又快又稳地送过去?TCP 并非「一上来就猛发」,而是用一组策略边发边探、边发边调。
细水试探→稳流→堵了快停→减流继续,对应四种状态切换
TCP拥塞控制
当很多人同时下载,网络就像一条突然拥挤的高速路:TCP不能只管重发,还要主动放慢发送。拥塞控制决定“我还能发多快”。
道路畅通时逐步加速,堵车时降速;车辆限速对应窗口的增大、减小
TCP定时器等
上一页讲完四次挥手收尾,但其实TCP运行中后台有几个定时器在并行工作,分别应对不同异常。这一页把它们摆出来,看各自管什么、超时时间怎么算。
重传=没说应再说;坚持=忙时小声问;保活=沉默问还在吗;2MSL=挂后等一下
本节要点
- ✓UDP不保证到达,TCP以序号+确认+重传保证可靠
- ✓三次握手实质是双向确认收发能力,两次不够
- ✓滑动窗口同时管流量与可靠传输,是效率关键
- ✓拥塞控制是慢启动→避免→快恢复的动态循环
- ✓TIME_WAIT等2MSL是为防旧报文段迷途干扰
课后思考
先独立思考,再对照参考答案。重点不是答对,而是把思考过程走通。
参考答案建立时SYN和ACK可以合并在同一次往返里传递,三次就够了。关闭时因为TCP是全双工的,每一方都要单独发FIN并收ACK,所以是四次。多出来的那次,是为了让被动关闭方能把剩余数据发完再正式关闭。
参考答案选UDP。直播对实时性的要求远高于完整性,偶尔丢帧可以用后续帧掩盖;TCP的重传和拥塞控制会引入明显延迟,破坏流畅度。一般在UDP之上自己实现必要的可靠性,比如选择性重传。
参考答案重传、超时、拥塞控制中针对丢包的部分会失去意义。但流量控制(防发送方压垮接收方)和连接管理(三次握手、四次挥手)仍然必要——这些约束来自通信双方的处理能力与状态同步,而不是网络本身。