TCP三次握手:
1 主机A通过向主机B 发送一个含有同步序列号的标志位的数据段给主机B ,向主机B 请求建立连接,通过这个数据段,主机A告诉主机B 两件事:我想要和你通信;你可以用哪个序列号作为起始数据段来回应我.--------发SYN
2 主机B 收到主机A的请求后,用一个带有确认应答(ACK)和同步序列号(SYN)标志位的数据段响应主机A,也告诉主机A两件事:我已经收到你的请求了,你可以传输数据了;你要用哪佧序列号作为起始数据段来回应我.------返回ACK和SYN
3 主机A收到这个数据段后,再发送一个确认应答,确认已收到主机B 的数据段:"我已收到回复,我现在要开始传输实际数据了.--------再发ACK
有人想是不是当三次握手后,就开始建立了连接了呢?
这就要分请求者和被请求者。请求者是在收到SYN和ACK后就开始建立连接,而被请求者是在第三次握手后才建立连接。
四次断开:
由于TCP连接是全双工的,因此每个方向都必须单独进行关闭。这原则是当一方完成它的数据发送任务后就能发送一个控制位FIN来终 止这个方向的连接。收到一个 FIN只意味着这一方向上没有数据流动,一个TCP连接 在收到一个FIN后仍能发送数据。首先进行关闭的一方将执行主动关闭,而另一方执行被动关闭。
1 当主机A完成数据传输后,将控制位FIN置1,提出停止TCP连接的请求
2 主机B收到FIN后对其作出响应,确认这一方向上的TCP连接将关闭,将ACK置1
3 由B 端再提出反方向的关闭请求,将FIN置1
4 主机A对主机B的请求进行确认,将ACK置1,双方向的关闭结束.
ACK: TCP报头的控制位之一,对数据进行确认.确认由目的端发出,用它来告诉发送端这个序列号之前的数据段都收到了.比如,确认号为X,则表示前X-1个数据段都收到了,只有当ACK=1时,确认号才有效,当ACK=0
时,确认号无效,这时会要求重传数据,保证数据的完整性.
SYN: 同步序列号,TCP建立连接时将这个位置1
FIN: 发送端完成发送任务位,当TCP完成数据传输需要断开时,提出断开连接的一方将这位置1
当我们用netsat –a命令时,我们看到state一栏,上面有LISTEN,SYN-SENT,SYN-RECEIVED,ESTABLISHED,FIN-WAIT-1,FIN-WAIT-2,CLOSE- WAIT,CLOSING,LAST-ACK,TIME-WAIT和CLOSED这些到底是什么呢?到底是属于三次握手还是四次断开呢?
LISTEN - 侦听来自远方TCP端口的连接请求;
SYN-SENT -在发送连接请求后等待匹配的连接请求;
SYN-RECEIVED - 在收到和发送一个连接请求后等待对连接请求的确认;
ESTABLISHED- 代表一个打开的连接,数据可以传送给用户;
FIN-WAIT-1 - 等待远程TCP的连接中断请求,或先前的连接中断请求的确认;
FIN-WAIT-2 - 从远程TCP等待连接中断请求;
CLOSE-WAIT - 等待从本地用户发来的连接中断请求;
CLOSING -等待远程TCP对连接中断的确认;
LAST-ACK - 等待原来发向远程TCP的连接中断请求的确认;
TIME-WAIT -等待足够的时间以确保远程TCP接收到连接中断请求的确认;
CLOSED - 没有任何连接状态;
客户端TCP状态迁移:
CLOSED->SYN_SENT->ESTABLISHED->FIN_WAIT_1->FIN_WAIT_2->TIME_WAIT->CLOSED
服务器TCP状态迁移:
CLOSED->LISTEN->SYN收到 ->ESTABLISHED->CLOSE_WAIT->LAST_ACK->CLOSED
参考文献:http://lavafree.iteye.com/blog/700885
分享到:
相关推荐
此文的档献给那些不太明白TCP的三次握手,四次断开的鞋同,希望对你们有所帮助
三次握手和四次挥手详解,觉得本博文写的很好,分享给正在学习或者学习完还对TCP的三次握手和四次挥手还不熟悉的人,相信看完之后就能明白了。
基于ajax请求过程分析Http协议的三次握手和四次挥手过程。 基于ajax请求过程分析Http协议的三次握手和四次挥手过程 基于ajax请求过程分析Http协议的三次握手和四次挥手过程 基于ajax请求过程分析Http协议的三次握手...
该文档详细描述了wireshark抓包分析tcp三次握手四次挥手详解及网络命令,亲自整理,适合新手借鉴
详解TCP三次握手和四次挥手
TCP 三次握手和四次挥手,面试题详解,图文并茂,欢迎技术交流
TCP三次握手与四次挥手.pdf
TCP通信的三次握手和四次挥手详解
Wireshark抓包分析TCP“三次握手,四次挥手”.doc
TCP三次握手和四次挥手详解.docx
在TCP/IP协议中,建立连接协议是三次握手,关闭连接是四次握手。
TCP三次握手四次挥手的过程详解.mdTCP三次握手四次挥手的过程详解.mdTCP三次握手四次挥手的过程详解.md
通过图解,简单明了的介绍了tcp三次握手/四次挥手的全过程,解释为什么建立连接协议是三次握手,而关闭连接却是四次握手
TCP三次握手PPT,TCP三次握手,TCP三次握手课件
就给出了一张图显示的是TCP三次握手建立、四次握手断开与socket函数对应 如:socket connect()建立对应于SYN ,而connect()返回值 与syn 对应
案例测试TCP的三次握手和四次挥手过程。包括C语言写的服务器端程序以及c#写的客户端程序,以及使用wirkshark进行的网络抓包分析TCP三次握手四次挥手的过程。
tcp三次握手四次断开,网络yum源
使用wireshark抓包分析,并且将特殊字段进行分析。
TCP 三次握手机制详解 TCP 三次握手机制是TCP/IP协议中的一种面向连接的可靠传输机制,它是传输层中的核心机制。在网络通信中,TCP 三次握手机制保证了数据的可靠传输和面向连接的通信。 什么是 TCP 三次握手机制...
描述TCP三次握手,四次挥手的过程的图片