Open zonglang opened 5 years ago
tcp是全双工、支持半关闭、可靠的传输协议
为了保证全双工通信可行,
第一次和第二次握手证明client端向server端通信可行; 第二次和第三次握手证明server端向client端通信可行;
有一种情况:已经失效的连接请求(由于在网络结点中滞留太久)突然又传送到服务器,从而产生错误
所以:这种情况下,两次握手机制会让服务器端认定连接已经建立,浪费资源等待
三次本身就是四次简化过来的
为了保证半关闭可行
半关闭指的是一边停止发送数据,另一边可以继续发送数据
第一次和第二次挥手,说明client端不再向server端发送数据 第三次和第四次挥手,说明server端不再向client端发送数据
因为第二次和第三次挥手不能合并,client端关闭时,server端不一定关闭
由于网络信道是不可信的,可能发生丢包、错包、乱序的现象
采用超时重传的方法解决
检测出来后直接丢弃
通过seq确定包的顺序
附tcp连接流程图:
三次握手
为什么是三次
为了保证全双工通信可行,
第一次和第二次握手证明client端向server端通信可行; 第二次和第三次握手证明server端向client端通信可行;
为什么不是两次
有一种情况:已经失效的连接请求(由于在网络结点中滞留太久)突然又传送到服务器,从而产生错误
所以:这种情况下,两次握手机制会让服务器端认定连接已经建立,浪费资源等待
为什么不是四次
三次本身就是四次简化过来的
四次挥手
为什么是四次
为了保证半关闭可行
第一次和第二次挥手,说明client端不再向server端发送数据 第三次和第四次挥手,说明server端不再向client端发送数据
为什么不是三次
因为第二次和第三次挥手不能合并,client端关闭时,server端不一定关闭
丢包
采用超时重传的方法解决
错包
检测出来后直接丢弃
乱序
通过seq确定包的顺序