我是靠谱客的博主 害羞牛排,最近开发中收集的这篇文章主要介绍计算机网站之TCP报文结构,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

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

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

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

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

例如一个 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报文结构的全部内容,希望文章能够帮你解决计算机网站之TCP报文结构所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(35)

评论列表共有 0 条评论

立即
投稿
返回
顶部