TCP报文
较为重要的字段
序号(sequence number)
Seq序号,占32位,用来标识从TCP源端向目的端发送的字节流,发起方发送数据时对此进行标记。
确认序号(acknowledgement number):
Ack序号,占32位,只有ACK标志位为1时,确认序号字段才有效
标志位(Flags):
URG:紧急指针
ACK:确认序号有效,确认接收到消息;
PSH:接收方应该尽快将这个报文交给应用层。
RST:重置连接。
SYN:发起一个新连接。
FIN:释放一个连接。
TCP的三次握手
首先客户端先向服务器端发送一个TCP报文
标记位为SYN=1,表示为“请求建立连接”;
序号为Seq=X,传输信息的时候每个数据包的序号;
服务器端收到来自客户端的TCP报文之后,并返回一段报文
标志位为SYN=1;ACK=1,表示“告诉客户端,服务器收到了你请求建立连接的数据”;
序号为Seq=y;返回一个收到信息的数据包 并给其标序号为y;
确认号为Ack=x+1,表示收到序号为Seq的客户端信息并将其值加1作为自己确认号Ack的值
客户端接收到来自服务器确认收到数据的TCP报文后并返回一段TCP报文
标志位为ACK=1,表示“确认收到服务器端同意连接的信号”;
序号为Seq=x+1,表示收到服务器端的确认号Ack,并将其值作为自己的序号值;
确认号为Ack=y+1,表示收到服务器端序号Seq,并将其值加1作为自己的确认号Ack的值;
成功建立连接