计算机网络(二十四)UDP及TCP首部的格式TCP首部格式
UDP首部的格式
除去数据的部分正是UDP的首部 。UDP首部由源端口号,目标端口号,包长和校验和组成 。
a.源端口号( Port)
表示发送端端口号,字段长16位 。该字段是可选项,有时可能不会设置源端口号 。没有源端口号的时候该字段的值设置为0 。可用于不需要返回的通信中 。
b.目标端口号( Port)
表示接收端端口,字段长度16位 。
c.包长度()
该字段保存了UDP首部的长度跟数据的长度之和 。单位为字节(8位字节) 。
d.校验和()
校验和是为了提供可靠的 UDP首部和数据而设计 。
附加在UDP伪首部与UDP数据报之前 。通过在最后一位增加一个 “0” 将全长增加16倍 。此时将UDP首部的校验和字段设置为"0" 。然后以16比特为单位进行1的补码和,并将所得到的1的补码和写入校验和字段 。
接收主机在收到UDP数据报以后,从IP首部获知IP地址信息构造UDP伪首部,再进行校验和计算 。
校验和字段的值是校验和字段以外剩下部分的1的补码和 。
包括校验和字段在内的所有数据之和结果为"16位全部为1"时才会被认为所收到的数据是正确的 。
UDP中也有可能不用校验和 。此时校验和字段中填入0 。由于不进行校验和计算,协议处理的开销就会降低,从而可以提高数据转发的速度 。
在互联网中比较推荐使用校验和检查 。
注:校验和计算中计算UDP伪首部的理由:
在UDP的首部中只包含它们当中的两项(源端口和目标端口),余下的3项都包含在IP首部里 。有必要验证一个通信中必要的5项识别码是否正确 。为此,在校验和的计算中就引入了伪首部的概念 。
IPv6中的IP首部没有校验和字段 。TCP或UDP通过伪首部,得以对5项数字进行校验,从而实现即使在IP首部并不可靠的情况下仍然能够提供可靠的通信传输 。
TCP首部格式
TCP中没有表示包长度和数据长度的字段 。可由IP层获知TCP的包长由TCP的包长可知数据的长度 。
1.源端口号 ( Port)
表示发送端端口号,字段长16位 。
2.目标端口号 ( Port)
表示接收端端口号,字段长度16位 。
3.序列号( )
字段长32位 。序列号(有时也叫序号) 是指发送数据的位置 。每发送一次数据,就累加一次该数据字节数的大小 。
序列号不会从0或1开始,而是在建立连接时由计算机生成的随机数作为其初始值,通过SYN包传给接收端主机 。再将每转发过去的字节数累加到初始值上表示数据的位置 。
建立连接和断开连接时发送的SYN包和FIN包虽然并不携带数据,但是也会作为一个字节增加对应的序列号 。
4.确认应答号( )
确认应答号字段长度32位 。是指下一次应该收到的数据的序列号 。实际上,它是指已收到确认应答号减一为止的数据 。
发送端收到这个确认应答以后可以认为在这个序号以前的数据都已经被正常接收 。
5.数据偏移(Data )
该字段表示TCP所传输的数据部分应该从TCP包的哪个位开始计算,当然也可以把它看作TCP首部的长度 。该字段长4位,单位为4字节 。
6.保留()
该字段主要是为了以后扩展时使用,其长度为4位 。一般设置为0, 但即使收到的包在该字段不为0,此包也不会被丢弃 。
7.控制位 ( Flag)
字段长为8位,每一位从左至右分别为CWR、 ECE、 URG、 ACK、 PSH、 RST、 SYN、FIN 。这些控制标志也叫做控制位 。
1.CWR ()
CWR标志与后面的ECE标志都用于IP首部的ECN字段。ECE标志为1时,则通知对方已将拥塞窗口缩小 。
2.ECE (ECN-Echo)
- 解密:二十四史中《晋书》是如何被编撰成书的?
- IP、TCP、UDP首部详解
- 下面是以十六进制格式存储的一个udp首部_【干货】论UDP协议
- 下面是以十六进制格式存储的一个 UDP 首部:~~~TCP连接使用1000字节的
- UDP首部解析
- TCP及UDP首部各个字段
- 四 网络编程 ———— UDP首部格式
- TCP/UDP协议首部格式
- UDP 首部格式
- 三十六解二十四厄,谁看过七元解厄系列+番外