274

问答题 274 /393

请你说一说tcp数据段都包括什么?tcp三次握手四次挥手过程、为什么挥手是四次

参考答案

参考回答:

TCP数据段:

源端口(Source port) 和 目的端口(Destination port):

字段标明了一个连接的两个端点用来跟踪同一时间内通过网络的不同会话。一般每个端口对应一个应用程序

序列号(Sequence number):字节号 (32 位),表示一个字节的编号

初始序列号ISNs(initial sequence numbers ):随机产生的

SYN:携带了ISNs 和SYN 控制位的数据段

确认号(Acknowledgement number):期望接收的字节号 (32位)

TCP段头长度(TCP header length): TCP段头长度, 单位32位(4字节)

保留域/字段:逐步启用,如做拥塞控制等

URG:当紧急指针使用的时候,URG 被置为1。紧急指针是一个对于当前序列号的字节偏移量,标明紧急数据从哪里开始

当URG=1时,表明有紧急数据,必须首先处理收方收到这样的数据后,马上处理,处理完后恢复正常操作即使win=0,也可以发送这样的数据

ACK:为1 表示确认号有效,为0 标明确认号无效

PSH:表示这是带有PUSH标志的数据,接收方收到这样的数据,应该立刻送到上层,而不需要缓存它

RST:被用来重置一个已经混乱的连接

SYN:用在连接建立过程中

SYN=1,ACK=0 连接请求,当SYN=1,ACK=1 连接接受

FIN: 被用来释放连接,它表示发送方已经没有数据要传输了,但是可以继续接收数据

Window size: 告诉对方可以发送的数据字节数,从确认字节号开始(决定于接收方)

Checksum:提供额外的可靠性,校验的范围包括头部、数据和概念性的伪头部

选项域:选项域提供了一种增加基本头没有包含内容的方法

Tcp三次握手:

1、第一次握手,客户端发送syn=j到服务器

2、服务器返回syn=k,ack=j+1,

3、客户端再向服务器发送ack=k+1;

三次握手结束,客户端和服务器建立连接

TCP四次挥手:

1、客户端发送fin=j包关闭连接

2、服务器返回ack=j+1

3、服务器发送fin=k包关闭连接

4、客户端返回ack=k+1

四次挥手结束,连接断开

为什么连接三次,断开连接四次?

在连接中,服务器的ack和syn包是同时发送的,而在断开连接的时候,服务器向客户端发送的ack和fin包是分两次发送的,因为服务器收到客户端发送的fin包时,可能还有数据要传送,所以先发送ack,等数据传输结束后再发送fin断开这边的连接。