文章目录
1. TCP连接的建立-三次握手:
1.1、相关的符号说明
确认号字段(ack):占四个字节,是期望收到对方的下一个报文段的数据的第一个字节的序号。若ack = N,则表明到序号N-1为止的所有数据都已正确收到。
确认位(ACK):只有当ACK=1时确认号字段才有效。当ACK=0时,确认号无效。
同步位(SYN):同步 SYN=1 表示这是一个连接请求或连接接收报文。当SYN=1,ACK=0时,表明这是一个连接请求报文,对方若同意建立连接,则在响应报文中使用SYN=1,ACK=1。即,SYN=1就表示这是一个连接请求或连接接收报文。
TCP的连接的建立采用客户/服务器的方式。主动发起连接建立的应用进程叫做客户机,而被动等待连接建立的应用进程叫做服务器。连接的建立分为3步,如下图所示。
1.2、三次握手操作(建立客户端到服务器的连接)
第一步:客户机的TCP首先向服务器的TCP发送一个连接请求报文段。这个特殊的报文段中不含应用层数据,其首部中的SYN标志位被置为1。另外,客户机会随机选择一个起始序列号 seq = x(连接请求报文不携带数据,但要消耗掉一个序号)。
第二步:服务器的TCP收到连接请求报文段后,如同意建立连接,就向客户机发回确认,并未该TCP连接分配TCP缓存和变量。在确认报文段中,SYN和ACK位都被置为1,确认号字段的值为x+1,并且服务器随机产生起始序列号 seq = y(确认报文不携带数据,但也要消耗掉一个序号)。确认报文段同样不包含应用层数据。
第三步:当客户机收到确认报文段后,还要向服务器给出确认,并且也要给该连接分配缓存和变量。这个报文段的ACK标志位被置为1,序号字段为 x+1,确认号字段 ack = y+1。该报文段