为什么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 :接收好了,断开连接了。

所以综上的情况,要确保连接的断开,至少需要四次的会话。

阅读全文
0 0
原创粉丝点击