前言
- 计算机网络基础中,
TCP
协议建立连接 & 释放连接时的三次握手、四次挥手十分重要 - 今天carson将图文解析
TCP
链接的三次握手 & 四次挥手,包学包会包易懂!
1. TCP建立连接:三次握手
1.1 示意图
示意图1.2 流程解析
示意图成功进行TCP的三次握手后,就建立起一条TCP连接,即可传送应用层数据。需要注意的是:
- 因
TCP
提供的是全双工通信,故通信双方的应用进程在任何时候都能发送数据 - 三次握手期间,任何1次未收到对面的回复,则都会重发
1.3 特别说明:为什么TCP建立连接需三次握手?
-
结论
防止服务器端因接收了早已失效的连接请求报文,从而一直等待客户端请求,最终导致形成死锁、浪费资源 -
具体描述
SYN洪泛攻击:
- 从上可看出:服务端的TCP资源分配时刻 = 完成第二次握手时;而客户端的TCP资源分配时刻 = 完成第三次握手时
- 这就使得服务器易于受到
SYN
洪泛攻击,即同时多个客户端发起连接请求,从而需进行多个请求的TCP连接资源分配
2. TCP释放连接:四次挥手
2.1 示意图
示意图2.2 流程解析
示意图2.3 特别说明
说明1:为什么TCP释放连接需四次挥手?
- 结论
为了保证通信双方都能通知对方 需释放 & 断开连接
即释放连接后,都无法接收 / 发送消息给对方
- 具体描述
(延伸疑问)说明2:为什么客户端关闭连接前要等待2MSL时间?
- 即
TIME - WAIT
状态的作用是什么;MSL
= 最长报文段寿命(Maximum Segment Lifetime
)
- 原因1:为了保证客户端发送的最后1个连接释放确认报文 能到达服务器,从而使得服务器能正常释放连接
- 原因2:防止 上文提到的早已失效的连接请求报文 出现在本连接中
客户端发送了最后1个连接释放请求确认报文后,再经过2MSL
时间,则可使本连接持续时间内所产生的所有报文段都从网络中消失。
即 在下1个新的连接中就不会出现早已失效的连接请求报文
3. 总结
- 本文全面讲解了 计算机网络中
TCP
协议最重要的三次握手 & 四次挥手 - 下面我将继续讲解 计算机网络的基础知识,感兴趣的同学可以继续关注本人简书:Carson_Ho的简书
请点赞!因为你的鼓励是我写作的最大动力!
相关文章阅读
Android开发:最全面、最易懂的Android屏幕适配解决方案
Android事件分发机制详解:史上最全面、最易懂
Android开发:史上最全的Android消息推送解决方案
Android开发:最全面、最易懂的Webview详解
Android开发:JSON简介及最全面解析方法!
Android四大组件:Service服务史上最全面解析
Android四大组件:BroadcastReceiver史上最全面解析
欢迎关注Carson_Ho的简书!
不定期分享关于安卓开发的干货,追求短、平、快,但却不缺深度。
网友评论