TCP/IP学习笔记(4)
2010-04-03 20:34:36 来源:WEB开发网核心提示:一、UDP协议UDP 是一个简单的面向数据报的运输层协议,进程的每个输出操作都产生一个UDP数据报,TCP/IP学习笔记(4),并组装成一份待发送的IP数据报,UDP不提供可靠性,如果有错误,该报就被丢弃,UDP封装格式: IP首部(20) UDP首部
一、UDP协议
UDP 是一个简单的面向数据报的运输层协议,进程的每个输出操作都产生一个UDP数据报,并组装成一份待发送的IP数据报。UDP不提供可靠性。
UDP封装格式:
IP首部(20) | UDP首部(8) | UDP数据 |
1、UDP首部:
16位源端口号 | 16位目的端口号 |
16位UDP长度 | 16位UDP检验和 |
数据(如果有) |
端口号表示发送和接收的进程。
UDP长度字段指的是UDP首部和UDP数据的字节长度,该字段的最小值是8,表示没有数据。该长度不包括IP首部长度。
UDP检验和包括UDP首部和UDP数据的检验和。由于UDP数据报的长度可以为奇数字节数,因此计算时在最后增加填充字节0,这只是为了检验和的计算。
2、UDP检验和
UDP和TCP首部都包含一个12字节的伪首部,包含了IP首部和自身的一些字段,主要是为了计算检验和而设置的。伪首部是不占实际空间的。伪首部包含IP首部的一些字段,目的是让UDP两次检查数据是否已经到达目的地,以及IP层是否正确地传输了数据。
UDP伪首部格式如下:
32位源IP地址 | ||
32位目的IP地址 | ||
0 | 8位协议(17) | 16位UDP长度 |
16位源端口 | 16位目的端口 | |
16位UDP长度 | 16位UDP检验和 | |
数据(如果有) |
前12个字节就是UDP伪首部。
注意:UDP数据报的长度在检验和计算过程中出现两次。如果检验和的计算结果为0,则存入的值为全1(65535),如果传送的检验和是0,则说明发送端没有计算检验和。如果有错误,该报就被丢弃,不产生任何差错报文。
更多精彩
赞助商链接