-
NET 网络专题汇总-06-17-TCP Keepalive 和 HTTP Keep-Alive 是一个东西吗?
大致问题是,TCP 的 Keepalive 和 HTTP 的 Keep-Alive 是一个东西吗?
这是个好问题,应该有不少人都会搞混,因为这两个东西看上去太像了,很容易误以为是同一个东西。
事实上,这两个完全是两样不同东西,实现的层面也不同:
HTTP 的 Keep-Alive,是由应用层(用户态) 实现的,称为 HTTP 长连接;
TCP 的 K...
2023-02-22 00:00:00 |
Net
-
NET 网络专题汇总-06-16-HTTPS 中 TLS 和 TCP 能同时握手吗?
面试
有位读者在面试的时候,碰到这么个问题:
面试官跟他说 HTTPS 中的 TLS 握手过程可以同时进行三次握手,然后读者之前看我的文章是说「先进行 TCP 三次握手,再进行 TLS 四次握手」,他跟面试官说了这个,面试官说他不对,他就感到很困惑。
我们先不管面试官说的那句「HTTPS 中的 TLS 握手过程可以同时进行三次握手」对不对。
但是面试官说「HTTPS 建立连接的过...
2023-02-22 00:00:00 |
Net
-
NET 网络专题汇总-06-15-tcp_tw_reuse 为什么默认是关闭的?
问题
上周有个读者在面试微信的时候,被问到既然打开 net.ipv4.tcp_tw_reuse 参数可以快速复用处于 TIME_WAIT 状态的 TCP 连接,那为什么 Linux 默认是关闭状态呢?
当时看到读者这个问题的时候,我也是一脸懵逼的,经过我的一番思考后,终于知道怎么回答这题了。
其实这题在变相问「如果 TIME_WAIT 状态持续时间过短或者没有,会有什么问题?」
因为...
2023-02-22 00:00:00 |
Net
-
NET 网络专题汇总-06-14-拔掉网线后, 原本的 TCP 连接还存在吗?
拔掉网线后, 原本的 TCP 连接还存在吗?
今天,聊一个有趣的问题:拔掉网线几秒,再插回去,原本的 TCP 连接还存在吗?
可能有的同学会说,网线都被拔掉了,那说明物理层被断开了,那在上层的传输层理应也会断开,所以原本的 TCP 连接就不会存在的了。
就好像, 我们拨打有线电话的时候,如果某一方的电话线被拔了,那么本次通话就彻底断了。
真的是这样吗?
上面这个逻辑就有问题。问题在...
2023-02-22 00:00:00 |
Net
-
NET 网络专题汇总-06-13-TCP 连接,一端断电和进程崩溃有什么区别?
问题
有位读者找我说,他在面试腾讯的时候,遇到了这么个问题:
这个属于 TCP 异常断开连接的场景,这部分内容在我的「图解网络」还没有详细介绍过,这次就乘着这次机会补一补。
这个问题有几个关键词:
没有开启 keepalive;
一直没有数据交互;
进程崩溃;
主机崩溃;
我们先来认识认识什么是...
2023-02-22 00:00:00 |
Net
-
NET 网络专题汇总-06-12-在 TIME_WAIT 状态的 TCP 连接,收到 SYN 后会发生什么?
在 TIME_WAIT 状态的 TCP 连接,收到 SYN 后会发生什么?
周末跟朋友讨论了一些 TCP 的问题,在查阅《Linux 服务器高性能编程》这本书的时候,发现书上写了这么一句话:
书上说,处于 TIME_WAIT 状态的连接,在收到相同四元组的 SYN 后,会回 RST 报文,对方收到后就会断开连接。
书中作者只是提了这么一句话,没有给予源码或者抓包图的证据。
起初,...
2023-02-22 00:00:00 |
Net
-
NET 网络专题汇总-06-11-四次挥手中收到乱序的 FIN 包会如何处理?
问题
因为如果 FIN 报文比数据包先抵达客户端,此时 FIN 报文其实是一个乱序的报文,此时客户端的 TCP 连接并不会从 FIN_WAIT_2 状态转换到 TIME_WAIT 状态。
因此,我们要关注到点是看「在 FIN_WAIT_2 状态下,是如何处理收到的乱序到 FIN 报文,然后 TCP 连接又是什么时候才进入到 TIME_WAIT 状态?」。
我这里先直接说结论:
在...
2023-02-22 00:00:00 |
Net
-
NET 网络专题汇总-06-10-已建立连接的TCP,收到SYN会发生什么?
已建立连接的TCP,收到SYN会发生什么?
大概意思是,一个已经建立的 TCP 连接,客户端中途宕机了,而服务端此时也没有数据要发送,一直处于 Established 状态,客户端恢复后,向服务端建立连接,此时服务端会怎么处理?
看过我的图解网络的读者都知道,TCP 连接是由「四元组」唯一确认的。
然后这个场景中,客户端的 IP、服务端 IP、目的端口并没有变化,所以这个问题关键要看客...
2023-02-22 00:00:00 |
Net