IP协议: 报文头的前 20 个字节是固定的,后面的可变,其报文头格式如下:
版本:占 4 位,指 IP 协议的版本目前的 IP 协议版本号为 4 (即 IPv4)
首部长度:占 4 位,可表示的最大数值是 15 个单位(0000~1111,一个单位为 4 字节)因此 IP 的首部长度的最大值是 60 字节
区分服务:,占 8 位,用来获得更好的服务,在旧标准中叫做服务类型,但实际上一直未被使用过.1998年这个字段改名为区分服务.只有在使用区分服务(DiffServ)时,这个字段才起作用.一般的情况下都不使用这个字段
总长度:占 16 位,指首部和数据之和的长度,单位为字节,因此数据报的最大长度为 65535 字节.总长度必须不超过最大传送单元 MTU,以太网的MTU值是1500 字节
标识:占 16 位,它是一个计数器,用来产生数据报的标识
标志(flag):占 3 位,目前只有前两位有意义
MF标志字段的最低位是 MF (More Fragment)MF=1 表示后面“还有分片” 。 MF=0 表示最后一个分片
DF标志字段中间的一位是 DF (Don't Fragment)只有当 DF=0 时才允许分片
片偏移:占 12 位,指较长的分组在分片后某片在原分组中的相对位置.片偏移以 8 个字节为偏移单位
生存时间:占 8 位,记为 TTL (Time To Live) 数据报在网络中可通过的路由器数的最大值,TTL 字段是由发送端初始设置一个 8 bit 字段.推荐的初始值由分配数字 RFC 指定,当前值为 64.发送ICMP 回显应答时经常把 TTL 设为最大值 255
协议:占 8 位,指出此数据报携带的数据使用何种协议,以便目的主机的 IP 层将数据部分上交给哪个处理过程, 1 表示为 ICMP 协议, 2 表示为 IGMP 协议, 6 表示为 TCP 协议, 17 表示为UDP 协议
首部检验和:占 16 位,只检验数据报的首部不检验数据部分.这里不采用 CRC 检验码而采用简单的计算方法
源地址和目的地址:都各占 4 字节,分别记录源地址和目的地址
UDP协议定义及运用:UDP 协议包只是 IP 包中的一种,UDP 是 User Datagram Protocol(用户数据报协议)的英文缩写。 UDP 只提供一种基本的、低延迟的被称为数据报的通讯。所谓数据报,就是一种自带寻址信息,从发送端走到接收端的数据包。 UDP 协议经常用于图像传输、网络监控数据交换等数据传输速度要求比较高的场合。
UDP组成:数据报首( 源端口号、目标端口号、数据报长度、校验值)+数据,除数据外每个部分各占两个字节,一字节八位。
UDP 协议使用端口号为不同的应用保留其各自的数据传输通道。 数据发送一方将 UDP 数据报通过源端口发送出去,而数据接收一方则通过目标端口接收数据。从理论上说,包含报头在内的数据报的最大长度为 65535 字节。不过,一些实际应用往往会限制数据报的大小。数据报的长度是指包括报头和数据部分在内的总字节数。因为报头的长度是固定的(共8字节),所以数据长度可测。UDP 协议使用报头中的校验值来保证数据的安全,校验值首先在数据发送方通过特殊的算法计算得出,在传递到接收方之后,还需要再重新计算。虽然 UDP 提供有错误检测,但检测到错误时,错误校正,只是简单地把损坏的消息段扔掉,或者给应用程序提供警告信息。
以太网传送IPv4报文,其最大MUT为1500字节,而IP报头占20字节,UDP报头占8字节,所以以太网使用UDP协议时,一帧数据长度最好不要超过1472字节。若超过了,则会分片传送,如数据出错,那问题可能就多了,而且重组也麻烦。