TCP三次握手、四次挥手详解(Wireshark实践)

这篇具有很好参考价值的文章主要介绍了TCP三次握手、四次挥手详解(Wireshark实践)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、ACK、SYN、FIN等标识位

wireshark抓包三次握手四次挥手,网络安全,tcp/ip,网络,服务器
ACK (Acknowledge character,确认字符)在数据通信中,接收站发给发送站的一种传输类控制字符。表示发来的数据已确认接收无误。TCP协议规定,只有ACK=1时有效,也规定连接建立后所有发送的报文的ACK必须为1

SYN(synchronization,同步) 在连接建立时用来同步序号。
当SYN=1而ACK=0时,表明这是一个连接请求报文段。对方若同意建立连接,则应在响应的报文段中使SYN=1和ACK=1。
因此,SYN置为1就表示这是一个连接请求或连接接受报文。

FIN (finish,终结) 用来释放一个连接。
当 FIN = 1 时,表明此报文段的发送方的数据已经发送完毕,并要求释放连接。

RST (ReSeT),复位, 当RST = 1时,表明TCP 连接中出现严重差错(如主机崩溃或其他原因),必须释放连接,然后再重新建立运输连接。将RST置为1还用来拒绝一个非法的报文段或拒绝打开一个连接。RST也可称为重建位或重置位。

URG: 紧急指针( urgent pointer)有效。
PSH: 接收方应该尽快将这个报文段交给应用层。

确认号 (Acknowledgment Number)占4字节,是期望收到对方下一个报文段的第一个数据字节的序号。
若确认号=N,则表明:到序号N-1为止的所有数据都已正确收到

二、TCP报文实例

wireshark抓包三次握手四次挥手,网络安全,tcp/ip,网络,服务器
wireshark抓包三次握手四次挥手,网络安全,tcp/ip,网络,服务器

三、三次握手

wireshark抓包三次握手四次挥手,网络安全,tcp/ip,网络,服务器
1、客户端发送连接请求报文段,无应用层数据。
SYN=1,seq=x(随机)

2、服务器端为该TCP连接分配缓存和变量,并向客户端返回确认报文段,允许连接,无应用层数据。小写的ack表示确认号。
SYN=1,ACK=1,seq=y(随机),ack=x+1

3、客户端为该TCP连接分配缓存和变量,并向服务器端返回确认的确认,可以携带数据。后面发数据时SYN均为0。
SYN=0,ACK=1,seq=x+1,ack=y+1

注:SYN Cookie是专门用来防范SYN Flood攻击的一种手段。三次握手的核心是: 确认每一次包的序列号。

TCP 在连接建立时所发送的第一个 SYN 报文段只有首部,其数据部分是空的,但为什么 SYN 报文段要消耗一个序号呢?

解答: TCP 在连接建立时所发送的第一个 SYN 报文段是一个控制报文段,其主要目的是为了和对方建立同步,并明确自己采用的初始序号。这个报文段没有数据部分。按理说,好像这个 SYN 报文段不需要序号。但是 SYN 报文段非常重要,是不允许丢失的(传错了或丢了就要重传,否则无法建立连接),所以必须进行编号。虽然 SYN 报文段没有数据部分,只有首部,但我们可以想象 SYN 报文段包含一个虚字节的数据,因此给 SYN 报文段一个序号,让SYN 报文段消耗一个序号。当对方收到序号为x的SYN 报文段后 给出 的确认就应当是ack =x + 1。发送方收到这个确认,就知道发送的 SYN 报文段已正确地传送到对方了。

TCP 在连接建立时, A发送 SYN 报文段,选择了初始序号 seq=x。B 收到连接请求报文段后,如同意建立连接,则向A发送确认和 SYN 报文段,其确认号是ack = x + 1, 同时也为自己选择一个初始序 seq=y。A 最后要发送确认报文段其序号是 seq= x + 1, 确认号是 ack = y + 1 。这个确认报文段消耗序号吗?
解答:
A所发送的确认报文段#3 是不消耗序号的。
如果A在确认报文段#3 之后接着发送数据报文段,那么这个数据报文段的序号就仍然是seq =x +1, 因为确认报文段#3 是不消耗序号的。
但是应当注意,如果A所发送的确认报文段#3 携带了数据,那么这个报文段就消耗序号。例如, A所发送的确认报文段#3 携带了 100 字节的数据,那么A下一次发送的数据报文段#4的序号就应当是 seq =x+ 101。

四、四次挥手

wireshark抓包三次握手四次挥手,网络安全,tcp/ip,网络,服务器
1、客户端发送释放连接报文段,停止发送数据,主动关闭TCP连接。
FIN=1,seq=u

2、服务器端回送一个确认报文段,客户到服务器这个方向的连接就释放了——半关闭状态。
ACK=1,seq=v,ack=u+1

3、服务器端发完数据(也可不发数据),就发出释放连接报文段,主动关闭TCP连接。
FIN=1, ACK=1,seq=w,ack=u+1

4、客户端回送一个确认报文段,再等到时间等待计时器设置的2MSL(最长报文段寿命)后,连接彻底关闭。
ACK=1,seq=u+1,ack=w+1

客户端收到FIN报文后,就知道可以关闭连接了,但是担心自己发的ACK因为网络等因素不能被服务器端收到,服务器端不知道要关闭并且重复发FIN报文。所以发送ACK后进入TIME_WAIT状态,如果服务器端没有收到ACK则可以重传。客户端等待了2MSL后依然没有收到回复,则证明服务器端已正常关闭,那么客户端也可以关闭连接了。
MSL (Maximum Segment Lifetime):最长报文段寿命,一般设为 2 分钟,TCP 允许根据具体情况使用更小的 MSL 值。
wireshark抓包三次握手四次挥手,网络安全,tcp/ip,网络,服务器

五、数据包的大致结构

第一行:数据包整体概述,
第二行:链路层详细信息,主要的是双方的mac地址(关注mac)
第三行:网络层详细信息,主要的是双方的IP地址(关注IP)
第四行:传输层的详细信息,主要的是双方的端口号(关注端口号)。
wireshark抓包三次握手四次挥手,网络安全,tcp/ip,网络,服务器
wireshark抓包三次握手四次挥手,网络安全,tcp/ip,网络,服务器

六、Wireshark中看TCP三次握手、四次断开

模拟tcp会话建立
通过Xshell远程连接Kali Linux就会捕获到完整的TCP3次握手的链接。
先清空数据包然后筛选tcp开始抓包

三次握手

wireshark抓包三次握手四次挥手,网络安全,tcp/ip,网络,服务器
wireshark抓包三次握手四次挥手,网络安全,tcp/ip,网络,服务器
wireshark抓包三次握手四次挥手,网络安全,tcp/ip,网络,服务器
wireshark抓包三次握手四次挥手,网络安全,tcp/ip,网络,服务器
到这里三次握手过程就结束了

流程图显示

wireshark抓包三次握手四次挥手,网络安全,tcp/ip,网络,服务器
wireshark抓包三次握手四次挥手,网络安全,tcp/ip,网络,服务器
前面3个就是TCP建立链接的过程,后面的就是相互通信的过程了这个时候seq就会根据数据包的大小改变。
wireshark抓包三次握手四次挥手,网络安全,tcp/ip,网络,服务器
清空数据包来看一下断开链接是一个什么样的过程
wireshark抓包三次握手四次挥手,网络安全,tcp/ip,网络,服务器

四次挥手

流程图显示
把窗口拉到最下面只看4个数据包
wireshark抓包三次握手四次挥手,网络安全,tcp/ip,网络,服务器
过程: 我们在终端输入EXIT实际上是在我们Kali 上执行的命令,表示我们SSHD的Server端向客户端发起关闭链接请求。

参考链接

网络基础之网络协议篇——Egon林海峰老师文章来源地址https://www.toymoban.com/news/detail-767632.html

到了这里,关于TCP三次握手、四次挥手详解(Wireshark实践)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包赞助服务器费用

相关文章

  • TCP协议+三次握手/四次挥手过程(带图详解!!!)

    TCP协议+三次握手/四次挥手过程(带图详解!!!)

    传输控制协议(TCP,Transmission Control Protocol)是一种面向连接的、可靠的、基于字节流的通信协议,工作在 传输层 。 应用程序在使用 TCP 协议之前,必须先建立 TCP 连接。在传送数据完毕后,必须释放已经建立的 TCP 连接。 TCP运输连接主要有三个阶段: 建立TCP连接,也就是三

    2024年02月03日
    浏览(8)
  • 最通俗易懂的TCP三次握手四次挥手详解

    最通俗易懂的TCP三次握手四次挥手详解

    TCP的三次握手和四次挥手实质就是TCP通信的连接和断开。 三次握手:为了对每次发送的数据量进行跟踪与协商,确保数据段的发送和接收同步,根据所接收到的数据量而确认数据发送、接收完毕后何时撤消联系,并建立虚连接。 四次挥手:即终止TCP连接,就是指断开一个T

    2024年02月15日
    浏览(8)
  • 详解TCP/IP的三次握手和四次挥手

    详解TCP/IP的三次握手和四次挥手

    本文章讲解TCP/IP协议的三次握手和四次挥手的流程。 三次握手:为了对每次发送的数据量进行跟踪与协商,确保数据段的发送和接收同步,根据所接收到的数据量而确认数据发送、接收完毕后何时撤消联系,并建立虚连接。 TCP协议位于传输层,作用是提供可靠的字节流服务

    2024年02月09日
    浏览(10)
  • TCP/IP 三次握手&四次挥手详解,以及异常状态分析

    1.TCP/IP 三次握手 TCP/IP 三次握手过程 主要依靠IP协议报文中的 SYN ACK 两个标识位,SYN 表示是请求连接的报文,ACK 表示确认报文的请求 过程: 客户端处于 CLOSE 状态,服务器处于 LISTEN 状态,客户端向服务器发送请求连接报文,SYN=1 seq=x,发送成功后,客户端状态修改为 SYN_SEND

    2024年02月22日
    浏览(9)
  • TCP报文与三次握手四次断开、TCP最大连接数与文件打开数限制、keepalive、tcpdump、wireshark抓包分析工具

    TCP报文与三次握手四次断开、TCP最大连接数与文件打开数限制、keepalive、tcpdump、wireshark抓包分析工具

    tcp详解、tcp与udp对比等 TCP:传输控制协议 UDP:用户数据报协议 源端口和目的端口字段:各占 2 字节(16位)。端口是运输层与应用层的服务接口。运输层的复用和分用功能都要通过端口才能实现。 序列号:在建立连接时由计算机生成的随机数作为其初始值,通过 SYN 包传给接

    2024年04月22日
    浏览(7)
  • 计算机网络面经之TCP三次握手和四次挥手的详解

    计算机网络面经之TCP三次握手和四次挥手的详解

    1.详细描述三次握手和四次挥手的过程。 2.三次握手可以变成两次握手吗? 3.简述 TCP 连接和关闭的状态转移。 4.简述TCP 四次挥手的 TIME_WAIT状态,以及为什么需要有这个状态 (1)序号(sequence number):seq序号,占32位,用来标识从TCP源端向目的端发送的字节流,发起方发送数据

    2024年02月12日
    浏览(10)
  • 【网络基础】TCP协议之三次握手&四次挥手--详解与常见问题解答

    【网络基础】TCP协议之三次握手&四次挥手--详解与常见问题解答

    目录 TCP 的特性 三次握手与四次挥手 三次握手:  灵魂拷问: 四次挥手: 灵魂拷问: 三次握手: 所谓 三次握手 (Three-way Handshake),是指建立一个 TCP 连接时,需要客户端和服务器总共发送3个包。 三次握手的目的是连接服务器指定端口,建立 TCP 连接,并同步连接双方的序列

    2024年01月20日
    浏览(13)
  • TCP 三次握手:四次挥手

    TCP 三次握手:四次挥手

    TCP 三次握手/四次挥手 TCP 在传输之前会进行三次沟通,一般称为“三次握手”,传完数据断开的时候要进行四次沟通,一般称为“四次挥手”。 数据包说明 源端口号( 16 位):它(连同源主机 IP 地址)标识源主机的一个应用进程。 目的端口号( 16 位):它(连同目的主机

    2024年01月19日
    浏览(11)
  • TCP的三次握手,四次挥手

    TCP的三次握手,四次挥手

    第一次握手:客户端发送SYN报文,井发送seq为x序列号给服务端,等待服务端的确认 第二次握手:服务端发送SYN+ACK报文,并发送seq为Y的序列号,在确认序列号为x+1 第三次握手:客户端发送ACK报文,并发送seq序列号为z,在确认序列号为y+1 第一次挥手:先由客户端向服务器端发

    2024年01月18日
    浏览(8)
  • TCP 三次握手&四次挥手浅析

    TCP 三次握手&四次挥手浅析

    大家都知道传输层中的TCP协议是面向连接的,提供可靠的连接服务,其中最出名的就是三次握手和四次挥手。 三次握手的交互过程如下 喜欢钻牛角尖的我在学习三次握手的时候就想到了几个问题:为什么三次握手是三次?不是一次、两次或者更多?如果是两次或者是一次会

    2024年02月15日
    浏览(8)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包