TCP、UDP、IP、RTP头长度

各种协议的数据包头长度如下:

  1. UDP 头(8 字节)

    • 源端口(2 字节)
    • 目标端口(2 字节)
    • UDP 数据包长度(2 字节)
    • 校验和(2 字节)
  2. RTP 头(12 字节或者24字节)

    • 版本号(2位)
    • 填充位(1位)
    • 扩展位(1位)
    • CSRC计数器(4位)
    • 标记位(1位)
    • 负载类型(7位)
    • 序列号(16位)
    • 时间戳(32位)
    • SSRC(32位)
    • CSRC列表(如果有,每个元素占32位)
  3. TCP头(20/40/60/80字节)

    • 源端口(2 字节)
    • 目标端口(2 字节)
    • 序列号(4 字节)
    • 确认号(4 字节)
    • 数据偏移和控制标志(4 字节)
    • 窗口大小(2 字节)
    • 校验和(2 字节)
    • 紧急指针(2 字节)(选项字段有时候不存在)
  4. IP 头(20 字节或 40 字节 或者 60 字节)

    • 版本号和首部长度(1 字节)
    • 服务类型(1 字节)
    • 总长度(2 字节)
    • 标识符(2 字节)
    • 标志和片位移(2 字节)
    • 生存时间(1 字节)
    • 协议类型(1 字节)
    • 首部校验和(2 字节)
    • 源 IP 地址(4 字节)
    • 目的 IP 地址(4 字节)
    • 选项信息(可选,每个选项至少有1字节

RTP 头在基本格式下是12个字节,但如果启用了RTP头部扩展,则RTP头的长度会增加为最多24个字节。在RTP头部扩展中,包含了一个扩展头和多个扩展字段,每个扩展字段占据4个字节。因此,启用RTP头部扩展时,RTP头的长度将增加12个字节(扩展头占用4个字节,至少需要一个扩展字段,占用4个字节)。因此,RTP头的长度可以是12或24个字节,具体取决于是否使用了RTP头部扩展。

TCP头在基本格式下是20个字节,但如果TCP头部选项被使用了,那么TCP头的长度将增加到40个字节。TCP头部选项可以用于传输可变长度的选项信息,例如MSS(Maximum Segment Size)和SACK(Selective Acknowledgement)等。当TCP头部选项被使用时,每个选项占用最少4个字节,包括2个字节的选项类型字段和2个字节的选项长度字段。因此,TCP头的长度将增加20个字节,从20个字节变为40个字节。因此,TCP头的长度可以是20或40个字节,具体取决于是否使用了TCP头部选项。

IP头在基本格式下是20个字节,但是如果启用了IP头部选项,则IP头的长度将增加到最多60个字节(每个选项占用最少1个字节,而选项长度字段占用1个字节,因此一个选项至少需要2个字节)。当IP头部选项被使用时,每个选项占据的长度可以是4的倍数。因此,如果选项长度是39个字节或以下,IP头的长度为20字节;如果选项长度是40个字节或更多,那么IP头的长度将增加到40或者更多字节。因此,IP头的长度可以是20、40或更多字节,取决于是否启用了IP头部选项以及选项的长度。

猜你喜欢

转载自blog.csdn.net/huapeng_guo/article/details/130965828
今日推荐