计算机网络:三次握手四次挥手

ip是传输层协议,解决主机与主机之间链接的问题。 Tcp/Udp是网络层协议,解决两个进程之间端到端通讯的问题。 Synchronize Sequence Numbers SYN:同步序列编号(Synchronize Sequence Numbers)。是TCP/IP创建链接时使用的握手信号。 ACK (Acknowledgement)便是确认字符,在数据通讯中,接收站发给发送站的一种传输类控制字符。表示发来的数据已确认接收无误。 学前准备:大写ACK和小写ack的区别 https://cloud.tencent.com/info/47be7829f802a6edca6e834720e12d95.html http://www.noobyard.com/article/p-eyqlbiwb-gg.htmlhtml

Client端和Server端各个状态意义以下:服务器

  • 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 - 没有任何链接状态;

三次握手:网络

  • 1.初始状态:Client处于CLOSE状态,Server端处于LISTEN状态。
  • 2.第一次握手:Client发送报文,报文首部同部位SYN=1,初始化一个序列号seq=x,此时Client进入SYN_SEND状态,等待Server确认。
  • 3.第二次握手:Server端收到请求报文后,若是赞成链接,则须要发出确认报文。此时报文中确认位ACK=1,同部位SYN=1,设置确认序列号ack=x+1,同时本身也须要初始化一个序列号为seq=y;此时Server端进入SYN_RCVD(同步收到)状态。
  • 4第三次握手:Client收到确认后,继续向服务器端发送去确认。此时确认位ACK=1,确认序列号ack=y+1;把本身的序列号seq设置成seq=x+1;此时,TCP链接创建,客户端进入ESTABLISHED状态。
  • 5.当服务器收到客户端确认以后也进入ESTABLISHED状态。

四次挥手:.net

  • 1.Client 发送报文,FIN=1,设置序列号seq=u,此时Client端进入FIN-WAIT-1状态。
  • 2.Server端收到报文,发送确认报文,其中ACK=1,确认序列号ack=u+1,设置本身的序列号seq=v,此时服务器端进入CLOSE-WAIT状态。此时客户端已经不会向服务器端发送数据,而服务器端可能还有数据进行发送,客户端依然会接受。
  • 3.客户端收到服务器端确认请求,后将本身的状态更新为FIN-WATI-2状态。
  • 4.服务器端将最后的数据发送继续发送直至完成后,向客户端发送报文,其中FIN=1,ack=u+1(仍是上一次的序列号),设置序列号seq=w,此时服务器处于LAST-ACK(最后确认状态),等等客户端的确认。
  • 5.客户端收到报文后,须要发出确认,ACK=1,ack=w+1,序列号为seq=u+1,此时客户端进入TIME-WATI(时间等待状态),此时TCP链接尚未释放,必须通过2*MSL(最长报文段寿命)后的时间后,才能进入CLOSE状态。
  • 6.服务器收到报文,马上进入CLOSE状态。服务器结束TCP链接的时间要比客户端早一些。