UDP是一个简单的面向‘数据报’的传输层协议
TCP/IP协议之UDP笔记
原创
©著作权归作者所有:来自51CTO博客作者自由的海洋的原创作品,请联系作者获取转载授权,否则将追究法律责任
UDP数据报封装
| IP首部 | UDP首部 | UDP数据 |
-- UDP数据报 --
-- IP数据报 --
UDP首部为8个字节
UDP数据长度为0~65507个字节,是65535-20-8,8字节为UDP首部,20字节为IP首部
UDP不提供可靠性:它把应用程序传给IP层的数据发送出去,但不保证它们能到达目的地
UDP不进行差错检验,必须由应用层的应用程序实现可靠性机制和差错控制,以保证端到端数据传输的正确性
UDP检验和覆盖UDP首部和UDP数据,UDP的检验和是可选的,而TCP得检验和是必需的
UDP数据报的长度可以是奇数,但检验和算法是把若干个16bit字相加,解决方法就是在最后增加填充字节0
UDP数据报和TCP段都包含一个12字节厂的伪首部
UDP检验和是一个端到端的检验和
TCP有超时和重传机制,UDP没有
加入UDP伪首部是为了UDP检验和
为何需要UDP伪首部,是进一步确保UDP报文送到正确主机的正确端口上
UDP检验和各字段
| 32位源IP地址 | ~~
| 32位目的IP地址 | UDP伪首部
| 0 | 8位协议 | 16位UDP长度 |
| 16位源端口号 | 16位目的端口号 | ~~
| 16位UDP长度 | 16位UDP检验和 | UDP首部
| 数据…… | ~~
在伪首部中,目的IP、目的端口号、源端口 都会有UDP程序告知,未读源IP先不知
由于发送数据从哪个IP出去是由IP协议来选路,故先由UDP程序把数据封装成UDP发送给IP层,然后IP层选路,得到源IP,发回UDP层。
面向连接和无连接
面向连接 无连接
通信过程 建立连接---交付分组 交付分组
---终止连接
路由选择 仅在建立连接时选路 每个分组独立选路
传输路径 相同 可以不同
IP分片
分片操作仅由路由器执行:转发分组时
确实需要时才进行分片:提高传输效率
每个分片都要包含IP首部:无连接通信
数据报可被多次分片
是先查询数据向本地哪个接口发送,并获取MTU,根据MTU进行分片
当一份IP数据分片后,只有到达目的地后才重新组装,因每一站的MTU不同,所根据每一站MTU进行分片,到达最终目的地,在此过程中会有多长分片。
为何要避免分片,因为当一片数据丢失时需要全部数据重传,而无法只重传丢失的一片,
分片的是中间路由,而起始端无法知道中间路由是如何分片的
任何运输层首部只出现在第一片数据
IP数据报是指IP层端到端的传输单元
分组是指在IP层和链路层之间传送的数据单元
问题:当IP分片后传送到下一站,是否立即全部组装,再按下一站MTU来分片传送;还是传送到下一站后每片分别按下一站MTU来分片传送
每片分组传送到下一站,下一站的的目的可能不会相同,每片分组可能会选择不同路径传送,所以在下一站可能不会有全部分片,当到达下一站后,会根据下一站的MTU来进行是否再分片,当全部到达最终目的地址后再全部组装。
以上是我个人学习的笔记,其中难免有我理解上的错误导致某些说法错误,如果正在学习中的切不可全按我的理解,一定要按书或者请教高手,如果哪位高手不巧看到我写的,发现其中有错误,鄙人恳请指出,不甚感谢!
下一篇:我的友情链接
提问和评论都可以,用心的回复会被更多人看到
评论
发布评论
相关文章
-
linux之TCP协议
linux下TCP协议的认识,包括确认应答,超时重传,流量控制,滑动窗口,拥塞控制,三次握手四次挥手等。
TCP 面向字节流 可靠性 有连接 滑动窗口 -
TCP/IP协议族之运输层协议 ( UDP, TCP)数据 重传 字段 校验和 接收端
-
TCP/IP协议之ARP之补充笔记
ARP
ARP 解析过程 -
详解TCP/IP协议以及UDP
TCP/IP 协议和 UDP 是两种广泛应用于互联网上的传输层协议,它们都是 Internet Protocol Suite(也称 T
tcp/ip udp 网络协议 TCP UDP -
TCP/IP 协议笔记
IP地址网络上每一个节点都必须有一个独立的 IP 地址,通常使用的 IP 地址是一
TCP IP 端口号 数据 服务器