IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: 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个探测报文仍然没反应,服务器就认为客户端出了故障,接着就关闭连接。
故事紧接上回,这就跟女神热恋时期,女神每2小时查岗,你每天给女神发消息(客户端向服务器传数据)女神认为你还爱着他(复位tcp的保活计时器),一旦你女神超过两小时没收到你的消息,你女神就怀疑你问题,于是她每隔75秒就给你打一个电话(每隔75秒服务器向客户端发探测报文),连续打了十个电话你还没反应,你女神就认为你不爱她了,八成出轨了,于是她就把你甩了(关闭链接)

这故事讲的好累。。。。

如果各位网友们还不懂,你告诉我,我去练练编故事

开个玩笑,看不懂就留言吧我看到回复你,虽然我不一定能看到,因为不经常看,万一有热心网友跟你互动呢,万一咱俩有缘分我就看到呢,?哈哈哈哈

?

?

  网络协议 最新文章
使用Easyswoole 搭建简单的Websoket服务
常见的数据通信方式有哪些?
Openssl 1024bit RSA算法---公私钥获取和处
HTTPS协议的密钥交换流程
《小白WEB安全入门》03. 漏洞篇
HttpRunner4.x 安装与使用
2021-07-04
手写RPC学习笔记
K8S高可用版本部署
mySQL计算IP地址范围
上一篇文章      下一篇文章      查看所有文章
加:2022-01-12 00:25:08  更:2022-01-12 00:27:27 
 
开发: 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-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码