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

什么是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实验指南——以太网帧和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.rhkb.cn/news/33657.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Vlog 片头制作

打开剪映,新建草稿,导入黑色背景。 拉长时间轴,背景时常调整为4.2秒。 添加文本,输入 5 个“|”,每个中间 2 个空格,如下| | | | |,然后手动放大文本,让中间显示出四个间隔。 继续添…

【Nacos】服务发布之优雅预热上线方案

目录 一、背景二、注册时机2.1、注册机制2.2、分析源码找到注册时机 三、注册前心跳健康检测3.1、方案实施3.2、源码分析3.3、优化代码 四、流量权重配置五、总结5.1、整体完整流程:5.2、流程图:5.1、优化方案完整代码: 一、背景 有些面向广…

VXLAN 组播 RP

一、Anycast RP 在每个 VTEP 上,每个多播组都会建立一个源树 (S,G),并且在双活 Leaf 设备上到 RP 地址是 ECMP 路径。 在 PIM ASM 模式下,(S,G) 组在 VTEP 端创建。由于每个 VTEP 都能够为特定的多播组发送和接收多播流量,因此每…

【第七节】windows sdk编程:Windows 中的对话框

目录 引言 一、对话框简介 1.1 对话框的创建 1.2 基本函数 1.3 模态对话框与非模态对话框 1.4 对话框与窗口的区别 二、模态对话框编程方法 2.1 模态对话框编程 2.2 消息框 三、非模态对话框编程方法 四、综合代码案例 引言 在Windows应用程序开发中,对话…

安装并配置终端字体

1. 简介 在使用 Oh My Zsh Powerlevel10k 时,正确的字体配置至关重要。Powerlevel10k 依赖 Nerd Fonts 扩展字体,以正确显示 Git 状态、分支、时间、图标等信息。 如果没有正确配置字体,你可能会看到 乱码、问号(?&#xff09…

LeetCode - #227 基于 Swift 实现基本计算器

摘要 在这篇文章中,我们将实现一个基于 Swift 语言的基本计算器。该计算器能够解析和计算包含 、-、* 和 / 的数学表达式,并且遵循运算符的优先级规则。整数除法仅保留整数部分,不能使用 eval() 这样的内置解析方法。 描述 给你一个字符串表…

智慧应急消防解决方案(35页PPT)(文末有下载方式)

详细资料请看本解读文章的最后内容。在当今社会,消防安全至关重要,关乎人民生命财产安全和社会稳定。随着科技的飞速发展,智慧应急消防解决方案应运而生,为消防工作带来了新的变革和机遇。接下来,让我们深入探讨这份智…

网络安全反渗透 网络安全攻防渗透

网络渗透防范主要从两个方面来进行防范,一方面是从思想意识上进行防范,另一方面就是从技术方面来进行防范。 1.从思想意识上防范渗透 网络攻击与网络安全防御是正反两个方面,纵观容易出现网络安全事故或者事件的公司和个人,在这些…

2025-03-15 学习记录--C/C++-PTA 练习3-4 统计字符

合抱之木,生于毫末;九层之台,起于累土;千里之行,始于足下。💪🏻 一、题目描述 ⭐️ 练习3-4 统计字符 本题要求编写程序,输入10个字符,统计其中英文字母、空格或回车、…

11a-PPDU

## 前导码和信令 OFDM 物理层(PHY)的 PPDU(物理层协议数据单元)格式包含以下实体信息: - **PPDU 组成**:由 OFDM PHY preamble(前导码,12 个符号)、PHY header&#xff…

TF-IDF:文本挖掘中的关键词提取利器

引言 在自然语言处理(NLP)和文本挖掘中,TF-IDF是一种常用的技术,用于评估一个词在文档中的重要性。它不仅在信息检索领域广泛应用,还在文本分类、关键词提取等任务中发挥着重要作用。本文将详细介绍TF-IDF的原理…

[新能源]新能源汽车快充与慢充说明

接口示意图 慢充接口为交流充电口(七孔),快充接口为直流充电口(九孔)。 引脚说明 上图给的是充电口的引脚图,充电枪的为镜像的。 慢充接口引脚说明 快充接口引脚说明 充电流程 慢充示意图 慢充&…

docker3-容器与镜像命令

前言 容器命令[部分] docker run –name“nginx-lb” 这个就是为容器起一个名称 以前是随机起的名称 docker run -d --name mynginx1 nginx:1.24.0 docker ps 这样就可以看到我们起的名字了 docker stop mynginx1 这个就可以停掉指定名字的容器了,但不是删除…

vue/react/vite前端项目打包的时候加上时间最简单版本,防止后端扯皮

如果你是vite项目,直接写一个vite的插件,通过这个插件可以动态注入环境变量,然后当打包的时候,自动注入这个时间到环境变量中,然后在项目中App.vue中或者Main.tsx中打印出来,这就知道是什么时候编译的项目了…

Linux中Gdb调试工具常用指令大全

1.gdb的安装 如果你是root用户直接用指令 :yum install gdb ;如果你是普通用户用指令:sudo yum install gdb; 2.gdb调试前可以对你的makefile文件进行编写: 下面展示为11.c文件编写的makefile文件: code…

go 安装swagger

1、依赖安装: # 安装 swag 命令行工具 go install github.com/swaggo/swag/cmd/swaglatest# 安装 gin-swagger 和 swagger 文件的依赖 go get -u github.com/swaggo/gin-swagger go get -u github.com/swaggo/files 2、测试 cmd中输入: swag -v 如果…

数据库---sqlite3

数据库: 数据库文件与普通文件区别: 1.普通文件对数据管理(增删改查)效率低 2.数据库对数据管理效率高,使用方便 常用数据库: 1.关系型数据库: 将复杂的数据结构简化为二维表格形式 大型:Oracle、DB2 中型:MySql、SQLServer …

go的gmp

参考链接:https://www.bilibili.com/video/BV19r4y1w7Nx Golang的GMP调度模型(协程调度器)是其并发编程的核心。GMP代表Goroutine、Machine和Processor三个关键组成部分。Goroutine是Go语言中的轻量级线程,Machine是操作系统的线程,Processor…

标贝自动化数据标注平台推动AI数据训练革新

随着人工智能(AI)技术的快速发展,数据标注作为AI模型训练的关键环节,其重要性日益凸显。传统的人工数据标注方式虽然能够提供高质量的标注数据,但存在效率低、成本高、一致性差等问题。为了解决这些问题,标…

从传统制动到线控制动:技术变革与挑战

随着汽车产业从传统机械时代迈向电动化、智能化时代,车辆底盘的“线控化”已经成为重要发展趋势。其中,线控制动系统(Brake-by-Wire,简称BBW)是该趋势的核心一环。传统的制动系统主要依赖真空助力或液压传动&#xff0…