博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
图解TCP协议中的三次握手和四次挥手
阅读量:6353 次
发布时间:2019-06-22

本文共 949 字,大约阅读时间需要 3 分钟。

比起枯燥的文字说明,笔者更喜欢用图和讲故事的方式来表达对于TCP/IP的理解。

三次握手

  • 金:“喂,老特,你听得到吗?”
  • 特:“小金子,我听得到你呀,你听得到我吗?”
  • 金: “我能听到你说话,周末我们去新加坡溜达溜达,度个蜜月吧”

两次握手:

  • 金:“喂,老特,你听得到吗?”
  • 特:“小金子,我听得到呀”
  • 金:“老特,喂喂,你听得到吗?”
  • 特:“靠,小金子,我听得到呀!!!!”
  • 金:“你能不能听到我讲话啊!!喂!”

四次握手:

  • 金:“喂,老特,你听得到吗?”
  • 特:“小金子,我听得到呀,你听得到我吗?”
  • 特:“小金子,我能听到你,你能听到我吗?”
  • 金:“老特,你老糊涂了吧,……不想说话了”

三次握手图解

四次挥手图解

注:图片来源于网络

面试时可能会问到:

  • Q:三次握手的目的是什么?
  • W: 通过三次与目标设备的通信来确定数据包发送成功。以浏览器和服务器的通信来打比方:
浏览器:你好服务器,我是 浏览器A。服务器:你好 浏览器A,我是 服务器B。浏览器:服务器B 你好。复制代码
  • Q: 为什么要进行四次挥手?
  • W: 当数据包发送完毕需要断开连接的时候,就需要TCP的四次挥手来保证链接的合理断开:
主动结束方:你好,我的数据发送完毕了,我要进入准备断开的状态了。(此时它虽然不再发送数据了,但是可以接受数据)另一方:我知道了,我还没有发送完毕的,你等着吧。另一方:我也发送完毕了,可以断开链接了。(此时它也进入准备断开的状态)主动结束方:好的,那断开吧。复制代码
  • Q: TCP为什么建立链接是三次,关闭链接是四次呢?
1.服务端的listen状态下的socket当收到SYN报文的建连请求后,它可以把ACK和SYN(ACK起应答作用,而SYN起同步作用)放在一个报文里来发送2.关闭连接时,当收到对方的FIN报文通知时,它仅仅表示对方没有数据发送给你了;但未必你所有的数据都全部发送给对方了3.你可以未必会马上会关闭SOCKET,也即你可能还需要发送一些数据给对方之后,再发送FIN报文给对方来表示你同意现在可以关闭连接了4.它这里的ACK报文和FIN报文多数情况下都是分开发送的复制代码

转载于:https://juejin.im/post/5b1cfbcbf265da6e5635c16e

你可能感兴趣的文章
python面试题-django相关
查看>>
Python——eventlet.greenthread
查看>>
记大众点评之面试经历
查看>>
第三章:基本概念
查看>>
Jersey+mybatis实现web项目第一篇
查看>>
C++形参中const char * 与 char * 的区别
查看>>
espresso 2.0.4 Apple Xcode 4.4.1 coteditor 价格
查看>>
Object-C中emoji与json的问题
查看>>
一、Lambda表达式
查看>>
linux 命令
查看>>
灾后重建
查看>>
Nothing 和 Is
查看>>
第一个sprint冲刺第三天
查看>>
周末web前端练习
查看>>
hdu 5754 Life Winner Bo 博弈论
查看>>
Overlay network 覆盖网络
查看>>
Linux之编译需要的文件变化时刻
查看>>
IntelliJ IDEA中怎么查看方法说明?
查看>>
mvn常用命令
查看>>
redis zset 顺序问题
查看>>