码迷,mamicode.com
首页 > 其他好文 > 详细

TCP三次握手

时间:2014-08-05 22:08:10      阅读:206      评论:0      收藏:0      [点我收藏+]

标签:style   blog   http   io   strong   2014   ar   div   

TCP三次握手(Three-way Handshake)
 
  三次握手指的是建立一个TCP连接时,需要客户端和服务器总共发送3个包。其目的是连接服务器指定端口,建立TCP连接,并同步连接双方的序列号和确认号并交换 TCP 窗口大小信息。在socket编程中,客户端执行connect()时,将触发三次握手。下图是三次握手过程:
bubuko.com,布布扣
 
TCP三次握手过程
 
第一次握手:
  客户端发送一个SYN包(SYN标志位置1,SYN序号X)到服务器,并进入SYN_SEND状态。
bubuko.com,布布扣
 
第二次握手:
  服务器收到SYN包,发送ACK+SYN包(SYN标志位置1,ACK标志位置1,ACK序号为X+1,SYN序号Y)到客户端,此时服务器 进入SYN_RECV状态。
bubuko.com,布布扣
 
 
第三次握手:
  客户端再次发送ACK+SYN包(SYN标志位置0,ACK标志位置1,ACK序号Y+1)。此包发送完毕,客户端和服务器进入ESTABLISHED状态,完成三次握手。
bubuko.com,布布扣
 
  通过三次握手,客户端和服务器端建立起可靠的双工的连接。至于为什么需要进行三次握手才能建立起可靠的双工的连接,我们可以这样理解:
  第一次握手和第二次握手(也可以认为是第一次握手的SYN,第二次的ACK)是为了保证服务器端能够接受到客户端的信息并能够做出正确的应答;第二次握手和第三次握手(也可以认为是第二次握手的SYN,第三次的ACK)是为了保证客户端能够接受到服务器端的信息并能够正确的应答。
 
  附上TCP四次挥手结束连接图:
bubuko.com,布布扣
 

TCP三次握手,布布扣,bubuko.com

TCP三次握手

标签:style   blog   http   io   strong   2014   ar   div   

原文地址:http://www.cnblogs.com/PursueFreedom/p/TCP.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!