在TCP报文的报头中,有几个标志字段:
1、SYN:同步连接序号,TCP SYN报文就是把这个标志设置为1,来请求建立连接;
2、ACK:请求/应答状态。0为请求,1为应答;
3、FIN:结束连线。FIN为0是结束连线请求,FIN为1表示结束连线;
4、RST:连线复位,先断开连接,然后重新建立连接;
5、PSH:通知协议栈尽快把TCP数据提交给上层程序处理;
(因为这里面的有些东西比如syn,ack的太抽象了,就以图片形式展开理解。)
为啥是三次握手?
三次握手是用最少的次数确定客户端和服务端都有发送报文和收报文的能力。
第一次握手:客户端和服务器都处于CLOSED关闭状态,客户端将标志位SYN置为1,随机产生一个值seq=x,并将该数据包发给服务器,客户端进入SYN-SENT(同步已发送)状态。
第二次握手:服务端收到数据包后由标志物SYN=1得知客户端请求建立连接,服务端将标志位SYN和ACK都设置为1,确认号ack = x+1,随机产生一个值seq = y,并将该数据包发送给客户端以确认连接请求,服务端进入SYN-RCVD(同步收到)状态,此时操作系统为该TCP连接分配TCP缓存和变量;
第三次握手ÿ