为什么TCP连接的建立是需要三次,而断开却需要四次
来源:互联网 发布:铃声大全mac 编辑:程序博客网 时间:2024/05/18 13:48
TCP的为什么三次握手就可以建立连接:
我先抛出一个命题,两个人想要正常沟通,至少保证双方都知道自己和对方的发送和接受功能是正常的。
假设这里有两个人,server和client。现在client需要和server建立连接。
① client->server : server,我想和你建立连接。(client什么都确认不了,因为他不知道server有没有接收到,也不能确定自己的信息有没有发出去)
如果这个时候server收到了。那么server可以确认两个事情(1.client可以发送。2.自己的能收到信息)于是server回复信息给client。
② server->client :client我收到你的请求了,我也想要建立连接。(server还是只能确定之前的那两个事情)
如果这个时候client能收到server的回复,表明client第一条信息发出成功,且server能接受到。client可以确定四个事情(1.自己的发送功能是正常的。2.自己的接受是正常的。3.server接受正常。4.server发送正常)
可是server还不知道client能不能接受信息和自己能不能发送信息。于是client需要再发送一条信息。
③ client->server :好的,那么建立连接吧。
如果这个时候server收到了client的回复信息,那么server也可以确认双方都的接受和发送的功能都是OK的,于是连接就可以确认了。
TCP为什么需要四次才能断开连接:
还是client和server,client和server已经建立了连接,client发送请求到server,server接收到请求把响应的信息返回给client。先看第一种情况。
① client->server :server我要断开连接了。
② server->client :好的,那断开链接吧。
因为在建立连接的时候就双发的发送和接受的功能,于是连接断开。诶,为什么两次会话就可以断开连接了?不急,再看另一种情况。
① client->server :server我要断开连接了。
② server->client :等会,我还有一些响应的信息还没发给你。
。。。过了一会
③client->server :你还没发好吗,我要断开连接了。
④server->client :再等会,我还有一些内容还没发好。
。。。过了一会
⑤client->server :你好慢啊,我要断开连接了。
⑥server->client :你好烦,发好了我会给你信息的。
六次会话都还没断开连接,client就学乖了,不要一直找server,它好了会给消息的。于是下次想要断开连接的时候。
① client->server :server我要断开连接了。
② server->client :等会,我还有一些响应的信息还没发给你。
。。。过了一会
③ server->client :响应信息发好了,我要断开连接了。
虽然server信息发好了,但是要考虑到client还在接受信息于是server就在等client的确认信息。
④ client->server :接收好了,断开连接了。
所以综上的情况,要确保连接的断开,至少需要四次的会话。
- 为什么TCP连接的建立是需要三次,而断开却需要四次
- tcp协议建立连接 为什么是三次握手 而 断开连接需要四次?
- TCP需要三次握手才能建立,而断开连接则需要四次握手
- 为什么TCP建立连接协议是三次握手,而关闭连接却是四次握手呢?
- TCP/IP的三次握手连接和四次握手关闭【问题:为什么建立连接协议是三次握手,而关闭连接却是四次握手?】
- TCP建立连接为什么需要三次握手而结束要四次
- 网络TCP建立连接为什么需要三次握手而结束要四次
- 网络TCP建立连接为什么需要三次握手而结束要四次
- 网络TCP建立连接为什么需要三次握手而结束要四次
- 网络TCP建立连接为什么需要三次握手而结束要四次
- TCP建立连接为什么需要三次握手而结束要四次
- 【通信】TCP建立连接协议是三次握手,而关闭连接却是四次握手
- 为什么TCP连接需要三次握手而分开需要四次握手
- 为什么TCP连接需要三次握手分开需要四次握手
- 为什么TCP连接需要三次握手分开需要四次握手?
- 为什么TCP连接需要三次握手分开需要四次握手
- 为什么TCP连接需要三次握手分开需要四次握手
- 为什么TCP连接需要三次握手分开需要四次握手?
- 通过View的OnClickListener监听机制的模型,来解析回调机制
- MAC 使用pycharm出现ImportError: No module named numpy 解决方法
- Python 3 之数据类型
- dos命令之 set (显示、设置或删除 cmd.exe 环境变量) 用法详解以及使用变量
- Hbase 行健设计原则(待完善)
- 为什么TCP连接的建立是需要三次,而断开却需要四次
- 自定义View之LayoutParams
- 避免大规模故障的微服务架构
- string 中文乱码
- 形参 实参 用函数交换变量
- C语言__attribute__的使用
- Javascript全局变量的三种声明方式
- oracle怎么截取字符串中某个字符前(或者后)的字符串?
- app.json Expecting 'STRING','NUMBER','NULL','TRUE','FALSE','{','[',']', got INVALID