关于 tcp 四次分手

2018-06-28 16:21:04 +08:00
 situs
1、客户端主动断开的的情况下,客户端在收到服务端的 ack 后,客户端此时不再发送数据,单向通道已断开,然后该服务端发送 fin 等待客户端的 ack,我想问客户端到服务端的单向通道不是已经断开了吗怎么还能给服务端响应 ack ?还是说数据的传输和 ack 不是一个层次的?
2、如果是服务端主动断开的话是几次分手??

谢谢各位大佬
1927 次点击
所在节点    问与答
7 条回复
GeruzoniAnsasu
2018-06-28 18:45:01 +08:00
不知怎么吐槽

断开通道指的是逻辑上一个概念,又不是剪掉网线咔嚓物理上不通电了

建议从头看书
Lonely
2018-06-28 18:47:20 +08:00
四次分手……
mringg
2018-06-28 18:50:02 +08:00
挥手,分手太桑心了
WhoMercy
2018-06-28 19:01:56 +08:00
1.
i) 第二次挥手后,服务端断开连接,不再接收客户端新的连接请求 [但服务端可以向客户端发出连接] ;

ii) 服务端最后向客户端发出确认断开 TCP 请求连接后,等待客户端响应(第三次挥手);

iii) 客户端收到服务端确认断开 TCP 请求连接,通过该连接返回 ACK ;

iv) 服务端收到 ACK,完成第四次挥(分)手。

2.
貌似没提到服务端要主动断开连接的情况,考是不会考的。
因为挥手过程主要是对服务端有利(减少服务端等待的资源消耗)。
理论上服务端不接收、不响应,连一次挥手都不需要,或者直接返回错误,就是一次挥手。
(可能理解有误,如果有错,望大佬不吝告知)
situs
2018-06-28 20:28:55 +08:00
@WhoMercy
感谢讨论先~
我明白了,我把“数据”和“报文里的数据”混在一起了,我以为二次挥手之后客户端不再发数据了,所以服务端再进行第三次挥手的时候然后客户端响应一个 fin 把我搞晕了。。客户端只是不发送带数据的报文了,还是可以发送不带数据只是带 fin 啊或者 ack 字段的报文的。
关于 2 的话,明天我再搜搜相关的文章。
Bryan0Z
2018-06-28 20:31:18 +08:00
看到 4 次分手就点进来了
lyog
2018-06-29 21:34:57 +08:00
楼主可以搜一下啥是双工

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/466609

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX