我的编程空间,编程开发者的网络收藏夹
学习永远不晚

Wireshark抓包分析TCP协议:三次握手和四次挥手

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

Wireshark抓包分析TCP协议:三次握手和四次挥手

面试中我们经常会被问到TCP协议的三次握手和四次挥手的过程,为什么总喜欢问这个问题呢?

其实我们平时使用的很多协议都是应用层协议,比如HTTP协议,https协议,DNS协议,FTP协议等;而应用层协议都是要基于传输层的两个协议之上的,也就是TCP协议和UDP协议。我们在使用应用层协议遇到一些问题需要去分析定位的时候,会需要涉及到底层协议的连接问题上。所以,作为测试掌握这两个底层协议的工作原理是非常有必要的!

UDP协议作为一个不可靠的传输层协议,工作过程相对比较简单!所以我们就重点来大家讲一下TCP协议。

Wireshark抓包分析TCP协议 为了更好的学习和理解TCP协议的连接和断开连接的过程,我们来引入一个非常适合用来学习网络协议的抓包工具Wireshark。这个抓包工具可以详细看到每一层网络报文的详细信息。

TCP协议的三次握手过程 TCP建立连接需要经历三次握手,具体过程如下:


那么,这个过程我们配合抓包工具来看看具体的案例;如下图是访问某个HTTP请求用wireshark抓到的报文,前面的三个报文就是TCP的三次握手过程:SYN包,SYN ACK包,ACK报文。


展开看详情:

第一次握手的报文如下:这是客户端发起给服务器的报文,用于请求建立连接。


可以看到TCP报文里有一个Flags位:

当Syn位标记为1的时候,表示这个报文是一个请求链接的报文;

自己的序号(sequence number):0

第二次握手的报文如下:这是服务器回复给客户端的报文,用于确认并同意连接请求。

可以看到TCP报文里的Flags位:

Syn位也标记为1,表示这个报文是一个同意建立链接的报文;

ACK位也标记为1,表示是一个对上一个报文的确认报文;

Sequence number:自己的序号;

acknowledgment number:表示对上一个请求报文的确认号,所以是在上一个报文的序号+1

第三次握手:是客户端发给服务器的,是对上一个同意连接请求的确认。


Flags里的ACK位标记为1,表示是一个对上一个报文的确认报文;

Sequence number:自己的序号,在上一个报文的基础上+1;

acknowledgment number:表示对上一个请求报文的确认号,在上一个报文序号的基础上+1.

至此,三次握手完成!接下来就开始发送HTTP的请求了。


TCP协议的四次挥手过程

当数据传输结束了,客户端和服务器之间就开始断开连接了。断开连接需要经历四次挥手,具体过程如下:


同样,我们用wireshark工具来进行详细过程的报文的分析:


我们同样展开看下详细的报文内容:

第一次挥手:当数据传输首先结束的端(比如客户端),会率先发起结束断开连接的请求:


Flags位的 Fin位标记为1,说明这是个一个断开连接的请求的报文。

这时候我们发送这个请求的端已经停止发送数据了!但是还可以接受数据。

第二次挥手:对上一个断开连接请求的报文进行确认。并同时,停止接受数据。

所以,我们能看到这个报文的ACK位标记为1,并且acknowledgment number是对上一个报文的序号+1,表示对上一个报文的确认。

第三次挥手:服务器端也结束数据发送了,所以也会发起一个断开连接的请求。

这是个服务器发起FIN报文,请求断开连接,同时,服务器也会停止发送数据。

第四次挥手:是客户端对服务器断开连接请求的进行确认。

所以这个flags位是ACK位标记为1。此时,客户端也停止接受数据了。

至此,服务器和客户端都停止发送和接受数据了!四次挥手就完成了。

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

Wireshark抓包分析TCP协议:三次握手和四次挥手

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

Wireshark抓包分析TCP协议:三次握手和四次挥手

Wireshark抓包分析TCP协议 为了更好的学习和理解TCP协议的连接和断开连接的过程,我们来引入一个非常适合用来学习网络协议的抓包工具Wireshark。这个抓包工具可以详细看到每一层网络报文的详细信息。

实战:tcpdump抓包分析三次握手四次挥手

本文档以实战的形式介绍tcpdump抓包分析三次握手四次挥手的过程。执行tcpdump命令
2023-06-05

TCP \\ UDP \\ TCP 三次握手和四次挥手

TCP 是面向连接的、可靠的、基于字节流的传输层通信协议。
TCPUDP2024-11-30

TCP/IP协议中三次握手四次挥手的原理及流程分析

当初学的是通信专业,毕业以后,同学们各奔东西,去追逐自己的梦想,奔波于大大小小的工地之间。哈哈,开个玩笑,也有厉害的,进了某某研究所,嗯?他爸不是所长,内心不要太阴暗。记得有一门十分高大上的课程,名字叫做计算机网络(大概是这个名字吧)。里面
2023-05-30

简述TCP三次握手和四次挥手

TCP三次握手:第一次握手:Client将标志位SYN置为1,随机产生一个值seq=J,并将该数据包发送给Server,Client进入SYN_SENT状态,等待Server确认。第二次握手:Server收到数据包后由标志位SYN=1知道C
2023-06-04

Python中TCP协议的三次握手与四次挥手是什么

本篇内容介绍了“Python中TCP协议的三次握手与四次挥手是什么”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!一、TCP、UDP 协议的区
2023-06-02

说说TCP的三次握手和四次挥手

TCP(Transmission Control Protocol) 传输控制协议,是一种 面向连接的、可靠的、基于字节流的传输层 通信协议。
TCP控制协议2024-12-03

抓包工具WireShark使用及TCP三次握手报文分析

为什么要抓包 (1)定位网络问题 大部分场合都可以通过程序调试来定位问题,但有些场景使用抓包来定位接口问题更准确、更方便,如以下场景: 你发送数据给后台,但后台没有收到,可以对接口进行抓包分析,看是后台处理有问题,还是没有将数据发出去,或是
2023-08-30

如何解析TCP的三次握手与四次挥手

这篇文章将为大家详细讲解有关如何解析TCP的三次握手与四次挥手,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。TCP的传输如图:TCP三次握手的过程如下:建立TCP连接,就是指建立一个TCP连
2023-06-28

TCP三次握手和四次挥手以及11种状态

置位概念:根据TCP的包头字段,存在3个重要的标识ACK、SYN、FIN,ACK:表示验证字段 SYN:位数置1,表示建立TCP连接 FIN:位数置1,表示断开TCP连接
TCP状态ACK2024-12-11

TCP:三次握手和四次挥手,面试无死角答复

服务端在收到客户端发送的fin包并回复ack包后,服务端并不能马上向发送端发送fin包,因为此时可能还有连接在处理数据,必须等到数据处理完后才能向客户端发送fin包。

说说TCP为什么需要三次握手和四次挥手?

三次握手(Three-way Handshake)其实就是指建立一个TCP连接时,需要客户端和服务器总共发送3个包,主要作用就是为了确认双方的接收能力和发送能力是否正常、指定自己的初始化序列号为后面的可靠性传送做准备。

如何使用tcpdump分析三次握手四次挥手

这篇文章主要介绍了如何使用tcpdump分析三次握手四次挥手,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。建立TCP连接,就是指建立一个TCP连接时,需要客户端和服务端总共发
2023-06-27

使用Wireshark对网络通信扑捉,进行三次握手和四次挥手原理分析

在网络的通信的时候,都有听说过三次握手四次挥手。但是对其原理是否清晰?本篇文章通过使用wireshark对网络通信扑捉,进行原理分析。

三次握手和四次挥手说完了,还让我手动写个HTTP协议代码

最近阿粉的同事们在准备面试,其中也有收到offer的几个不错的人,毕竟疫情稳定了,而阿粉在电话面试的时候,被问到关于HTTP协议的内容的时候,却显得有点麻木了,为什么呢?因为套路太深了,让阿粉猝不及防呀。

面试官:你说一下TCP为什么需要三次握手和四次挥手?

三次握手的目的是连接服务器指定端口,建立 TCP 连接,并同步连接双方的序列号和确认号,交换 TCP 窗口大小信息。在 socket 编程中,客户端执行 connect() 时。将触发三次握手。

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录