TCP报文与三次握手四次挥手

2021-08-21  本文已影响0人  Mrfang1

TCP报文与三次握手四次挥手

1. TCP报文格式

964016-20160829215953168-1927861560.png

端口号

用来标识同一台计算机的不同的应用进程

TCP报文中的源端口号和目的端口号同IP数据报中的源IP与目的IP唯一确定一条TCP连接

序号和确认号

是TCP可靠传输的关键部分。

数据偏移/首部长度

4bits,4位

保留

6bits

控制位

窗口

滑动窗口大小,用来告知发送端接收端的缓存大小,以此控制发送端发送数据的速率,从而达到流量控制。窗口大小是一个16bit字段,因为窗口大小最大为65535

校验和

奇偶校验,此校验和是对整个TCP报文段,包括TCP头部和TCP数据,以16位字进行计算所得。由发送端计算和存储,由接收端进行校验。

紧急指针

只有当URG标志置1时紧急指针才有效。紧急指针是一个正的偏移量,和顺序号字段中的值相加表示紧急数据最后一个字节的序号

选项和填充

最常见的可选字段是最长报文大小,又称为MSS(Maximum Segment Size),每个连接方通常都在通信的第一个报文段(为建立连接而设置SYN标志为1的那个段)中指明这个选项,它表示本端所能接受的最大报文段的长度。选项长度不一定是32位的整数倍,所以要加填充位,即在这个字段中加入额外的零,以保证TCP头是32的整数倍。

数据部分

TCP 报文段中的数据部分是可选的。在一个连接建立和一个连接终止时,双方交换的报文段仅有 TCP 首部。如果一方没有数据要发送,也使用没有任何数据的首部来确认收到的数据。在处理超时的许多情况中,也会发送不带任何数据的报文段。

2.TCP三次握手

三次握手.png

TCP/IP协议是传输层的一个面向连接的安全可靠的传输协议。三次握手机制是为了保证能建立一个安全可靠的连接。

第一次握手是由客户端发起,客户端会向服务端发送一个报文,报文里面SYN位标志位置1,当服务端收到这个报文之后就知道客户端要发起一个新的连接,于是服务端会向客户端发送一个确认消息报文,确认消息报文中,ACK位置1。

以上两次握手后,客户端已经知道全部的信息,客户端可以向服务端发送消息,也可以收到服务端发送的消息。但是对于服务端而言,两次握手是不够的。因为到目前为止,服务端只知道一件事情,客户端发给服务端的消息服务端知道,但是服务端发给客户端的消息,客户端能不能收到未知,所以还要进行第三次握手。

第三次握手是,当客户端收到服务端发来的确认消息报文之后,还要继续给服务端一个回应,也是一个ACK位置1的确认消息。

通过以上三次连接以后,不论是服务端还是客户端,都彼此知道自己既能发送消息也能收到对方的消息,这时一个面向连接的安全可靠的连接就建立了。

3. TCP四次挥手

四次挥手.png

四次挥手机制也是客户端首先发起的:

客户端会发送一个报文,这个报文里面,FIN位标志位置1

当服务端收到这个报文后,服务端就知道了客户端想要断开连接,但是此时服务端不一定能做好准备,因为当客户端发起断开连接的消息时,对于服务端而言极有可能还有未发送完的消息还要继续发送,所以对于服务端而言它只能做一个消息确认,告诉客户端已经收到了将要断开连接的消息。

等待服务端做好准备以后,服务端会再向客户端发送一个FIN位置1的断开连接报文。这个报文表示服务端已经做好了断开连接的准备,此时客户端也要向服务端发送一个消息确认的报文。

一共有4次,通过这4次的相互沟通和连接,服务端和客户端都做好了断开连接的准备,此时连接就可以断开了。

上一篇 下一篇

猜你喜欢

热点阅读