UDP 报文与检验和
约 52 分钟
UDP 报文与检验和
本课目标
能从UDP/TCP报文和双向时间线推出端口分用、序号确认、连接状态、可发送窗口与拥塞阶段,并用代码复核字节级结果。
核心机制
UDP无连接、尽力而为、保留应用报文边界,首部固定8字节,字段为源端口、目的端口、长度和检验和。长度含首部与数据。检验和对伪首部、UDP首部和数据做16位反码和,奇数字节补0参与计算;IPv4中UDP检验和可选,IPv6中通常必需。
报文与时序推演
数据20字节时UDP长度28。16位字0x1234和0x5678求和0x68ac,反码检验和0x9753;接收端把所有字含检验和相加应得全1。
统一表格记录“方向、标志、seq、数据长度、ack、rwnd、cwnd、在途字节、定时器和连接状态”。两个方向序号空间独立;收到报文后先校验和与序号,再决定交付、累计确认和窗口变化。所有ACK都解释成期望下一个字节。
可运行模型
words=[0x1234,0x5678];s=sum(words);s=(s&0xffff)+(s>>16);checksum=(~s)&0xffff;print(8+20,hex(checksum),hex((s+checksum)&0xffff))
先手算再运行。修改负载长度、初始序号、窗口、丢包事件或阈值,重画报文和状态。
边界与错因
UDP无连接但保留报文边界;TCP是字节流且SYN/FIN占序号。累计ACK不等于选择确认;rwnd是接收能力,cwnd是网络拥塞估计,实际发送受二者最小值约束。TIME_WAIT属于主动关闭一侧的典型状态,不能因应用close就认为所有状态立即消失。
迁移练习
将第三次握手ACK丢失、数据中间一段丢失、接收窗口归零、超时与三次重复ACK分别加入原时序,逐步更新定时器、重传范围、rwnd/cwnd和连接状态。
课内验收
完成下方两道在线题,并提交完整双向报文表。计算题保留字节序号与窗口单位;选择题指出错误项混淆了哪个方向、状态或控制目标。
Practice
本课练习
先独立作答再提交;编程题会在隔离沙箱中真实编译、运行并对拍。