TCP/IP:UDP(1)

来源:互联网 发布:ubuntu14对应java版本 编辑:程序博客网 时间:2024/05/21 11:26

1.UDP不提供可靠性意味着:把应用程序传给IP层的数据发送出去,但是并不保证它们能够到达目的地.

2.应用程序必须关心IP数据报的长度.如果超过网络的MTU,那么就要对IP数据报进行分片.并不是只是发送端连接的第一个网络才切片,而是途径的,从源端到目的端之间的每个网络都可能进行分片(如果要分片).

3.UDP首部:(图来源于网络,是正确的)
这里写图片描述
有几点需要注意的:
(1)UDP长度是指UDP首部和UDP数据的字节长度(不包括伪首部).
(2)16位UDP长度标识值(…0000 1000)最小=8,单位是字节.就是说等于UDP首部的长度,UDP数据长度=0.
(3)UDP伪首部是用来检验UDP数据首部和UDP数据正确性的.见第4点.

4.UDP检验和覆盖UDP首部和UDP数据,区别于IP首部的检验和(只覆盖了IP首部,不检验数据).

5.UDP的检验和是可选的,TCP检验和是必须的.

6.UDP数据报长度可以是奇数个字节,但是检验和算法必须是偶数字节,所以正如上图所示,对于奇数字节长度的数据报,补0至偶数个.补0只是在计算的时候,在传送的时候是不需要这些补位的.

7.UDP和TCP都包含一个12字节长度的伪首部.伪首部包含IP首部一些信息(IP地址),目的是让UDP两次检查是否正确到达目的地.
第一次:通过伪首部IP地址验证目的主机是否正确
第二次:通过伪首部协议字段验证传输的协议是UDP不是其他误传到UDP.

8.如果发送端没有计算检验和而接收端检测到检验和由差错,UDP数据报被丢弃,不产生任何差错报文.

0 0