前言

TCP协议为数据提供可靠的端到端的传输,处理数据的顺序和错误恢复,保证数据能够到达其应到达的地方。TCP协议是面向连接的,在两台主机使用TCP协议进行通信之前,会先建立一个TCP连接(三次握手),双方不再继续通信时,会将连接释放(正常情况下四次挥手)。下面就抓包分析TCP三次握手和四次挥手的过程。

建立连接——三次握手

第一次握手

客户端192.168.1.148发送一个建立TCP连接的请求包给服务器端174.143.213.184。可以从数据包中得出,建立连接源端口为57678,目标端口为80,确认编号为0。同步标志位SYN被置为1,表示请求连接建立。TCP首部长度大于20字节,说明选项中也附带了一些内容,给出最大段长度为1460字节,允许使用选择确认等。

第二次握手

服务器端收到请求后,发送给客户端确认包。该数据包中包含服务器的初始序列号为0,以及对请求包的确认,所以确认号为1也是期望下一个收到的包的字节流编号是从2开始的。

第三次握手

客户端向服务器端发出确认包,序号是从1开始,确认号为1,标志位只有ACK被置为1,说明这是一个确认包。于是便完成TCP连接建立。在这个包发送后,客户端就已将可以向服务器端请求数据,正常通信了。

关闭连接——三次挥手

四次挥手过程

放一张以前做的图介绍TCP四次挥手的过程:

当客户端向服务器端发起连接关闭请求时,因为服务器端还有数据发送给客户端所以不能立马将连接关闭,于是先回复客户端ACK表示你的请求我已经收到。然后将剩下的数据继续发送给客户端,数据发送完毕后,在回复给客户端的ACK包中将FIN标志置为1,请求连接关闭。最后,客户端回复ACK包表示收到服务器端的FIN。服务器端收到此ACK包后立马就关闭连接。客户端继续等待2MSL(因为发送给客户端的ACK包可能会丢失),服务器端没有重传包回来就关闭连接。到此,整个连接算是完全结束。

以上过程是标准的释放过程,但是在实际通信当中,可能只会有三次挥手。当客户端发送FIN包给服务器端,服务器端因为没有数据再传给客户端,于是就会在回复给客户端的FIN的ACK包中将FIN字段置位1,发送给客户端的包就为ACK+FIN,表示我也要求连接关闭。然后,客户端回复一个ACK确认收到FIN+ACK包,服务器端就关闭连接,客户端等待2MSL后也关闭连接。

上图就是三次挥手的数据包截图

第一次挥手

客户端192.168.1.140向服务器端172.143.213.184请求断开连接。

第二次挥手

因为服务器端没有数据传给客户端于是将回复给客户端的ACK包中FIN置为1,表示也请求连接断开。

第三次挥手

客户端对服务器端的FIN+ACK进行回复。服务器端收到该ACK包就关闭连接。

小结

回头想一想TCP为什么是三次握手呢,两次好像也是可以的。但是,这里存在一个问题,网络中的包是会延迟的,如果有一个很久以前的连接请求发送到了服务器端(实际上客户端已经发送了新的连接请求给服务器端,完成了数据请求并且连接已经关闭),服务器端并不知道这是以前的连接请求,于是也会回复一个ACK并且等待客户端的回复。客户收到该ACK不会回复,就会造换成服务器端一直等待并且超时重发ACK包。所以,两次握手是不可以的,四次握手也是显得多余的。三次握手最后一次客户端回复ACK给服务器端,服务器端收到后,才分配资源等待客户端的正式请求。
总结一句话需要三次握手的原因是:为了防止以前的连接请求即失效连接请求发送到服务器而造成错误。

网络协议抓包分析——TCP传输控制协议(连接建立、释放)的更多相关文章

  1. 网络协议抓包分析——IP互联网协议

    前言 IP协议是位于OSI模型的第三层协议,其主要目的就是使得网络间可以相互通信.在这一层上运行的协议不止IP协议,但是使用最为广泛的就是互联网协议. 什么是IP数据报 TCP/IP协议定义了一个在因 ...

  2. 网络协议抓包分析——ARP地址解析协议

    前言 计算机之间可以相互通信的前提是要知道对方的地址,才可以发送信息给其他计算机,就像别人要联系你也得先知道你的电话号码一样.这里的地址因为网络分层的原因就包括IP地址和MAC地址(即网卡地址.硬件地 ...

  3. wireshark抓包分析——TCP/IP协议

    本文来自网易云社区 当我们需要跟踪网络有关的信息时,经常会说"抓包".这里抓包究竟是什么?抓到的包又能分析出什么?在本文中以TCP/IP协议为例,简单介绍TCP/IP协议以及如何通 ...

  4. Wireshark抓包分析TCP 3次握手、4次挥手过程

    Wireshark简介 更多有关Wireshark的教程.软件下载等,请见:http://www.52im.net/thread-259-1-1.html,本文只作简要介绍. 1Wireshark 是 ...

  5. 使用 tcpdump 抓包分析 TCP 三次握手、四次挥手与 TCP 状态转移

    目录 文章目录 目录 前文列表 TCP 协议 图示三次握手与四次挥手 抓包结果 抓包分析 TCP 三次握手 数据传输 四次挥手 TCP 端口状态转移 状态转移 前文列表 <常用 tcpdump ...

  6. Wireshark抓包分析TCP建立/释放链接的过程以及状态变迁分析

    Wireshark抓包分析TCP建立/释放链接的过程以及状态变迁分析 一.介绍计算机网络体系结构 1.计算机的网络体系结构 在抓包分析TCP建立链接之前首先了解下计算机的网络通信的模型,我相信学习过计 ...

  7. Wireshark抓包分析TCP“三次握手,四次挥手”

    1.目的 客户端与服务器之间建立TCP/IP连接,我们知道是通过三次握手,四次挥手实现的,但是很多地方对这个知识的描述仅限于理论层面,这次我们通过网络抓包的方式来看一下实际的TCP/IP传输过程. 2 ...

  8. Java网络编程学习A轮_02_抓包分析TCP三次握手过程

    参考资料: https://huoding.com/2013/11/21/299 https://hpbn.co/building-blocks-of-tcp/#three-way-handshake ...

  9. Wireshark抓包分析/TCP/Http/Https及代理IP的识别

    前言 坦白讲,没想好怎样的开头.辗转三年过去了.一切已经变化了许多,一切似乎从没有改变. 前段时间调研了一次代理相关的知识,简单整理一下分享之.如有错误,欢迎指正. 涉及 Proxy IP应用 原理/ ...

随机推荐

  1. 可视化利器Visdom

    可视化利器Visdom 最近在使用Pytorch炼丹,单纯地看命令行输出已经无法满足调试的需求,尝试了facebook开源的visdom,感觉非常优雅,支持numpy和torch 安装 $ pip i ...

  2. Win 10 Revit 2019 安装过程,亲自踩的一遍坑,有你想要的细节

    首先就是安装吖,不管是管理员权限还是普通权限,都是以下这个问题,跟权限没关系 failed to load .....revitcontentpackui.dll (126) 尝试了网上能查到的各种方 ...

  3. vue中实现图片全屏缩放预览,支持移动端

    # 安装 npm install vue-photo-preview --save # 引入 import preview from 'vue-photo-preview' import 'vue-p ...

  4. mysql_Navicat数据库破解

    Navicat Premium 12.1.16.0安装与激活 Navicat Premium 12是一套数据库开发管理工具,支持连接 MySQL.Oracle等多种数据库,可以快速轻松地创建.管理和维 ...

  5. vue的登陆验证及返回登录前页面实现

    一.路由配置部分如下所示, 导出路由示例 let router = new VueRouter({ routes: [ // 登陆 { name: 'login', path: '/login', c ...

  6. [Codeforces Round #516][Codeforces 1063B/1064D. Labyrinth]

    题目链接:1063B - Labyrinth/1064D - Labyrinth 题目大意:给定一个\(n\times m\)的图,有若干个点不能走,上下走无限制,向左和向右走的次数分别被限制为\(x ...

  7. 菜鸡谈OO 第二单元总结

    “欢迎来到(玄学)多线程的新世界” Homework1 单部傻瓜电梯调度 Part1 多线程设计策略 第一次学到了线程这个概念,与之前的编程体验大有不同.最大的区别在于从原本的线性发生程序变成了多个行 ...

  8. MS SQL计算最大公约数和最小公倍数函数

    /*求两个数的最大公约数*/ CREATE FUNCTION f_GetGys ( @num1 BIGINT , @num2 BIGINT ) RETURNS BIGINT AS BEGIN DECL ...

  9. 急急如律令!火速搭建一个C#即时通信系统!(附源码分享——高度可移植!)

    (2016年3月更:由于后来了解到GGTalk开源即时通讯系统,因此直接采用了该资源用于项目开发,在此对作者表示由衷的感谢!) —————————————————————————————————— 人 ...

  10. 【二代示波器教程】第14章 uCOS-III操作系统版本二代示波器实现

    第14章      uCOS-III操作系统版本二代示波器实现 本章教程为大家讲解uCOS-III操作系统版本的二代示波器实现.主要讲解RTOS设计框架,即各个任务实现的功能,任务间的通信方案选择,任 ...