每天一个前端面试题之 TCP三次握手
传输控制协议(TCP,Transmission Control Protocol)是一种面向连接的、可靠的、基于字节流的传输层通信协议。在TCP协议中,主动发起请求的一端为客户端,被动连接的一端称为服务端。不管是客户端还是服务端,TCP连接建立完成后都能发送和接收数据,所以TCP也是一个全双工的协议。
文章目录
一、TCP标志符集头字段
1.标志符
URG(urgent 紧急)
: 表示本数据包的数据部分包含紧急信息,是最高优先级数据报文,此时紧急指针有效。用来保证TCP连接不被中断,并且督促中间层设备要尽快处理这些数据;
ACK(acknowledgement 确认)
: 表示确认号字段是否有效,0为无效,1为有效。
PSH(push 传送)
: 表示数据到达接收端后,接收端应该立即将数据push给应用层,而不是等到缓冲区满后再提交。
RST(reset 重置)
: 连接复位请求。表示当前TCP连接出现严重问题,可能需要重新建立TCP连接。也可以用于拒绝非法的报文段和拒绝连接请求。
SYN(synchronous 同步)
:表示同步序号,用来建立连接。SYN=1,ACK=0表示这是一个连接请求报文,SYN=1,ACK=1表示这是一个同意建立连接的应答报文。
FIN(finish 结束)
: 表示数据传送完成,可以释放连接。
2.部分头字段
Seq(Sequence number 序列号码)
:32位,用来标识从TCP发送端向TCP接收端发送的数据字节流,它表示在这个报文段中的的第一个数据字节在数据流中的序号;它是随机生成的,保证了TCP传输的报文都是有效的,主要用来解决网络报乱序的问题;
Ack(Acknowledge number 确认号码)
:32位,表示上一个序号的数据已经收到,还包含发送确认的一端所期望收到的下一个序号,因此,确认序号