计算机网络-详解TCP三次握手与四次挥手

1.计算机网络体系结构图

在这里插入图片描述

2.数据链路层

  • PPP协议:互联网用户通常需要连接到某个ISP才能接入到互联网。PPP协议就是用户计算机和ISP进行通信时所使用的数据链路层协议(拨号)
  • 网卡:串行到并行的转换,数据缓存
  • MAC地址:固化在适配器的ROM中

3、网络层

  • 地址解析协议ARP IP地址到MAC地址的映射
  • 网际控制协议ICMP
  • 网际组管理协议IGMP

4、运输层

TCP

TCP报文首部格式

在这里插入图片描述

三次握手

在这里插入图片描述

  • 1、首先创建传输控制块TCB,然后发送SYN报文段(即SYN等于1)同时选择一个初始序号seq=x,SYN报文段不能携带数据,但要消耗一个序号,然后客户端进程进入同步已发送状态

  • 2、B收到连接请求报文后,如同意连接,则向A发送确认。确认报文中SYN位和ACK位 都置为1,确认号ack=x+1,同时为自己选择一个初始序号seq=y。这时B进入同步已收到状态

  • 3、客户端A收到B的确认后,还要再向B给出确认,确认报文ACK置1,确认号ack=y+1,自己的序号seq=x+1然后A进入已连接状态

四次挥手

在这里插入图片描述

  • 1、A进程先想B发出释放报文段,并停止发送数据,主动关闭TCP连接,释放报文段中FIN置1,seq=u(等于它前面报文段中最后一个字节的序号+1),这里TCP规定FIN报文段即使不携带数据,也要消耗一个序号。这是A进入FIN-WAIT1(终止等待1) 状态

  • 2、B收到连接报文段后即发出确认,然后通知应用进程的上层,因而A->B这个方向的连接就释放了,这个时候TCP连接处于半关闭状态,即A已经没有数据要发了,若B发送数据,A仍要接收。这个状态可能会持续一段时间。A收到来自B的确认报文后进入FIN-WAIT-2阶段

  • 3、若B没有要向A发送的数据,其应用进程就通知TCP释放连接。这是B发出释放报文段,然后进入LAST-ACK(最后确认状态)等待A确认

  • 4、在A收到确认报文段后,必须对此发出确认。然后进入时间等待状态,经过2MSL后,A才进入CLOSED状态,MSL是指最长报文寿命

为什么要三次握手

  • 三次握手的目的是建立可靠的通信信道,说到通讯,简单来说就是数据的发送与接收,而三次握手最主要的目的就是双方确认自己与对方的发送与接收是正常的。

  • 第一次握手:Client 什么都不能确认;Server 确认了对方发送正常

  • 第二次握手:Client 确认了:自己发送、接收正常,对方发送、接收正常;Server 确认了:自己接收正常,对方发送正常

  • 第三次握手:Client 确认了:自己发送、接收正常,对方发送、接收正常;Server 确认了:自己发送、接收正常,对方发送接收正常

  • 所以三次握手就能确认双发收发功能都正常,缺一不可。

参考资料
《计算机网络》谢希仁
http://www.noobyard.com/article/p-eyqlbiwb-gg.html