网络通信面试题集锦
- TCP/IP协议栈层次结构 
- TCP三次握手需要知道的细节点 
- TCP四次挥手需要知道的细节点(CLOSE_WAIT、TIME_WAIT、MSL) 
- TCP与UDP的区别与适用场景 
- linux常见网络模型详解(select、poll与epoll) 
- epoll_event结构中的epoll_data_t的fd与ptr的使用场景 
- Windows常见的网络模型详解(select、WSAEventSelect、WSAAsyncSelect) 
- Windows上的完成端口模型(IOCP) 
- 异步的connect函数如何编写 
- select函数可以检测网络异常吗? 
- epoll的水平模式和边缘模式 
- 如何将socket设置成非阻塞的(创建时设置与创建完成后设置),非阻塞socket与阻塞的socket在收发数据上的区别 
- send/recv(read/write)返回值大于0、等于0、小于0的区别 
- 如何编写正确的收数据代码与发数据代码 
- 发送数据缓冲区与接收数据缓冲区如何设计 
- socket选项SO_SNDTIMEO和SO_RCVTIMEO 
- socket选项TCP_NODELAY 
- socket选项SO_REUSEADDR和SO_REUSEPORT(Windows平台与linux平台的区别) 
- socket选项SO_LINGER 
- shutdown与优雅关闭 
- socket选项SO_KEEPALIVE 
- 关于错误码EINTR 
- 如何解决tcp粘包问题 
- 信号SIGPIPE与EPIPE错误码 
- gethostbyname阻塞与错误码获取问题 
- 心跳包的设计技巧(保活心跳包与业务心跳包) 
- 断线重连机制如何设计 
- 如何检测对端已经关闭 
- 如何清除无效的死链(端与端之间的线路故障) 
- 定时器的不同实现及优缺点 
- http协议的具体格式 
- http head、get与post方法的细节 
- http代理、socks4代理与socks5代理如何编码实现 
- ping 
- telnet 
关于以上问题的答案,有兴趣可以参考我的知乎live:https://www.zhihu.com/lives/922110858308485120
或者如果你有任何不明白的地方,可以加我微信 easy_coder 交流。