TCP 三次握手,四次分手

原创 2015年11月19日 20:58:51
第一次(A--->B),SYN=1,seq=x
第二次(B--->A),SYN=1,ACK=1,seq=y,ack=x+1    
第三次(A--->B),ACK=1,seq=x+1,ack=y+1    

seq是序列号,这是为了连接以后传送数据用的,ack是对收到的数据包的确认,值是等待接收的数据包的序列号。
在第一次消息发送中,A随机选取一个序列号作为自己的初始序号发送给B;第二次消息B使用ack对A的数据包进行确认,因为已经收到了序列号为x的数据包,准备接收序列号为x+1的包,所以ack=x+1,同时B告诉A自己的初始序列号,就是seq=y;第三条消息A告诉B收到了B的确认消息并准备建立连接,A自己此条消息的序列号是x+1,所以seq=x+1,而ack=y+1是表示A正准备接收B序列号为y+1的数据包。

seq是数据包本身的序列号;ack是期望对方继续发送的那个数据包的序列号。

实例分析:

A-->B
<Ether  dst=00:00:00:00:00:00 src=00:00:00:00:00:00 type=0x800 |<IP  version=4L ihl=5L tos=0x0 len=60 id=44337 flags=DF frag=0L ttl=64 proto=tcp chksum=0x8f88 src=127.0.0.1 dst=127.0.0.1 options=[] |<TCP  sport=43286 dport=827 seq=2359408397 ack=0 dataofs=10L reserved=0L flags=S window=43690 chksum=0xfe30 urgptr=0 options=[('MSS', 65495), ('SAckOK', ''), ('Timestamp', (24910396, 0)), ('NOP', None), ('WScale', 10)] |>>>, 
B-->A
<Ether  dst=00:00:00:00:00:00 src=00:00:00:00:00:00 type=0x800 |<IP  version=4L ihl=5L tos=0x0 len=60 id=0 flags=DF frag=0L ttl=64 proto=tcp chksum=0x3cba src=127.0.0.1 dst=127.0.0.1 options=[] |<TCP  sport=827 dport=43286 seq=4275296697 ack=2359408398 dataofs=10L reserved=0L flags=SA window=43690 chksum=0xfe30 urgptr=0 options=[('MSS', 65495), ('SAckOK', ''), ('Timestamp', (24910397, 24910396)), ('NOP', None), ('WScale', 10)] 
A-->B
<Ether  dst=00:00:00:00:00:00 src=00:00:00:00:00:00 type=0x800 |<IP  version=4L ihl=5L tos=0x0 len=52 id=44338 flags=DF frag=0L ttl=64 proto=tcp chksum=0x8f8f src=127.0.0.1 dst=127.0.0.1 options=[] |<TCP  sport=43286 dport=827 seq=2359408398 ack=4275296698 dataofs=8L reserved=0L flags=A window=43 chksum=0xfe28 urgptr=0 options=[('NOP', None), ('NOP', None), ('Timestamp', (24910397, 24910397))] |>>>, 


三此握手完成、连接建立以后,TCP连接的每个包都会设置ACK位

TCP FLAG 标记

基于标记的TCP包匹配经常被用于过滤试图打开新连接的TCP数据包。
  • TCP标记和他们的意义如下所列: * F : FIN - 结束; 结束会话 * S : SYN - 同步; 表示开始会话请求 * R : RST - 复位;中断一个连接 * P : PUSH - 推送; 数据包立即发送 * A : ACK - 应答 * U : URG - 紧急 * E : ECE - 显式拥塞提醒回应 * W : CWR - 拥塞窗口减少
 
  • 四次分手Four-way Handshake
1. (B) --> ACK/FIN --> (A)
2. (B) <-- ACK <-- (A)
3. (B) <-- ACK/FIN <-- (A)
4. (B) --> ACK --> (A)
注意: 由于TCP连接是双向连接, 因此关闭连接需要在两个方向上做。ACK/FIN 包(ACK 和FIN 标记设为1)通常被认为是FIN(终结)包.然而, 由于连接还没有关闭, FIN包总是打上ACK标记. 没有ACK标记而仅有FIN标记的包不是合法的包,并且通常被认为是恶意的
  • 连接复位Resetting a connection
四次握手不是关闭TCP连接的唯一方法. 有时,如果主机需要尽快关闭连接(或连接超时,端口或主机不可达),RST (Reset)包将被发送. 注意在,由于RST包不是TCP连接中的必须部分, 可以只发送RST包(即不带ACK标记). 但在正常的TCP连接中RST包可以带ACK确认标记。
注意:RST包是可以不要收到方确认的
  • 无效的TCP标记Invalid TCP Flags
到目前为止,你已经看到了 SYN, ACK, FIN, 和RST 标记. 另外,还有PSH (Push) 和URG (Urgent)标记.
最常见的非法组合是SYN/FIN 包. 注意:由于 SYN包是用来初始化连接的, 它不可能和 FIN和RST标记一起出现. 这也是一个恶意攻击.
由于现在大多数防火墙已知 SYN/FIN 包, 别的一些组合,例如SYN/FIN/PSH, SYN/FIN/RST, SYN/FIN/RST/PSH。很明显,当网络中出现这种包时,很你的网络肯定受到攻击了。
别的已知的非法包有FIN (无ACK标记)和"NULL"包。如同早先讨论的,由于ACK/FIN包的出现是为了关闭一个TCP连接,那么正常的FIN包总是带有 ACK 标记。"NULL"包就是没有任何TCP标记的包(URG,ACK,PSH,RST,SYN,FIN都为0)。
到目前为止,正常的网络活动下,TCP协议栈不可能产生带有上面提到的任何一种标记组合的TCP包。当你发现这些不正常的包时,肯定有人对你的网络不怀好意。

抓包分析TCP的三次握手和四次握手

问题描述:        在上一遍对android设备的抓包中提到了,服务器的开发人员需要我bug重现然后提供抓包给他们分析,所以抓好包自己也试着分析了一下。发现里面全是一些TCP协议和HTTP协议。...
  • u013136708
  • u013136708
  • 2016年01月30日 14:31
  • 4003

通俗理解TCP/IP协议三次握手与四次分手流程

三次握手流程 客户端发个请求“开门呐,我要进来”给服务器服务器发个“进来吧,我去给你开门”给客户端客户端有很客气的发个“谢谢,我要进来了”给服务器 四次挥手流程 客户端发个“时间不早...
  • Special23
  • Special23
  • 2017年01月06日 14:07
  • 1395

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

Wireshark简介 更多有关Wireshark的教程、软件下载等,请见:http://www.52im.net/thread-259-1-1.html,本文只作简要介绍。 1Wir...
  • yanxi252515237
  • yanxi252515237
  • 2016年07月19日 14:39
  • 5779

TCP的三次握手四次分手详解

tcp的三次握手详解 1.客户端向服务器端发送连接请求,生成syn=1的状态包和随机顺序包seq=#.syn=1表示请求连接并且进入syn_send状态。 2.服务器接收到syn=1,生成确认包a...
  • return_cc
  • return_cc
  • 2017年06月21日 23:36
  • 247

简析TCP的三次握手与四次分手

TCP是什么? 具体的关于TCP是什么,我不打算详细的说了;当你看到这篇文章时,我想你也知道TCP的概念了,想要更深入的了解TCP的工作,我们就继续。它只是一个超级麻烦的协议,而它又是互联网的基础,也...
  • LIU_YANZHAO
  • LIU_YANZHAO
  • 2017年07月20日 14:09
  • 225

简析TCP的三次握手与四次分手【转载】

TCP是什么?具体的关于TCP是什么,我不打算详细的说了;当你看到这篇文章时,我想你也知道TCP的概念了,想要更深入的了解TCP的工作,我们就继续。它只是一个超级麻烦的协议,而它又是互联网的基础,也是...
  • u013777351
  • u013777351
  • 2015年09月09日 21:19
  • 407

简析TCP的三次握手与四次分手

TCP是什么? 具体的关于TCP是什么,我不打算详细的说了;当你看到这篇文章时,我想你也知道TCP的概念了,想要更深入的了解TCP的工作,我们就继续。它只是一个超级麻烦的协议,而它又是互联网的基...
  • u011278704
  • u011278704
  • 2016年05月14日 19:59
  • 97

TCP三次握手、四次分手、状态变化

tcp状态: LISTEN:侦听来自远方的TCP端口的连接请求 SYN-SENT:再发送连接请求后等待匹配的连接请求 SYN-RECEIVED:再收到和发送一个连接请求后等待对方...
  • tian_110
  • tian_110
  • 2015年01月05日 20:12
  • 386

[详解]TCP三次握手,四次分手

TCP是TCP/IP体系中非常复杂的一个协议。下面首先介绍TCP最主要的特点: TCP是面向连接的运输层协议。这就是说,应用程序在使用TCP协议之前,必须先建立TCP连接。在传送数据完成后,必须释放...
  • leixiaolan
  • leixiaolan
  • 2014年04月19日 20:15
  • 786

通俗理解TCP/IP协议三次握手与四次分手流程

三次握手流程 客户端发个请求“开门呐,我要进来”给服务器服务器发个“进来吧,我去给你开门”给客户端客户端有很客气的发个“谢谢,我要进来了”给服务器 四次挥手流程 客户端发个“时间不早...
  • Special23
  • Special23
  • 2017年01月06日 14:07
  • 1395
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:TCP 三次握手,四次分手
举报原因:
原因补充:

(最多只允许输入30个字)