一篇让你掌握TCP与UDP首部格式

本文详细介绍了TCP和UDP协议的首部格式,包括源端口和目标端口、序列号、确认号、数据偏移、控制位、窗口大小、检验和、紧急指针等关键字段,揭示了TCP可靠传输背后的设计原理,同时对比了UDP的简洁首部结构。通过阅读,读者能够深入理解这两种传输层协议的工作机制。
摘要由CSDN通过智能技术生成

1.序

在TCP/IP中能够实现传输层功能的、具有代表性的协议是TCP和UDP,来一起看看TCP UDP的构造吧。

在这里插入图片描述

2.tcp协议:

在这里插入图片描述

TCP各个字段意义

2.1源端口和目的端口:

计算机上的进程要和其他进程通信是要通过计算机端口的,而一个计算机端口某个时刻只能被一个进程占用,所以通过指定源端口和目标端口(各占2个字节),就可以知道是哪两个进程需要通信。

源端口、目标端口是用16位表示的,可推算计算机的端口个数为2^16个(65535)。

2.2序列号

TCP 是面向字节流的,在一个 TCP 连接中传输的字节流中的每个字节都按照顺序编号。

序列号(占 4 个字节)表示本报文段所发送数据的第一个字节的编号。在TCP连接中所传送的字节流的每一个字节都会按顺序编号。由于序列号由32位表示,所以每2^32个字节,就会出现序列号回绕,再次从 0 开始

例如 100 kb 的 HTML 文档数据,一共 102400 (100 * 1024) 个字节,那么每一个字节就都有了编号,整个文档的编号的范围是 0 ~ 102399。
序号字段值指的是本报文段所发送的数据的第一个字节的序号。
那么 100 的 HTML 文档分割成四个等分之后,
第一个 TCP 报文段包含的是第一个 25kb 的数据,0 ~ 25599 字节, 该报文的序号的值就是:0
第二个 TCP 报文段包含的是第二个 25kb 的数据,25600 ~ 51199 字节,该报文的序号的值就是:25600

根据 8 位 = 1 字节,那么 4 个字节可以表示的数值范围:[0, 2^32],一共 2^32 (4294967296) 个序号。
序号增加到最大值的时候,下一个序号又回到了 0.
也就是说 TCP 协议可对 4GB 的数据进行编号,在一般情况下可保证当序号重复使用时,旧序号的数据早已经通过网络到达终点或者丢失了。

2.3确认号

TCP 的可靠性是建立在每一个数据报文都需要确认收到的基础之上的。也就是说,通讯的任何一方在收到对方的一个报文之后,都要发送一个相对应的确认报文(确认报文就会包含确认号)来表达确认收到。

确认号(占4个字节,32位):表示接收方期望收到发送方下一个报文段的第一个字节数据的编号。

例如,通讯的一方收到了第一个25kb的报文,该报文的序号值=0,那么就需要回复一个确认报文,其中的确认号 = 25600(0-25599,所以期望收到的是25600).

2.4数据偏移

数据偏移占0.5个字节(4位)指出TCP报文段的数据起始处距离TCP报文段的起始处有多远。这个字段实际上是指出TCP报文段的首部长度。由于首部中还有长度不确定的选项字段,因此数据偏移字段是必要的,但应注意,“数据偏移”的单位是32位字(即以4字节的字为计算单位)。
由于4位二进制数能表示的最大十进制数字是15,因此数据偏移的最大值是60字节,这也是TCP首部的最大字节(即选项长度不能超过40字节,因

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

haikuotiankongdong

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值