服务时间:8:30-18:00

首页 >华为认证网

TCP会话的建立

发布时间:2023-03-01 11:17 字数:874字 阅读:91

TCP会话的建立,由于TCP是一个面向连接的协议,发送数据前需要先和接收者提前建立连接,连接通常被称为会话。TCP通过三次握手的可靠性机制来建立会话连接。所谓三次握手是指在TCP会话建立过程中总共交换了3个TCP报文,通过这3个报文保证了TCP会话建立过程中的可靠性。TCP三次握手建立过程如图1~图3所示。

在图1中,假设主机A需要向主机B发送数据,首先由主机A发起会话,向主机B发送一个设置SYN标志位的TCP报文,表示想和主机B建立连接,报文中的SEQ序列号字段会填充一个0~216范围内的随机数(只有SYN标志位置位的TCP报文中该字段才会填充一个随机数),图中SEQ序列号用0表示。

主机B收到SYN置位的TCP报文后,知道有人想和自己建立连接,于是主机B向主机A回复一个同时设置了SYN和ACK标志位的TCP报文,其中,ACK标志位表示主机B同意和主机A建立连接并确认主机A发送的TCP报文;SYN标志位表示主机B同时想和主机A建立连接。这是因为TCP是全双工模式,建立一个会话可以实现数据的双向发送。

TCP三次握手建立过程(一)

图1 TCP三次握手建立过程(一)

在报文中的SEQ序列号字段填充一个0~2^16范围内的随机数,主机B发送的序列号同样用0表示。确认序列号=接收到的序列号+数据长度,由于TCP报文的数据长度也算1字节,所以图2中的ACK SEQ为1(0+1)。通过确认序列号可以统计出已接收的数据总长度。

TCP三次握手建立过程(二)

图2 TCP三次握手建立过程(二)

主机A收到主机B发送的SYN+ACK后,回复一个ACK标志位置位的TCP报文进行确认。在回复的TCP报文中,SEQ序列号字段为1(0+1),由于主机A之前发送的SYN报文中的序列号为0,并且已经发送过1字节数据(TCP报文),所以现在的SEQ序列号为1。通过序列号字段可以统计出发送者已发送的数据总长度。ACK SEQ确认序列号=主机B的发送序列号+数据长度(1=0+1),如图3所示。

经过三次握手之后,主机A与主机B建立了TCP会话,最终实现数据的双向发送。

TCP三次握手建立过程(三)

图3 TCP三次握手建立过程(三)

  • 上一篇TCP报文格式