传输控制协议(TCP)和用户数据报协议(UDP)是与网际协议(IP)一起使用的两个标准传输层。
TDP和UDP都使用标题作为封装消息数据的一部分,以通过网络连接进行传输。 TCP报头和UDP报头每个包含一组称为由协议技术规范定义的字段的参数。
TCP报头格式
每个TCP报头有十个必需的字段,总共20 个字节 (160 位 )。 它们还可以选择包含最多40个字节的额外数据部分。
这是TCP标头的布局:
- 源TCP端口号(2字节)
- 目标TCP端口号(2个字节)
- 序号(4字节)
- 确认号码(4字节)
- TCP数据偏移量(4位)
- 保留数据(3位)
- 控制标志(最多9位)
- 窗口大小(2个字节)
- TCP 校验和 (2个字节)
- 紧急指针(2字节)
- TCP可选数据(0-40字节)
TCP以上面列出的顺序将报头字段插入到消息流中。
- 源和目标TCP端口号是发送和接收设备的通信端点。
- 消息发送者使用序号来标记一组消息的排序。 发送方和接收方都使用确认号码字段来传送最近收到或预计要发送的消息的序列号。
- 数据偏移字段以四个字节的倍数存储TCP标头的总大小。 不使用可选TCP字段的标头的数据偏移量为5(表示20个字节),而使用最大大小的可选字段的标头的数据偏移量为15(表示60个字节)。
- TCP报头中的保留数据的值始终为零。 该字段用于将总标题大小对齐为四个字节的倍数(对于计算机数据处理的效率而言非常重要)。
- TCP使用一组六个标准和三个扩展控制标志 (每个标志代表开或关 )来管理特定情况下的数据流。 例如,一位标志启动TCP连接重置逻辑。 这些领域的详细操作超出了本文的范围。
- TCP发送者使用一个称为窗口大小的数字来调节发送给接收器的数据量,然后再作出回应确认。 如果窗口尺寸变得太小,网络数据传输将会不必要地慢,而如果窗口尺寸变得太大,则网络链路可能变得饱和(对于任何其他应用不可用),或者接收器可能无法快速处理传入数据足够(也导致性能下降)。 协议中内置的窗口算法动态计算大小值,并使用TCP报头的这个字段来协调发送者和接收者之间的变化。
- TCP报头中的校验和值由协议发送方生成,作为一种数学技术来帮助接收方检测被破坏或篡改的消息。
- 紧急指针字段通常设置为零并被忽略,但与其中一个控制标志结合使用时,它可以用作数据偏移量,以将消息的子集标记为需要优先级处理。
- 可选TCP数据的使用超出了本文的范围,但包括对特殊确认和窗口缩放算法的支持。
UDP头格式
由于UDP在性能上明显比TCP有限,因此它的头部要小得多。 UDP头包含8个字节,分为以下四个必填字段:
- 源端口号(2个字节)
- 目的地端口号(2字节)
- 数据长度(2字节)
- UDP校验和(2个字节)
UDP按照上面列出的顺序将标题字段插入到其消息流中。
- 源和目标UDP端口号是发送和接收设备的通信端点。
- UDP中的长度字段表示包括标题和数据的每个数据报的总大小。 该字段的值从最小8字节(所需的标题大小)到65,000字节以上的大小。
- 与TCP类似,UDP 校验和允许接收者交叉检查传入数据是否有任何损坏的消息位。