https://www.iamshuaidi.com/1998.html

  • 网络的七层和五层
    • 从浏览器输入URL到页面解析的全过程
  • TCP与UDP的区别
  • 计算机通信的四元组
  • TCP的连接方式(三次挥手、四次握手)
    • 为什么是三次握手?不是两次、四次?
    • 为什么连接的时候是三次握手,关闭的时候却是四次握手?
    • 为什么TIME_WAIT状态需要经过2MSL(最大报文段生存时间)才能返回到CLOSE状态?
    • 如果已经建立了连接,但是客户端突然出现故障了怎么办?
  • DNS寻址过程
  • HTTP与HTTPS的区别
  • HTTPS的加密方式
  • HTTP请求/响应的步骤

    HTTP

  1. 输入URL到浏览器发生了什么?都用到了哪些协议?
  2. DNS基于TCP还是UDP,为什么?

DNS在区域传输层使用TCP,域名解析的时候用UDP

  1. 域名解析的流程
  2. 描述HTTP状态码你知道哪些,401,301,302,201代表什么
  3. 描述session和cookie,cookie是怎么传输的
  4. 如何告诉客户端,响应的是什么数据类型?
  5. HTTP2.0的优点说一下。了解QUIC吗?怎么实现的?
  6. HTTP2.0和1.x的区别,1.x 要保证高并发如何处理
  7. HTTPS的握手过程说一下。证书是如何验证的?为什么不用非对称加密通信?
  8. HTTP哪些接口是幂等的?
  9. Client是如何实现长连接的? HTTP Keep-Alive是什么?如何工作?
  10. 介绍一下计算机网络七层模型
  11. HTTP GET和HEAD区别、GET和POST区别
  12. 客户端在建立连接的时候发现很多connect reset by peer的异常,你觉得问题出在哪?
  13. 网络的性能指标有哪些?
  14. HTTP能不能一次连接多次请求,不等后端返回
  15. Go中的HTTP包的实现原理

    TCP

  16. TCP三次握手,四次挥手说一下。为什么需要三次握手,最后一次如果没有行不行,会有什么问题?

  17. TCP 三次握手能否携带数据?

第一次第二次不行,第三次可以。假如第一次握手可以携带数据的话,那对于服务器是不是太危险了,有人如果恶意攻击服务器,每次都在第一次握手中的SYN报文中放入大量数据。而且频繁重复发SYN报文,服务器会花费很多的时间和内存空间去接收这些报文。
第三次握手,此时客户端已经处于ESTABLISHED状态。对于客户端来说,他已经建立起连接了,并且已经知道服务器的接收和发送能力是正常的。所以也就可以携带数据了。

  1. TIME_WAIT的作用是什么?2MSL是多长?线上大量的close_wait和time_wait该如何解决?
  2. 一台服务器最多可以建立多少个TCP链接,为什么?
  • TCP连接的客户端机:每一个ip可建立的TCP连接理论受限于ip_local_port_range参数,也受限于65535。但可以通过配置多ip的方式来加大自己的建立连接的能力。
  • TCP连接的服务器机:每一个监听的端口虽然理论值很大,但这个数字没有实际意义。最大并发数取决你的内存大小,每一条静止状态的TCP连接大约需要吃3
    .3K的内存。
  1. TCP 和UDP 区别,UDP优点,适用场景
    1. 可靠与不可靠
    2. 有连接与无连接
    3. UDP优点不需要连接过程,高效,适合音视频通话等不需要可靠传输的场景
  2. HTTP和TCP的关系
  3. TCP怎么找到哪个套接字
  4. TFO的原理是什么
  5. TCP中的拆包和粘包是怎么回事
  6. GRPC的优缺点、GRPC内部原理是什么
  7. 你知道 TCP 报文头部的字段有哪些嘛

目标端口,源端口,seq序列号,ack确认号,窗口大小,标志位:ACK确认标志、SYN同步序号、FIN发送完成标志

  1. 说说半连接队列和 SYN Flood 攻击的关系
  2. TCP是如何保证可靠性传输的

滑动窗口、序列号与确认应答机制、超时重传、拥塞控制

  1. 能不能说一下 TCP 的流量控制、拥塞控制和滑动窗口?Nagle 算法和延迟确认?

https://zhuanlan.zhihu.com/p/37379780

  • 三次握手

image.png

  • 滑动窗口

image.png

  • 四次挥手

image.png

  1. TCP 的超时重传你了解嘛?时间是如何计算的?
    1. 每次发送数据时都开启一个计时器,超过一定时间没有收到确认报文就认为失败。
  2. epoll 用到了哪些数据结构?
    1. 双向链表、红黑树
    2. 事件节点挂在红黑树上,事件发生时将事件对应的事件节点放到双向链表中
  3. epoll 中,什么是水平触发,什么是边缘触发?
    1. 水平:只要事件没有处理完毕,每一次epoll_wait都触发事件
    2. 边缘:无论事件是否处理完毕,仅触发一次
  4. 什么是同步/异步、阻塞/非阻塞?
  5. IO 多路复用你怎么理解的?select、poll和epoll有什么区别