从Wireshark看TCP连接的建立与关闭
TCP是一种面向连接、可靠的协议。TCP连接的建立与断开,都是需要经过通信双方的协商。用一句话概括就是:三次握手say hello(建立连接);四次握手say goodbye(断开连接)。要了解TCP连接的建立与断开,就不得不需要了解TCP头的内容。然而,TCP头及其复杂,概括而言,我们需要了解以下内容:
Sequence Number(Seq):序号。表示一个TCP片段,用于保证数据没有丢失
Acknowledgment Number(Ack):确认号。用于表示希望从对方得到的下一个数据包的序号。举例来说A发送了一个数据包给B,Ack = 1000;那么就表示A希望从B那接收到的下一个数据包的序号为1000。也就是说,B应该发送一个数据包给A,Seq = 1000。后面会有更详细的例子
Flags:标志。用于标记TCP数据包的类型。TCP连接的建立与断开,会用到以下标记:SYN,ACK,FIN
- SYN = Synchronize sequence numbers
- ACK = Acknowledgment
- FIN = Finish
三次握手的示意图如下:
使用Wireshark捕获TCP三次握手的过程,从下图我们也能很清楚的知道Seq以及Ack变化的过程:
- Client -> Server: Seq = 3691127924(X) (Flags = SYN)
- Server -> Client: Seq = 233779340(Y), Ack = 3691127925(X+1) (Flags = SYN&ACK)
- Client -> Server: Seq = 3691127925(X+1), 233779341(Y+1) (Flags = SYN&ACK)
四次握手的示意图如下:
使用Wireshark捕获TCP四次次握手的过程,从下图我们也能很清楚的知道Seq以及Ack变化的过程:
- Client -> Server: Seq = 822643295(X), Ack = 2079380537(Y) (Flags = FIN&ACK)
- Server -> Client: Seq = 2079380537(Y), Ack = 822643296(X+1) (Flags = ACK)
- Server -> Client: Seq = 2079380537(Y), Ack = 822643296(X+1) (Flags = FIN&ACK)
- Client -> Server: Seq = 822643296(X+1), Ack = 2079380537(Y+1) (Flags = ACK)
上述的Wireshark并不是我在实践中捕获的数据包,而是《Wireshark数据包分析实战》这本书中附带的数据包文件。在我实际的抓包分析中,捕获的四次握手的过程似乎有些不一样(只有三次握手就断开连接了,希望通过后续学习能解开这个疑惑)
三次握手:
四次握手:
从Wireshark看TCP连接的建立与关闭的更多相关文章
- 利用tcpdump分析工具来验证tcp连接的建立和关闭过程
本文要求读者在阅读之前应该对TCP通过三次握手建立和关闭连接有一定的了解,本文并没有详细讲解三次握手,只是通过一个实例对三次握手进行了一下验证. tcp连接的建立和关闭想必大家都已经非常熟悉了!通过三 ...
- 网络学习笔记(一):TCP连接的建立与关闭
五层网络模型分为:物理层.数据链路层.网络层.传输层.应用层.其中,传输层有两种主要协议:面向连接的TCP(Transmission Control Protocol 传输控制协议).无连接的UD ...
- TCP连接的建立与关闭
TCP是主机对主机层的传输控制协议:建立连接要三个握手,断开连接要四次挥手. 位码即TCP标志位,有6种标示:SYN(synchronous建立联机),ACK(acknowledgement 确认), ...
- TCP连接的状态与关闭方式及其对Server与Client的影响
TCP连接的状态与关闭方式及其对Server与Client的影响 1. TCP连接的状态 首先介绍一下TCP连接建立与关闭过程中的状态.TCP连接过程是状态的转换,促使状态发生转换的因素包括用户调用. ...
- TCP连接的状态与关闭方式,及其对Server与Client的影响
1. TCP连接的状态 首先介绍一下TCP连接建立与关闭过程中的状态.TCP连接过程是状态的转换,促使状态发生转换的因素包括用户调用.特定数据包以及超时等,具体状态如下所示: CLOSED:初始状态, ...
- TCP/IP详解学习笔记(10)-TCP连接的建立与中止
TCP是一个面向连接的协议,所以在连接双方发送数据之前,都需要首先建立一条连接.这和前面讲到的协议完全不同.前面讲的所有协议都只是发送数据而已,大多数都不关心发送的数据是不是送到,UDP尤其明显,从编 ...
- 【网络协议】TCP连接的建立和释放
转载请注明出处:http://blog.csdn.net/ns_code/article/details/29382883 TCP首部格式 先看TCP报文段的格式,例如以下; TCP报文段首部的前20 ...
- TCP/IP协议--TCP协议概括和TCP连接的建立和终止
TCP提供一种面向连接的.可靠的字节流服务.面向连接指,发送和接收方在交换数据前必须建立一个TCP连接.顺便说下,一个TCP连接只有两方,因此广播和多播是不能应用于TCP的.字节流指,两个应用程序通过 ...
- TCP连接的建立(三次握手和四次挥手)
写到最后发现我描述的挺水的,这个老哥的用语比较专业一点https://blog.csdn.net/qq_38950316/article/details/81087809 (老哥这篇有些许错别字 大 ...
随机推荐
- ASP.NET MVC 音乐商店 - 5. 通过支架创建编辑表单
在上一章,我们已经从数据库获取数据,然后显示出来,这一章,我们将允许编辑数据. 创建 StoreManagerController 控制器 我们将要创建称为 StoreManager 的控制器,对于这 ...
- Ubuntu18.04中使用中文输入法
如何在ubuntu18.04中设置使用中文输入法 ubuntu 在最新的版本中已经可以不用用户自己单独去下载中文输入法使用了,本次使用为 ubuntu18.04LTS版本(登陆是界面选择的是ubunt ...
- QT OpenGL中文教程在QT4版本后的错误代码更改(一)
由于教程中说的已经够可以了,这里就不对代码进行分析了,有兴趣可以自己去看看.这个教程来源于原来的NeHeOpenGL中文教程 (http://www.yakergong.net/nehe/) ,但其有 ...
- log4net 简单配置
<configSections> <section name="log4net" type="log4net.Config.Log4NetConfigu ...
- Jenkins使用分组过滤分类
背景:Jenkins项目过多,通过选项卡的方式过滤需要的项目 1.点击选择卡上的加号 2.填写要分组的名字 3.可选择某个job进行分类,或者使用正则表达式的方式进行分类,楼主是根据正则进行匹配, 4 ...
- 数据库连接-ADO.NET
版权声明:本文为博主原创文章,未经博主同意不得转载. https://blog.csdn.net/huo065000/article/details/25830291 非常早就知道了ADO ...
- Codeforces Round #347 (Div.2)_A. Complicated GCD
题目链接:http://codeforces.com/contest/664/problem/A A. Complicated GCD time limit per test 1 second mem ...
- 改Chrome的User Agent,移动版网络
理论上访问手机版或者iPad等平板电脑版的网络,应该可以剩些流量的,毕竟移动网络是经过优化压缩的,但是PC电脑如果访问移动版的网站呢?我主要使用的浏览器是Chrome,这几天也找了下Chrome下的修 ...
- React后端管理系统-商品详情detail组件
import React from 'react'; import MUtil from 'util/mm.jsx' import Product from 'service/product-serv ...
- 前端JavaScript之DOM事件操作
DOM:文档对象模型,操作网页上的元素的API.比如让盒子移动.变色.轮播图等. 1.DOM(Document Object Moduel):文档对象模型 定义了访问和操作HTML文档的标准法,把HT ...