TCP链接中的三次握手和四次挥手

TCP链接中的三次握手和四次挥手

TCP/IP(Transmission Control Protocol/Internet Protocol,传输控制协议/网际协议)是指可以在多个不一样网络间实现信息传输的协议簇。TCP/IP协议不单单指的是 TCPIP两个协议,而是指一个由 FTPSMTP、TCP、 UDP、IP等协议构成的协议簇, 只是由于在TCP/IP协议中TCP协议和IP协议最具表明性,因此被称为TCP/IP协议。

1.协议简介

TCP/IP协议定义了一个在因特网上传输的包,称为IP数据报,IP数据报由首部和数据两部分组成,IP报头中包含大量的信息,如源IP地址,目的IP地址,数据报长度,IP版本号等,数据部分呢保存传输层的数据,如保存TCP、UDP、ICMP等数据。服务器

image-20210121135755953

2.三次握手

在了解三次握手以前,咱们须要先看TCP首部两个关键的属性——序号和确认号。序号字段表明报文端要发送的数据的第一个字节的序号;通讯的任何一方收到消息都要发送一个确认报文,确认报文就须要一个确认号,它的值表示指望收到下一个报文段的序号值,也就是说在确认报文中确认号才会生效。网络

如何标识是否为确认报文呢?这里要关注六个标志位,分别是URG、ACK、PSH、PST、SYN、FIN。在这六个标志位中,又要重点关注三个,分别是spa

  1. ACK:当ACK=1==确认号字段有效,为确认报文==;当ACK=0,确认号无效
  2. SYN:同步比特SYN=1,表示这是一个==链接请求或请求接受报文==。
  3. FIN:用来==释放一个链接==。当FIN=1,表示次报文段的发送端的数据已经发送完毕了,用来释放链接。

image-20210121141844433

第一次握手时,Client向Server发送一个链接请求,须要设置SYN=1,同时发送本身的序列号Seq到服务器。第二次握手,为服务器收到请求后,发送一个确认报文,ACK=1,同时发送一个确认号,是指望收到对方的下一个报文段的数据的第一个字节的序号,ACKnum=X+1,+1所示收到 SYN标识。第三次握手为客户端收到服务器的响应报文,他也要回复确认报文,确认报文ACK=1,ACKnum=Y+1rem

3.四次挥手

image-20210121142349034

第一次挥手为客户端发送FIN=1,表示本身没有数据能够发送了,其次携带本身的序列号。第二次挥手为服务器端确认收到客户端的FIN包,发送一个确认包,代表本身接收到了客户端的关闭请求,可是这时并未准备好关闭链接。第三次挥手为服务器确认准备好关闭链接,这时发送FIN=1。第四次挥手为客户端收到服务端的关闭请求,发送一个确认包,服务器端收到这个请求后就关闭链接,再也不回应客户端,客户端会等待一个固定时间后,自动关闭。get