计算机网站之TCP报文结构

 报文又叫做segment,是传输层的传输单位。

计算机网站之TCP报文结构_第1张图片

 总体上 报文可分为 首部数据部分

而大部分信息存储在首部,这也是我们要着重关注的部分

计算机网站之TCP报文结构_第2张图片

 数据传输的总体过程是,将数据分割成几段,然后在这几段里面分别加上首部,然后传输到对方。对方接收到后,将首部拿掉,然后拼接起来,形成源数据,举个栗子:

例如一个 100kb 的 HTML 文档需要传送到另外一台计算机,并不会整个文档直接传送过去,可能会切割成几个部分,比如四个分别为 25kb 的数据段。
而每个数据段再加上一个 TCP 首部,就组成了 TCP 报文。
一共四个 TCP 报文,发送到另外一个端。
另外一端收到数据包,然后再剔除 TCP 首部,组装起来。
等到四个数据包都收到了,就能还原出来一个完整的 HTML 文档了


那么这里就存在一个问题,我们是怎么加首部的呢,首部里面蕴含了什么重要的信息呢,不同数据段的首部信息是一样的吗?是否存在某些规律?

要解决这些疑问,我们首先看sequence number

sequence number标识的是本报文传输的数据的第一个字节的序号,例如此报文传输的数据大小为1024,对应的序号为0-1023,那么sequence number就是0,如果下一个报文对应的序号是1024-2047,那么sequence number就是1024

Acknowledgemt Number:表示期望收到对方下一个报文段的序号值,用于发送确认

比如对方给你传输了0-1023序号的报文,那么你发送过去确认报文的number就应该是1024,对方收到后就知道哦,原来0-1023的数据你都正常接收了,那这次我就从1024序号的报文开始发送。

标志位 TCP Flags

标志位,一共有 6 个,分别占 1 位,共 6 位 。
每一位的值只有 0 和 1,分别表达不同意思。

我们一般见得最多的就是 ACK SYN FIN确认号

ACK:当ACK=1的时候 ,确认号有效

SYN: 当 SYN=1的时候,表面这是一个请求连接报文段

FIN:当 FIN = 1 时,表示此报文段的发送方的数据已经发送完毕,并要求释放 TCP 连接。

你可能感兴趣的:(tcp/ip,网络,服务器)