1 2 3 4

计算机网络--常见面试题

1.从在浏览器输入url开始到页面呈现给用户,发生了什么

  1. 浏览器解析URL地址
  2. 主机向本地DNS服务器发起请求(本地向根域名服务器发起请求)
  3. 本地DNS服务器将URL对应的IP地址发送给本地主机
  4. TCP三次握手
  5. 客户端(主机)发起http请求
  6. 服务器响应http请求,浏览器得到HTML文件
  7. TCP四次挥手
  8. 浏览器解析文件,并进行渲染

在guthub上,有详细的24个步骤

2.DNS工作原理

总结:浏览器缓存,系统缓存,路由器缓存,IPS服务器缓存,根域名服务器缓存,顶级域名服务器缓存,主域名服务器缓存。查询基于UDP,区域传送(主从复制)基于TCP

  1. 主机向本地服务器的查询采用递归查询
  2. 本地域名服务器向根域名服务器的查询采用迭代查询
    1. 当用户输入域名时,浏览器检查缓存中是否有该域名映射的IP
    2. 若没命中,检查系统缓存
    3. 若没命中,请求LDNS本地域名服务器
    4. 若没有命中,LDNS先向根域名服务器发起请求,收到恢复后,查询顶级域名服务器,依次逐级查询,直至找到name server,并返回对应的IP
    5. LDNS缓存这个域名和对应的IP,将解析结果返回给用户
    6. 用户根据TTL值缓存到本地系统缓存中,域名解析过程至此结束

3.http长连接与短连接

  http1.0默认使用短连接,从HTTP/1.1开始,默认使用长连接。长连接使用Keep-alive来设定超时时间。长连接的数据传输完成识别有两种方式,第一,预先告知数据大小,第二,用约定的标记做结束符。

  web开发中需要关注浏览器并发连接的数量,并发数量少,意味着传输速率慢;并发数量多,意味着服务器消耗大。

  TCP的keep alive是检查当前TCP连接是否存活,HTTP的keep alive是使一个TCP连接保持一段时间的存活。

4.TCP三次握手,四次挥手

  不能两次握手的原因:1.已失效的连接请求又传到了服务器端 2.server无法确认client是否收到

  为什么要四次挥手:2次关闭客户端向服务器端的数据通道,2次关闭服务器向客户端的,分开控制更灵活

  time wait的意义:第四次挥手可能会丢包,这段时间用于等服务器的自动重发

5.TCP滑动窗口与拥塞控制

  滑动窗口:接收方对发送方发送速率的控制

  拥塞控制:慢启动,拥塞避免,快重传,快恢复

6.http与https

  https是在http的基础上添加了加密和认证机制。

  加密方式分两类,一类是对称加密,一类是非对称加密,非对称加密更安全,但加解密效率低,性能开销大。通常用非对称加密来商议对称加密的密钥。

  非对称加密还提供了身份认证的功能,但需要权威机构保证公钥的正确性,因此,需要CA证书。

7.get与post的区别

  1. get用于获取数据,post可以修改服务器上的资源
  2. get在url中,post在http包内,都不安全
  3. get产生一个包,收到200ok。post分两个报,收到100 continure,和200 ok。
  4. get是幂等的,post不是幂等的

  幂等性:一次和多次请求具有相同的副作用,返回同样的结果

8.cookie和session

  cookie是客户端保持状态的方案,session是服务器保持状态的方案

  cookie保存在客户端本地,请求服务器时会将cookie一起提交;session保存在服务器端,通过检索sessionid查看状态

9.http常见状态码

  • 2xx:操作成功。200 ok
  • 3xx:重定向。301 永久重定向,302 暂时重定向
  • 4xx:客户端错误。400 bad request;401 unauthorized;403 forbidden;404 not found
  • 5xx:服务端错误。500 服务器内部错误;501 服务不可用

10.TCP如何保证可靠传输

  • 建立l连接(标志位):保证通信实体存在
  • 序号机制(序号,确认号):保证数据按序,完整到达
  • 数据校验(校验和):对数据进行CRC校验
  • 超时重传(定时器):保证丢了包会重传
  • 流量控制和拥塞控制
posted @ 2021-10-31 15:02  木木木999  阅读(47)  评论(0)    收藏  举报