标志位含义解释
SYN=1 请求建立连接
ACK=1 确认序号有效
FIN=1 请求释放连接
seq=x 报文序号
ack=x+1 收到报文后的确认序号
三次握手
四次挥手
补充说明:
1)TCP三次握手一定可靠吗?
不一定。
1)三次握手比两次握手更可靠,但并非完全可靠。更多次握手也无法
使连接更加可靠了,因此选择了三次握手。
2)没有绝对完全可靠的通信协议,从时间成本空间成本可靠度来讲,
三次握手是最优解。
2)为什么握手是3次,挥手必须是4次?
在三次握手中,服务端收到客户端的SYN连接请求后,可以直接一次发送SYN和ACK报文,其中ACK表示确认收到请求,SYN则表示同步,二者缺一不可,但可以同时发给客户端。
在四次挥手中,服务端收到客户端断开连接请求时,也同样要发送FIN和ACK报文,ACK表示确认收到报文,FIN表示同意结束连接,但在这个过程中,双方可能依旧存在数据传输,因此服务端需要把相关数据全部传输完,才能发送FIN断开请求报文。因此服务端会先发送ACK报文表示自己接收到报文,处理完所有任务,再发送FIN表示请求处理完成,双方断开连接。
3)为什么不能两次握手?
如果没有第三次握手,那么
1)假设客户端因为超时没有向服务端发送报文,那么服务端的端口会一直打开,造成服务器系统资源的浪费。
2)已经失效的客户端发送的报文传输到服务端,服务端以为是客户端发出的有效请求,接收后产生错误。