我这样说,TCP/IP三次握手,四次挥手,你能明白吗?
2020/7/10 11:08:38
本文主要是介绍我这样说,TCP/IP三次握手,四次挥手,你能明白吗?,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
一眨眼,2020年又过去了一大半了,希望下半年,祝大家,生活能如你所愿,升职加薪,遇见你的最好的那个他/她。
下面跟大家讲一个故事吧。
三次握手(男孩和女孩开始恋爱)
先上我二十年画画功底的图
现在,我把client比喻成“男孩”,serve比喻成“女孩”。男孩和女孩是同班同学,他们的故事从某一天加微信就轰轰烈烈的开始了。
有一天,晚上,男孩想了很久,终于鼓起勇气向女孩表白,然后他拿起手机给女孩发微信。
男孩:“那个谁,其实我喜欢你很久了,我们能不能在一起?”(这里是上图,第一次发起握手请求,一般第一次握手请求都是由client发起,当client决定跟serve建立连接的时候,就会给sever发送一个SYN=1,seq=xxxx,SYN是发起握手请求标识,seq是一个随机序号(假如2020))
女孩收到了信息,很高兴,因为她也喜欢男孩。
女孩:“既然这样,那好吧,我们试试开始吧”(这里是上图的,第二次发起握手请求,serve收到client的请求就会给client一个响应,就会把ACK=1,ack=xxxx,发送给client,ack是一个确认序号,它会在clinet发过来的seq中加一(假如是2021));这里可以想象为女孩收到男孩的信息很高兴,想马上告诉他自己的答案,然后拿起手机回男孩信息(serve在响应client的同时,也要发起一次请求也就是上图的SYN=1,seq=5050)
男孩收到了女孩的回复,高兴得不得了,还在傻笑,但是手机那边的女孩,还不知道,男孩有没有收到信息。然后男孩高兴了一会后,给女孩回了信息。
男孩:“哈哈哈,太好了,我会好好爱你的🥰” (这里可以比喻为第三次握手请求,client收到了serve的响应之后,也会给serve的一个回复,证明已经收到了响应,就会把ACK=1,和ack=5051(在serve发过来的seq加1)发送给serer,因为不需要再请求连接,所以这次请求就不需要SYN了)
到这里男孩和女孩的开始了幸福的情侣👫日子。(三次握手结束)
中间小插曲
天有不测风云,地有什么鬼来着😂,经历过热恋之后。他们彼此开始厌倦了,但大家都不好说出口,最后,最后,还是走上了那条分手的路上。这次还是男孩开的头。
四次挥手(分手快乐,再见就是陌生人)
先上我二十年画画功底的图
男孩:“我们分手吧,我对你没感觉了”(这里是第一次挥手,client想要跟serve断开的时候,就会给serve发送FIN=1,seq = 8888,FIN就要断开请求的标识,seq还是随机序号)
虽然女孩也很想跟男孩分手,但也要假装一下不想分手(我没别意思啊,各位小姐姐不要骂我🤢)。哈哈哈
女孩:“你怎么可以这样,突然就要跟人家分手,你好渣啊,我还没有做好分手的准备,等我准备好了,再告诉你,嘤嘤嘤”(这里是第二次挥手,sever接受到client的断开请求后,就会给clinet发送一个ACK=1,ack=8889,这里的ACK,ack跟握手的ACK,ack一样,虽然serve给回应但是还没又断开,因为可能serve还有东西在传输,不能立即断开,等到传输完了,能够断开了,就会通知client,也就是下面的三次挥手)
过了几天后。。。
女孩:"我想好,分就分吧,各自安好!互不打扰!" (这里是第三次挥手,serve传输完数据之后,能够断开了,就给client,发送FIN = 1,seq=5555,这里FIN,seq跟第一次挥手的一样)
男孩:"嗯,各自安好!" (这里是第四次挥手,client收到请求之后,就会给serve一个发送ACK = 1,ack = 5556,作为回应)
到这里,男孩女孩互相删除了微信 (四次挥手结束)
剧终
有错误,希望大佬能够指点出来。还有希望这不是你的故事,哈哈哈。
SEEYOU❤️
这篇关于我这样说,TCP/IP三次握手,四次挥手,你能明白吗?的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-12-30用PydanticAI和Gemini 2.0构建Airflow的AI助手
- 2024-12-30阿里云ECS教程:新手入门必读
- 2024-12-30使用vxe-table的插槽时页面卡顿怎么优化?-icode9专业技术文章分享
- 2024-12-30在 Kotlin 中使用 Coil 怎么实现高斯模糊效果?-icode9专业技术文章分享
- 2024-12-30有哪些常见的方法和工具查看和分析域名访问量?-icode9专业技术文章分享
- 2024-12-30aar 文件和jar 文件的区别是什么?-icode9专业技术文章分享
- 2024-12-30Gradle引用依赖 annotationProcessor 和implementation 的区别是什么?-icode9专业技术文章分享
- 2024-12-30packaging 类型 jar.sha256 和 jar的区别是什么?-icode9专业技术文章分享
- 2024-12-30.aar 是什么文件?-icode9专业技术文章分享
- 2024-12-30Build > Build Bundle(s) / APK(s) 的作用是什么?-icode9专业技术文章分享