一、TCP协议的三次握手

1、第一次握手:主机A向主机B发送一个SYN包并进入SYN_SEND状态,表示主机A申请发出一次连接,并等待B的确认。
2、第二次握手:主机B接收到SYN包后要回应主机A一个确认信息——ACK包,表示同意建立此连接,同时主机B还要向主机A发送一个SYN包,表示主机B也有建立连接的请求。此时主机B进入SYN_RECV状态。
3、第三次握手:主机A接收到主机B发送过来的SYN包和ACK包后还要向主机B发一个ACK包。A和B进入ESTABLISHED状态,包发送完毕。三次握手完成。计算机网络常见知识点小结(二)
需要注意的是,双方除了发送SYN包和ACK包之外还会发送一个序号seq,这个序号是A、B双方初始的序号,表示今后发送的数据包都是在这个序号上面的累加。首先主机A发送给主机B的seq=100作为连接建立时的初始序号,下面A再向B发送数据包时就是从101开始计数。同理,B也一样。
同时,与seq序号并列的还有一个ack序号,它是对对方传送数据的应答同时也是对对方下一次传输数据的期待。

二、TCP协议的四次挥手

1、第一次挥手:A的应用进程先向其TCP发出连接释放报文段,并停止再发送数据,主动关闭TCP连接。A把连接释放报文段首部的终止控制位FIN置1,其序号为seq=u,它等于前面所传过的数据的最后一个字节的序号加1。这时A进入FIN-WAIT-1,等待B确认。
2、第二次挥手:B收到连接释放报文段后即发出确认,确认号是ack=u+1,而这个报文段自己的序号是v,等于B前面已传送过的数据的最后一个字节的序号加1。然后B就进入CLOSE-WAIT状态。TCP服务器进程这时应通知高层应用进程,因而从A到B这个方向的连接就释放了,这时的TCP连接处于半关闭状态,即A已经没有数据要发送了,但B要发送数据,A仍要接受。
3、第三次挥手:A收到来自B的确认后,就进入FIN-WAIT-2状态,等待B发出的连接释放报文段。这时B发出的连接释放报文段必须使FIN=1,此时B的序号为w,并且B还必须重复上次已经发送过的确认号ack=u+1。这时B就进入了LAST-ACK状态,等待A的确认。
4、第四次挥手:A收到B的连接释放报文段后,必须对此发出确认。在确认报文段中把ACK置1,确认号ack=w+1,而自己的序号是seq=u+1(根据前面的TCP标准,前面发送过的FIN报文段要消耗一个序号)。然后自己进入到TIME-WAIT状态。此时必须经过时间等待定时器(TIME-WAIT),设置的时间2MSL后,A才进入到CLOSED状态。
计算机网络常见知识点小结(二)

相关文章:

  • 2021-08-21
  • 2021-05-09
  • 2021-10-16
  • 2021-11-14
猜你喜欢
  • 2021-05-19
  • 2021-11-13
  • 2022-01-07
  • 2021-11-13
  • 2021-10-31
  • 2021-11-11
相关资源
相似解决方案