| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 网络协议 -> 三次握手和四次挥手幽默解释 -> 正文阅读 |
|
[网络协议]三次握手和四次挥手幽默解释 |
通过学习tcp/ip协议,对三次握手和四次挥手的个人认识通过这个幽默的方式来描述。 这个协议的核心思想是让我知道你已经知道了,重要的事情说三遍! 让我知道你已经知道了 让我知道你已经知道了 让我知道你已经知道了 1.三次握手 三次握手是建立tcp链接的过程,大概流程如下图 第一次握手:这个就是客户端向服务器发起连接请求,客户端跟服务器发送加好友请求(SYN=1),并且说聊上2块钱的天(seq=x) 第二次握手:让我知道你已经知道的核心思想从这儿开始体现。得让客户端知道服务器收没收到加好友请求,服务器回复客户端同意加你好友(SYN=1,ACK=1),并且回复聊上3块钱的(ack=x+1),还给他发了一个小红包(seq=y) 第三次握手:这一次得让服务器知道客户端收到服务器的红包没,客户端就回复他我收到你红包了(ack=1),并且说那就聊上3块钱的天吧(seq=x+1),顺带回了一个红包意思一下(ack=y+1) 这样三次握手过程就结束了。 2.四次挥手 四次挥手是断开tcp连接的过程,大概流程如下图: ?继续接着上次故事讲,客户端和服务器聊完3块钱的,客户端觉得没意思不想聊了。 第一次挥手:客户端跟服务器讲我不想跟你聊了(FIN),分手吧。 第二次挥手:服务器收到回复他知道了(ACK)但是你得等我忙完的。 第三次挥手:服务器跟别人聊完了,回客户端,我忙完了,我知道你不想聊了,那就分手吧(FIN) 第四次挥手:客户端收到服务器这个消息,很生气,分就分(ACK)甩给服务器就把服务器删好友了 到此为止,断开tcp链接的四次挥手就结束了,这个故事是不是有点像你跟你的男/女朋友,哈哈哈 3.为什么链接的时候三次握手,关闭的时候是四次挥手? 因为当Server端收到Client端的SYN连接请求报文后,可以直接发送SYN+ACK报文。其中ACK报文是用来应答的,SYN报文是用来同步的。但是关闭连接时,当Server端收到FIN报文时,很可能并不会立即关闭SOCKET,所以只能先回复一个ACK报文,告诉Client端,"你发的FIN报文我收到了"。只有等到我Server端所有的报文都发送完了,我才能发送FIN报文,因此不能一起发送。故需要四步握手。 这就到了刚开始那会儿的故事,你加你女神微信的时候,你先发起加好友申请(客户端向服务器申请链接SYN),你女神收到你的加好友申请,然后点了一个确认(确认链接SYN)女神发给你我已经加你好友了(服务器发ACK)你收到后给女神回复我看到了(客户端发ACK给服务器)这样你就建立的好友关系(tcp链接建立),这样就可以给女神巴拉巴拉发消息了,从此你们就聊的水深火热。 SYN用来同步ACK用来应答 过了一段时间你们的感情发生了分歧,突然有一天你跟你女神讲要不咱分手吧(客户端向服务器发FIN),女神收到后不耐烦回了一句行行行我知道了(服务器向客户端发ACK),我现在在忙等会儿跟你讲(服务器还有数据没处理完),女神忙完了然后跟你说,你要分手是吧,分就分吧(服务器向客户端发FIN),你收到这句分手的话内心的怒火终于爆发,行那就分手吧(客户端向服务器发ACK),不过你没有马上删除好友(一个时间等待防止网络出错服务器没收到客户端的应答,服务器会再次发送FIN),过了一段时间没消息了,至此你放下了你们的感情。。。。。。 4.为什么不能用两次握手? 你加你女神微信后,你女神同意后,要是腾讯后台不提醒你通过了你的好友申请,你能知道你加上你女神没?是不是这个道理 客户端发送服务器连接申请后,服务器回复客户端同意连接可以发了,如果客户端不回复确认信息的话,服务器就不知道客户端收到他发地同意连接信息,这样会一直占用服务器的资源。 5如果建立了链接,客户端发生了故障如何处理? TCP设有一个保活计时器,客户端如果出现故障,服务器不能一直等下去,白白浪费资源。服务器每收到一次客户端的请求后都会重新复位这个计时器,时间通常是设置为2小时,若两小时还没有收到客户端的任何数据,服务器就会发送一个探测报文段,以后每隔75秒钟发送一次。若一连发送10个探测报文仍然没反应,服务器就认为客户端出了故障,接着就关闭连接。 这故事讲的好累。。。。 如果各位网友们还不懂,你告诉我,我去练练编故事 开个玩笑,看不懂就留言吧我看到回复你,虽然我不一定能看到,因为不经常看,万一有热心网友跟你互动呢,万一咱俩有缘分我就看到呢,?哈哈哈哈 ? ? |
|
网络协议 最新文章 |
使用Easyswoole 搭建简单的Websoket服务 |
常见的数据通信方式有哪些? |
Openssl 1024bit RSA算法---公私钥获取和处 |
HTTPS协议的密钥交换流程 |
《小白WEB安全入门》03. 漏洞篇 |
HttpRunner4.x 安装与使用 |
2021-07-04 |
手写RPC学习笔记 |
K8S高可用版本部署 |
mySQL计算IP地址范围 |
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/26 11:31:36- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |