传输层核心考点全解析:TCP与UDP协议、端口机制及期末冲刺指南 1. 传输层到底在解决什么问题1.1 从“两台主机”到“两个进程”的关键跨越很多同学学到第五章的时候会有一种割裂感前面几章讲物理层、数据链路层、网络层感觉都是在解决“线怎么连”“包怎么从A主机送到B主机”的问题怎么到了传输层突然开始讲端口、讲连接、讲可靠传输了这个转折点其实非常关键理解了它整章的逻辑就顺了。网络层做的事情用一句话概括就是把数据包从源主机送到目的主机。它关心的是IP地址是路由选择是“这台机器能不能找到那台机器”。但问题是一台主机上跑着几十上百个进程——浏览器、聊天软件、邮件客户端、后台更新服务——数据包到了主机之后到底该交给哪个进程网络层不管这事它只负责送到主机门口。真正把数据“从门口递到具体房间”的就是传输层。所以传输层最核心的使命是在主机与主机通信的基础上进一步实现进程与进程之间的通信。这个“进程到进程”的逻辑通道专业术语叫端到端通信而网络层提供的是点到点通信。这两个概念在选择题和简答题里反复出现必须分清楚。打个比方网络层像是快递公司把包裹从发货城市运到了收货城市的分拨中心传输层则是快递员根据具体地址把包裹送到你手上。分拨中心只知道“这个城市”快递员才知道“哪条街哪栋楼哪一户”。1.2 传输层的两大核心协议TCP与UDP传输层有两个主要协议这是整章的主线几乎所有考点都围绕它们展开TCP传输控制协议面向连接、可靠、字节流、全双工。适合对数据完整性要求高的场景比如文件传输、网页加载、邮件发送。UDP用户数据报协议无连接、不可靠、报文、开销小。适合对实时性要求高、能容忍少量丢包的场景比如视频直播、语音通话、DNS查询。这两个协议不是“谁好谁坏”的关系而是面向不同需求的设计取舍。考试里经常出“以下场景应该用TCP还是UDP”的判断题答题的关键不是背结论而是理解背后的权衡逻辑你要可靠性还是要实时性你能接受重传带来的延迟吗1.3 本章在期末考中的分值分布规律根据我这些年帮同学梳理期末重点的经验传输层在计算机网络期末卷面中通常占**20%到30%**的分值是仅次于网络层或与之持平的第二大章节。题型分布大致是这样的题型常见考点分值占比选择题端口号范围、TCP/UDP区别、首部字段含义约30%填空题三次握手标志位、拥塞控制算法名称约15%简答题三次握手过程、四次挥手过程、流量控制与拥塞控制区别约30%计算题滑动窗口效率、拥塞窗口变化、往返时间计算约25%计算题是最容易拉开差距的部分后面我会专门用一节来讲清楚滑动窗口和拥塞控制的计算套路。2. 端口与套接字传输层的“门牌号”系统2.1 端口号的分类与分配规则端口号是传输层用来标识进程的16位数字范围是0到65535。这个范围被划分成三段每段的用途不同熟知端口Well-known Port0到1023。这些端口被分配给系统级的标准服务比如HTTP是80、HTTPS是443、FTP是21、DNS是53、SMTP是25。考试里经常考“以下哪个是熟知端口”或者“HTTP默认端口是多少”。登记端口Registered Port1024到49151。分配给用户注册的应用程序比如MySQL默认3306、Redis默认6379。动态端口Ephemeral Port49152到65535。客户端发起连接时临时使用的端口用完就释放。注意考试里如果问“客户端发起HTTP请求时使用的端口号范围”答案是动态端口范围不是80。80是服务器监听的端口客户端用的是临时分配的动态端口。这个坑很多人踩过。2.2 套接字Socket的完整定义套接字是传输层通信的基本单位它的完整定义是IP地址 端口号的组合。比如192.168.1.100:8080就是一个套接字。为什么要IP加端口因为IP定位主机端口定位进程两者缺一不可。在TCP连接中一条连接由四元组唯一标识源IP、源端口、目的IP、目的端口。这四个元素中任何一个不同就是不同的连接。考试里常出“一台服务器能否同时处理多个客户端连接”的问题答案是可以因为每个连接的四元组不同。2.3 常见协议与端口的对应关系速查这张表建议直接背下来选择题和填空题的高频考点协议端口号传输层协议用途HTTP80TCP网页浏览HTTPS443TCP加密网页浏览FTP21控制/ 20数据TCP文件传输SMTP25TCP邮件发送POP3110TCP邮件接收DNS53UDP查询/ TCP区域传送域名解析DHCP67服务器/ 68客户端UDP动态主机配置SNMP161UDP网络管理Telnet23TCP远程登录DNS这一行特别容易考普通域名查询用UDP因为快区域传送用TCP因为要可靠。这个细节在简答题里出现过多次。3. UDP协议深度拆解3.1 UDP首部结构只有8个字节的极简设计UDP首部只有4个字段每个2字节总共8字节源端口2字节发送方端口号可选不需要回复时可置0。目的端口2字节接收方端口号必须填写。长度2字节UDP数据报的总长度首部数据最小值为8。校验和2字节用于检测传输过程中的比特错误。对比TCP首部的20字节不含选项UDP的首部开销只有40%。这个差异在计算题里经常用到同样大小的数据UDP的传输效率更高。3.2 UDP的“无连接”到底意味着什么“无连接”不是说不需要建立任何关系而是说发送数据之前不需要握手。UDP发送方直接把数据报交给网络层不关心接收方是否准备好、是否在线、是否能收到。这种设计带来三个直接后果速度快没有握手延迟首部开销小适合实时应用。不可靠数据报可能丢失、重复、乱序UDP本身不做任何补救。无拥塞控制UDP不管网络是否拥堵照发不误。这在网络拥塞时会加剧问题但对实时流媒体来说反而是优点——宁可丢几帧也不要卡顿。3.3 UDP适用场景的判断题套路考试里经常给一个场景让你判断该用TCP还是UDP。我总结了一个简单的判断流程数据能不能容忍丢失不能容忍→TCP。延迟敏不敏感非常敏感→UDP。是否需要广播或多播需要→UDPTCP不支持多播。数据量是不是很小且一次性是→UDP省去握手开销。典型题目“视频会议应该使用哪个协议”答案是UDP因为实时性优先少量丢包可以通过编码冗余来弥补。“文件下载应该使用哪个协议”答案是TCP因为一个字节都不能少。4. TCP协议核心机制全解析4.1 TCP首部字段逐个拆解TCP首部固定部分20字节加上可选选项最多60字节。每个字段都有考点逐个说源端口/目的端口各2字节和UDP一样。序号Sequence Number4字节标识发送数据的第一个字节的序号。注意是字节序号不是报文序号这是TCP和UDP的重要区别。确认号Acknowledgment Number4字节期望收到的下一个字节的序号。比如确认号是1001表示1000及之前的字节都收到了。数据偏移4位表示首部长度单位是4字节。最小值是520字节最大值是1560字节。保留6位目前置0。标志位6位包括URG、ACK、PSH、RST、SYN、FIN。这六个标志位是三次握手和四次挥手的核心。窗口2字节接收方告诉发送方自己还能接收多少字节用于流量控制。校验和2字节检验首部和数据。紧急指针2字节配合URG使用指出紧急数据的末尾位置。选项可变长度常见的有MSS最大报文段长度、窗口扩大因子、时间戳等。标志位的含义必须记牢标志位含义使用场景URG紧急指针有效紧急数据ACK确认号有效连接建立后一直置1PSH接收方应尽快交付交互式应用RST重置连接异常断开SYN同步序号三次握手前两步FIN发送方数据发送完毕四次挥手4.2 三次握手为什么是三次而不是两次三次握手的过程大家都背过SYN → SYNACK → ACK。但考试真正拉分的是“为什么需要三次”这个问法。核心原因防止已失效的连接请求突然到达服务器导致服务器建立无效连接。设想一个场景客户端发送了一个SYN但这个SYN在网络中滞留了很久。客户端超时后重发了一个SYN完成了连接并正常关闭。此时那个滞留的SYN突然到达服务器如果是两次握手服务器收到SYN后直接进入连接状态就会白白等待一个永远不会发数据的客户端浪费资源。三次握手的话服务器发出SYNACK后收不到客户端的ACK就不会真正建立连接。三次握手的另一个作用是交换初始序号。双方都需要告诉对方自己的起始序号并确认对方的起始序号这需要至少三次交互才能完成。具体过程客户端发送SYN1seqx进入SYN_SENT状态。服务器收到后发送SYN1ACK1seqyackx1进入SYN_RCVD状态。客户端收到后发送ACK1seqx1acky1进入ESTABLISHED状态。服务器收到后也进入ESTABLISHED状态。注意第三次握手时客户端可以携带数据但前两次不能。这是一个常考的细节。4.3 四次挥手为什么比握手多一次四次挥手的过程FIN → ACK → FIN → ACK。为什么多一次因为TCP是全双工的每个方向需要单独关闭。详细过程客户端发送FIN1sequ进入FIN_WAIT_1状态表示“我没有数据要发了”。服务器收到后发送ACK1seqvacku1进入CLOSE_WAIT状态。此时客户端到服务器的方向关闭但服务器到客户端的方向还开着。服务器把剩余数据发完后发送FIN1ACK1seqwacku1进入LAST_ACK状态。客户端收到后发送ACK1sequ1ackw1进入TIME_WAIT状态。等待2MSL后关闭。TIME_WAIT状态等待2MSL的原因有两个一是确保最后一个ACK能到达服务器如果丢了服务器会重发FIN客户端还能响应二是让本次连接的所有报文在网络中消失避免影响下一次连接。4.4 可靠传输机制序号、确认、重传TCP的可靠传输靠三个机制配合序号每个字节都有序号接收方可以检测丢失和重复。确认接收方收到数据后发送ACK告诉发送方下一个期望的字节序号。重传发送方超时未收到ACK就重传。超时时间的计算是重点。TCP采用自适应算法先测量往返时间RTT的加权平均值RTTs。再计算RTT偏差的加权平均值RTTd。超时重传时间RTO RTTs 4 × RTTd。这个公式在计算题里出现过记住系数4。快速重传是另一个重要机制如果发送方连续收到3个重复ACK就立即重传不用等超时。这大大加快了丢包恢复速度。5. 流量控制与拥塞控制两个容易混淆的概念5.1 流量控制别把接收方撑爆流量控制解决的是发送方发得太快接收方来不及处理的问题。机制很简单接收方在ACK中携带窗口字段告诉发送方自己还能接收多少字节。发送方根据这个窗口调整发送速率。窗口为0时发送方停止发送但会定期发送窗口探测报文询问接收方窗口是否恢复。这个探测报文只含1字节数据防止死锁。5.2 拥塞控制别把网络撑爆拥塞控制解决的是发送方发得太快网络中间设备处理不过来的问题。注意区别流量控制关心接收方拥塞控制关心网络。拥塞控制有四个核心算法慢开始拥塞窗口cwnd从1开始每收到一个ACK就翻倍指数增长。直到达到慢开始门限ssthresh。拥塞避免cwnd超过ssthresh后每经过一个往返时间只加1线性增长避免增长过快导致拥塞。快重传收到3个重复ACK立即重传丢失的报文不等超时。快恢复快重传后将ssthresh设为当前cwnd的一半cwnd设为新的ssthresh然后进入拥塞避免阶段而不是回到慢开始。5.3 拥塞窗口变化的计算题套路这是期末计算题的高频题型。给一个初始ssthresh和cwnd描述一系列事件超时、收到重复ACK等让你画出cwnd随时间变化的曲线或计算某个时刻的cwnd值。解题要点慢开始阶段cwnd按1、2、4、8、16指数增长。达到ssthresh后进入拥塞避免按1线性增长。超时ssthresh设为当前cwnd的一半cwnd重置为1重新慢开始。3个重复ACKssthresh设为当前cwnd的一半cwnd设为新的ssthresh进入拥塞避免快恢复。注意超时和快重传的处理方式不同。超时更严重cwnd直接回到1快重传相对温和cwnd只减半。这个区别是考试的重点。举个例子初始cwnd1ssthresh16。经过慢开始cwnd依次为1、2、4、8、16。到达16时等于ssthresh进入拥塞避免cwnd变为17、18、19……假设在cwnd20时发生超时则ssthresh变为10cwnd重置为1重新慢开始1、2、4、8、10到达新的ssthresh然后拥塞避免11、12……如果是在cwnd20时收到3个重复ACK则ssthresh变为10cwnd变为10直接进入拥塞避免11、12……6. 期末冲刺高频考点与避坑指南6.1 简答题答题模板简答题最怕答不全。我整理了几个高频简答题的答题要点“简述TCP三次握手过程”分三步写每步写清楚标志位、序号、状态变化。最后补一句“三次握手的目的是防止失效连接请求突然到达服务器”。“简述TCP四次挥手过程”分四步写每步写清楚标志位、序号、状态变化。最后补一句“TIME_WAIT等待2MSL的原因”。“流量控制与拥塞控制的区别”从目的、机制、作用范围三个角度对比。流量控制是端到端的通过接收窗口实现拥塞控制是全局的通过拥塞窗口实现。“TCP和UDP的区别”从连接性、可靠性、首部大小、传输方式、适用场景五个角度对比用表格形式答最清晰。6.2 选择题常见陷阱端口号范围混淆熟知端口是0-1023不是0-255。序号单位混淆TCP序号是字节序号不是报文序号。标志位混淆SYN用于建立连接FIN用于释放连接RST用于重置。窗口字段混淆接收窗口用于流量控制拥塞窗口用于拥塞控制。协议选择混淆DNS查询用UDP区域传送用TCP。6.3 计算题速查表计算类型关键公式注意事项超时重传时间RTO RTTs 4×RTTd系数是4不是2慢开始增长cwnd翻倍每收到一个ACK翻倍拥塞避免增长cwnd1每经过一个RTT加1超时后处理ssthreshcwnd/2cwnd1重新慢开始快重传后处理ssthreshcwnd/2cwndssthresh进入拥塞避免信道利用率发送时间/(发送时间RTT)注意单位统一6.4 我踩过的坑和给你的建议第一个坑把“传输层提供端到端通信”和“网络层提供点到点通信”记反了。记住“端”是进程“点”是主机就不会混。第二个坑三次握手和四次挥手的序号变化搞不清楚。建议自己画一遍时序图标上seq和ack的具体数值画两遍就记住了。第三个坑拥塞控制的慢开始和拥塞避免的切换点搞错。记住ssthresh是门限cwnd小于它用慢开始大于等于它用拥塞避免。第四个坑TIME_WAIT的2MSL记成2倍RTT。MSL是报文最大生存时间不是往返时间虽然数值上可能接近但概念不同。复习建议先把TCP首部字段和标志位背熟这是所有题目的基础。然后自己动手画三次握手和四次挥手的时序图标上状态变化。最后集中练5到8道拥塞控制的计算题把慢开始、拥塞避免、快重传、快恢复四种情况的处理方式练到条件反射。考试的时候简答题先写过程再写原因计算题先写公式再代入数值选择题拿不准的先排除明显错误的选项。传输层这章逻辑性很强理解了就一通百通死记硬背反而容易混。