抓包分析TCP的三次握手和四次分手
一:三次握手
三次的握手的过程是:
1.由发起方HostA向被叫方HostB发出请求报文段,此时首部中的同步位SYN=1,同时选择一个序列号seq=x。TCP规定,SYN报文(即SYN=1的报文段)不能携带数据,但要消耗一个序列号。这时,TCP客户端进程进入SYN-SENT(同步已发送)状态。
2.HostB收到连接请求报文后,如同意建立连接,则向HostA发送确认。在确认报文段中应把SYN和ACK都置为1,确认号是ack=x+1,同时也为自己选择一个序列号seq=y。请注意这个报文段也不能携带任何数据,但同样要消耗一个序列号。这时TCP服务器进程进入SYN-REVD(同步收到)状态。
3.TCP客户端收到HostB的确认后,还要向HostB给出确认。确认报文段的ACK置1,确认号ack=y+1,而自己的序号seq=x+1。
此时SYN的值为0(待会从抓的报文中也可以看出)。TCP规定ACK的报文段可以携带数据。但如果不携带数据则不消耗序列号,在这种情况下,下一个数据报文段的序号仍是seq=x+1。整个过程如图所示。
三次握手第一步:
三次握手第二步:
三次握手第三步:
二:为什么要三次握手
书上、播客中找了好多三次握手的理由,但是解释都不是特别的清楚明白,问了身边搞网络工程师的同学,推荐了一本
《路由交换术》,这是同学参加华三公司考试时用的教科书,里面对三次握手的解释比较清楚。
三:四次分手
四次分手的过程是:
1.A的应用进程先向其TCP发出连接释放报文段,并停止再发送数据,主动关闭TCP连接A把连接释放报文段首部的FIN置1, 其序号seq = u , 它等于前面己传送过的数据的最后一个字节的序号加1,这时A进入FIN-WAIT- 1 (终止等待 1)状态 , 等待B的确认请注意 , TCP规定 , FIN报文段即使不携带数据 ,它也消耗掉一个序号。
2.B收到连接释放报文段后即发出确认,确认号是ack=u + 1,而这个报文段自己的序号 是v, 等于B前面己传送过的数据的最后一个字节的序号加1然后B就进入CLOSE-WAIT( 关闭等待 )状态 。TCP服务器进程这时应通知高层应用进程,因而从A到B这个方向的连接就释放了,这时的TCP连接处于半关闭 ( half-close )状态 ,即A己经没有数据要发送了,但B若发送数据 , A仍要接收 。也就是说 ,从B到A这个方向的连接并未关闭。这个状态可能会持续一些时间。A收到来自B的确认后 ,就进入FIN-WAIT-2(终止等待2)状态, 等待B发出的连接释放报文段 。
3.若B已经没有要向A发送的数据,其应用进程就通知TCP释放连接。这时B发出的连接释放报文段必须使FIN = 1, 现假定B的序号为w(在半关闭状态B可能又发送了一些数据)。B还必须重复上次己发送过的确认号 ack= u+1,这时B就进入LAST-ACK(最后确认)状态,等待A的确认。
4.A在收到B的连接释放报文段后,必须对此发出确认。在确认报文段中把ACK置1, 确认号ack = w + 1, 而自己的序号是seq = u + 1(根据TCP标准,前面发送过的FIN报文段要消耗一个序号 )。然后进入到TIME-WAIT( 时间等待)状态。请注意,现在TCP连接 还没有释放掉。必须经过时间等待计时器(TIME-WAIT timer) 设置的时间2MSL后,A才进入到CLOSED状态。时间MSL叫做最长报文段寿命(Maxium Segment Lifetime),RFC793 建议设为2分钟。但这完全是从工程上来考虑,对于现在的网络 ,MSL = 2分钟可能太长了 一些。因此TCP允许不同的实现可根据具体情况使用更小的MSL值。因此,从A进入到TIME-WAIT状态后, 要经过4分钟才能进入到CLOSED状态,才能开始建立下一个新的连接。当A撤销相应的传输控制块TCB后, 就结束了这次的TCP连接。 整个过程如图所示。
四次分手第一步:
四次分手第二步:
四次分手第三步:
四次分手第四步:
四:客户端、服务端整个过程
客户端整个过程如图。
服务端整个过程如图。
抓包分析TCP的三次握手和四次分手的更多相关文章
- 抓包分析TCP的三次握手和四次握手
问题描写叙述: 在上一篇<怎样对Android设备进行抓包>中提到了,server的开发者须要我bug重现然后提供抓包给他们分析.所以抓好包自己也试着分析了一下.发现里面全是一些TCP协议 ...
- linux下使用tcpdump抓包分析tcp的三次握手
首先贴上tcp 三次握手的原理图服务器开启ftp服务并执行tcpdump抓包服务器:192.168.3.14 ftp服务客户端:192.168.3.100 服务器执行以下命令,客户端访问服务器ftp: ...
- 基于wireshark抓包分析TCP的三次握手
1. TCP的三次握手 在TCP/IP协议通讯过程中,采用三次握手建立连接,从而保证连接的安全可靠. 所有基于TCP的通信都需要以两台主机的握手开始.这个握手过程主要是希望能达到以下不同的目的.[1] ...
- 简析TCP的三次握手与四次分手【转】
转自 简析TCP的三次握手与四次分手 | 果冻想http://www.jellythink.com/archives/705 TCP是什么? 具体的关于TCP是什么,我不打算详细的说了:当你看到这篇文 ...
- 007_wireshark分析TCP的三次握手和四次断开
要想进行抓包分析,必须先了解TCP的原理.这里介绍了TCP的建立连接的三次握手和断开连接的四次握手. 一.前言:介绍三次握手之前,先介绍TCP层的几个FLAGS字段,这个字段有如下的几种标示 SYN表 ...
- TCP之二:TCP的三次握手与四次分手
一.TCP是什么? 具体的关于TCP是什么,我不打算详细的说了:当你看到这篇文章时,我想你也知道TCP的概念了,想要更深入的了解TCP的工作,我们就继续.它只是一个超级麻烦的协议,而它又是互联网的基础 ...
- 简析TCP的三次握手与四次分手
TCP是什么? 具体的关于TCP是什么,我不打算详细的说了:当你看到这篇文章时,我想你也知道TCP的概念了,想要更深入的了解TCP的工作,我们就继续.它只是一个超级麻烦的协议,而它又是互联网的基础,也 ...
- 【转载】简析TCP的三次握手与四次分手
最近在补习HTTP协议相关知识点,看到这篇讲得不错,所以转载收藏一下,同时也分享给大家.原文地址:http://www.jellythink.com/archives/705,版权归原作者所有. TC ...
- 大杂烩 -- 简析TCP的三次握手与四次分手
基础大杂烩 -- 目录 -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- - ...
随机推荐
- Metadata Lock原理7
http://blog.itpub.net/22664653/viewspace-1791744/ 一 简介 通过前面两篇文章的介绍,相信读到这里的各位对MDL 锁已经有了比较深入的了解了,本文将结合 ...
- 为laravel分页样式制定class
做的项目有一个上翻页和下翻页,使用了框架提供的
- 小白日记27:kali渗透测试之Web渗透-Http协议基础,WEB
Http协议基础 Web技术发展[http://www.cnblogs.com/ProgrammerGE/articles/1824657.html] 静态WEB[网页] 动态WEB 属于一种应用程序 ...
- myeclipse2014 安装maven3.3.9和mave配置本地仓库
昨天晚上发现eclipse下一个aptana JS的编辑插件,就想装到myeclipse下,结果悲剧了,myeclipse每次启动都闪退,虽然最后解决了,但是myeclipse里面的自带插件不知少了好 ...
- The method load(Class, Serializable) in the type HibernateTemplate is not applicable for the arguments (Class, int)
引入别人的项目发现利用HibernateTemplate的load的方法报错了.错误提示为: The method load(Class, Serializable) in the type Hibe ...
- cocos2d-x lua与c++简单交互
cocos2d-x lua与c++简单交互 version: cocos2d-x 3.6 本文讲述lua与c++的一些简单交互: lua通过消息方式调用c++无参接口 c++调用lua带参接口 1.通 ...
- css笔记17:盒子模型加强版的案例
1.先看看经典案例效果图,导出思路: 分析:思路 基本结构 <div> <ul> <li><img src=""/> </li ...
- 沈逸老师ubuntu速学笔记(1)--安装flashplayer,配置中文输入法以及常用命令
开篇首先感谢程序员在囧途(www.jtthink.com)以及沈逸老师,此主题笔记主要来源于沈老师课程.同时也感谢少年郎,秦少.花旦等同学分享大家的学习笔记. 1.安装flash player ctr ...
- Linux下文件的三个时间(Atime,Mtime,Ctime)
文件的三个时间 我们已经很熟悉windows系统了,那么我们在windows下新建一个文件,我们知道它在保存的时候肯定是会保存一下文件的创建时间之类的信息的,那么我们来看看windows下的一个文件保 ...
- tomcat部署应用的几种方式
接着上篇 tomcat配置详解,再来学习下如何在tomcat下部署应用 1.部署方式 第一种,最常用,直接把WAR包或者文件夹直接放到webapps目录下面,这时访问路径就是WAR包或者文件夹的名称. ...