计算机网络面试知识点汇总

326 阅读2分钟

1. 网页请求流程(分层结构)

输入域名后,首先通过 DNS 域名解析查询 IP 地址,之后经过应用层协议(HTTP),装上协议头,然后经过 Socket 套接字传递给传输层,装上(TCP/UDP)协议头,之后交付给网络层 IP 协议,进行寻址,链路层的 ARP 协议负责 MAC 地址的寻址。

2. HTTP

2.1 POST 支持的编码格式

Content-Type: application/www-form-urlencoded
Content-Type: multipart/form-data
Content-Type: application/json
Content-Type: text/xml

2.2 GET 与 POST

  1. GET 是幂等操作,所以可以缓存;
  2. GET 参数在 url 中;
  3. GET 数据包有大小限制,POST没有限制,而且头部与数据分开传递;

2.3 HTTP 连接管理

  1. HTTP1.0 与 keep-alived

HTTP1.0 的 keep-alived 是在 TCP 的基础上实现的对 socket 套接字的复用,TCP 的 keep-alived 保活机制底层是靠心跳检测,当 HTTP 开启了 keep-alived 时,就能服用保活的 socket。但是由于 keep-alived 默认不开启,所以可能会出现哑代理的问题,即代理服务器不能识别keep-alived 导致的问题。并且 keep-alived 只能在完成一个请求之后才能接受另一个请求。

  1. HTTP1.1 与 持久连接

持久连接是默认开启的,支持持久连接的服务器克服了哑代理问题,并且不需要等待上一个请求结束,下一个请求再发送,但是请求仍然是顺序执行的,后面的请求会被前面的耗时请求阻塞

  1. HTTP2.0 与 多路复用

多路复用的出现解决了上述问题,每一个请求被切割成了多个 ID 相同的帧,相同的帧会在缓存区拼接,拼接好后,通过多路复用机制就能复用 TCP 连接。

2.3 HTTP2.0

多路服务,服务器推送,首部压缩,二进制分帧

2.4 Cookie, Session 与 Token

Cookies可以分为会话Cookie与持久Cookie两类,会话Cookie在退出浏览器时就会删除,持久Cookie会存到磁盘上,Discard参数可以标识会话Cookie,持久Cookie会伴随Max-Age等参数一起使用。Cookie可以通过域信息与路径信息声明其作用范围。

Session是存储在服务器上的对象,客户端可以获得sessionID的钥匙访问该对象,可以通过cookies或者url重写的方式携带sessionID,Java的encodeURL可以实现重写。

Token能克服Cookie和Session在多个服务器上的同步问题。JWT本质是一个储存在客户端的加密josn串,服务端使用盐对其解析。JWT的组成分为头部、荷载和签证,头部是json字符串,声明类型和加密算法,并且储存信息,荷载存储签发方以及存储方信息和过期时间,签证存贮base64加密后的头部、荷载以及secret盐。

2.5 HTTPS(握手过程,略)