华为hcia——Datacom实验指南——TCP传输原理和数据段格式

news/2025/3/18 9:08:41/

什么是TCP

TCP是一种可靠的端到端的传输层协议,仅应用于单波通信。

采用TCP协议作为传输方式的应用层服务,再进行数据传输前,都需要进行TCP协议的创建。

TCP报文的格式

sequence number(序列号)

占4个字节,32比特,序列号是指报文里面data数据中第一个字节的编号。

acknowlegment number(确认号)

该字段指的是,希望接受对端下一个数据段的序列号。

header length(头部长度)

这个字段以4个字节为单位来标示TCP

ACK(确认)

标志位,判断确认号字段是否有效,1标示有效。

SYN(同步)

也是一个标志位,用来向对方请求建立TCP连接,对端要是也同意建立回回复一个SYN+ACK=1的确认数据段。

FIN(最后)

也是一个标志位,用来请求对方释放TCP连接,标示没有数据要发送了。

实验配置

第一步配置环境

配置环境的流程和这个一模一样,华为hcia——Datacom>华为hcia——Datacom实验指南——以太网帧和IPV4数据包格式(一),再配置完成后,我们还需要的操作是,在桌面建立一个文件夹,里面随便放一个.html网页的文件。

启动服务。

第二步对数据进行抓包

随便选择一个地方进行抓包

第三步,访问服务器

我们之前配置的服务器ip是192.168.2.10,html服务端口是80,所以我们访问的网站是

http://192.168.2.10:80

当我们配置正确,点击获取后是这样的

分析

TCP协议分为2部分,建立服务,由3次握手组成,释放服务由4次挥手。

在我们抓获的这个流量包中,可以很明显的看到3次握手和四次挥手。

我们分别进行分析

三次握手

第一次握手

客户端向服务器发送一个SYN=1的报文。

我们重点关注几个地方

第一个是sequence number,

一个是0还有一个是6659,之所以有两个,是因为,在wireshark中,为了方便用户好判断,所以默认是0,但是实际上,这个值是下面这个6659,这个数值是随机的。

第二个是acknowledgment nubmber,

因为这是第一次握手,所以不存在需要确认的地方,默认为0

第三个是flags字段

在flags字段里面我们看到只有syn=1,可以判断出这是第一次握手。

第二次握手

还是和第一次握手关注的一样

第一个是sequence number,

一个是0还有一个是42012,之所以有两个,是因为,在wireshark中,为了方便用户好判断,所以默认是0,但是实际上,这个值是下面这个42012,这个数值是随机的。

在这里,这个seq的值也是随机的,且这个值是服务器这边随机的初始值。

第二个是acknowledgment nubmber,

这是第二次握手,所以ack的值是第一握手中seq值加一。

第三个是flags字段

在flags字段里面我们看到syn=1和ack=1

可以判断出这是第二次握手。

第三次握手

第一个是sequence number,

有两个值一个是1,一个是6660,这是在第一次握手的基础上序列号加一

第二个是acknowledgment nubmber,

它的值是1,这是在上一个报文的seq值加一的出来的

第三个是flags字段

在flags字段里面我们看到ack和seq值=1

可以判断出这是第三次握手,也是最后一次握手

说完三次握手,接下来分析一下四次挥手

四次挥手

挥手和握手有一个小区别,在客户端接受完所有数据后,会向服务器发送一个ack标签的报文,告诉服务器,我已经接受完毕了。

这里的seq和ack的值和中间发送数据相关联

第一次挥手

客户端发送一个带有FIN和ack=1的标签报文给服务器,告诉服务器我想要释放TCP协议

第一个是sequence number,

有两个值一个是159,一个是6818,和上一个ack报文的值是一模一样

第二个是acknowledgment nubmber,

它的值是308和上一个ack报文的值也是一模一样

第三个是flags字段

在flags字段里面我们看到ack和FIN的值为1

第二次挥手

服务器会回复一个ack报文,告诉客户端,我同意你的释放TCP请求

第一个是sequence number,

有两个值一个是308,一个是42320,这是在上个客户端向服务器发送释放TCP协议的ack值

第二个是acknowledgment nubmber,

这是在上个客户端向服务器发送释放TCP协议的seq+1的值为160

第三个是flags字段

在flags字段里面我们看到ack和的值为1

第三次挥手

服务器发送一个带有FIN和ack=1的标签报文给客户端,告诉服务器我想要释放TCP协议

第一个是sequence number,

有两个值一个是308,一个是42210,是上一个报文的seq+1值

第二个是acknowledgment nubmber,

它的值是160和上一个ack报文的值也是一模一样

第三个是flags字段

在flags字段里面我们看到ack和FIN的值为1

第四次挥手

客户端会回复一个ack报文,告诉服务器,我同意你的释放TCP请求

第一个是sequence number,

有两个值一个是160,一个是6819,这是在上个客户端向服务器发送释放TCP协议的ack值

第二个是acknowledgment nubmber,

这是在上个客户端向服务器发送释放TCP协议的seq+1的值为309

第三个是flags字段

在flags字段里面我们看到ack和的值为1

结束

这就是完整的TCP协议的三次握手和四次挥手的所有细节。


http://www.ppmy.cn/news/1580026.html

相关文章

鸿蒙Next开发中的坑与问题总结

文章目录 引言1. 环境搭建问题问题描述解决方案 2. 应用开发中的常见问题问题1:UI布局不兼容问题描述解决方案示例代码 问题2:分布式能力调用失败问题描述解决方案示例代码 问题3:Ability生命周期管理问题问题描述解决方案示例代码 3. 调试与…

一些docker命令

一、基础命令 查看 Docker 版本 docker --version 或 docker version:显示 Docker 客户端和服务器的版本信息。 查看 Docker 系统信息 docker info:显示 Docker 系统的详细信息,包括镜像、容器数量、存储驱动类型等。 Docker 服务管理 s…

VLLM:虚拟大型语言模型(Virtual Large Language Model)

VLLM:虚拟大型语言模型(Virtual Large Language Model) VLLM指的是一种基于云计算的大型语言模型的虚拟实现。它通常是指那些由多个服务器组成的分布式计算环境中的复杂机器学习模型,这些模型能够处理和理解大量的文本数据。VLLM的…

光伏储能:未来能源的黄金搭档

光伏储能正在重塑全球能源格局。随着技术进步和成本下降,这一组合已成为清洁能源领域最具潜力的解决方案。 光伏发电受天气影响大,发电不稳定。储能系统的加入完美解决了这一难题。白天储存的太阳能,可以在夜晚或阴天时稳定输出,…

Ubuntu22 LLM GPU本地开发环境搭建:4090显卡/cuda/pytorch

0. 4090 显卡开箱与安装 可参考文章: https://www.toutiao.com/item/7477816734344217100/ 扩展内存注意事项 机箱过来只有一条32G内存,扩展到4条32G ddr5 内存条,开机可能要等约2分钟!!!处于黑屏状态&…

【Redis】缓存穿透、缓存击穿、缓存雪崩

在分布式系统和高并发场景中,缓存机制是提高系统性能的重要手段。 然而,缓存在某些情况下会出现三种典型的异常现象:缓存穿透、缓存击穿和缓存雪崩。 1. 缓存穿透 现象 查询的数据在缓存和数据库中都不存在,每次请求都直接打到数…

【eNSP实战】(续)一个AC多个VAP的实现—将隧道转发改成直接转发

在 一个AC多个VAP的实现—CAPWAP隧道转发 此篇文章配置的基础上,将隧道转发改成直接转发 一、改成直接转发需要改动的配置 (一)将连接AP的接口改成trunk口,并允许vlan100、101、102通过 [AC1]interface GigabitEthernet 0/0/8 …

《灵珠觉醒:从零到算法金仙的C++修炼》卷三·天劫试炼(64)太极图化汉明距 - 汉明距离(位运算技巧)

《灵珠觉醒:从零到算法金仙的C++修炼》卷三天劫试炼(64)太极图化汉明距 - 汉明距离(位运算技巧) 哪吒在数据修仙界中继续他的修炼之旅。这一次,他来到了一片神秘的太极图谷,谷中有一幅巨大的太极图,图中蕴含着汉明距离的奥秘。谷口有一块巨大的石碑,上面刻着一行文字…