最近有个同学跟我反馈,去面腾讯的时候,又被腾讯面试官拷打了 。
因为他是搞 Go 后端的,没怎么接触过 socket 编程,结果问了好几个网络编程的问题,直接懵逼了。
第一个问题
服务端调用listen之后sleep休眠,请问客户端的connect能不能成功?
这个问题实际上在考察大家对于 TCP 三次握手的底层原理,很多同学对于 TCP 三次握手的理解只停留在SYN和ACK报文的交互,而关于三次握手过程中,内核做了哪些事情?socket 编程和三次握手有什么关系?都不太明白,那这样在遇到这种问题就比较难回答了。
我们先看看客户端连接服务端时,发生了什么?
-
服务端和客户端初始化 socket