计算机网络--常见面试题
1.从在浏览器输入url开始到页面呈现给用户,发生了什么
- 浏览器解析URL地址
- 主机向本地DNS服务器发起请求(本地向根域名服务器发起请求)
- 本地DNS服务器将URL对应的IP地址发送给本地主机
- TCP三次握手
- 客户端(主机)发起http请求
- 服务器响应http请求,浏览器得到HTML文件
- TCP四次挥手
- 浏览器解析文件,并进行渲染
在guthub上,有详细的24个步骤
2.DNS工作原理
总结:浏览器缓存,系统缓存,路由器缓存,IPS服务器缓存,根域名服务器缓存,顶级域名服务器缓存,主域名服务器缓存。查询基于UDP,区域传送(主从复制)基于TCP
- 主机向本地服务器的查询采用递归查询
- 本地域名服务器向根域名服务器的查询采用迭代查询
- 当用户输入域名时,浏览器检查缓存中是否有该域名映射的IP
- 若没命中,检查系统缓存
- 若没命中,请求LDNS本地域名服务器
- 若没有命中,LDNS先向根域名服务器发起请求,收到恢复后,查询顶级域名服务器,依次逐级查询,直至找到name server,并返回对应的IP
- LDNS缓存这个域名和对应的IP,将解析结果返回给用户
- 用户根据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的区别
- get用于获取数据,post可以修改服务器上的资源
- get在url中,post在http包内,都不安全
- get产生一个包,收到200ok。post分两个报,收到100 continure,和200 ok。
- 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校验
- 超时重传(定时器):保证丢了包会重传
- 流量控制和拥塞控制
浙公网安备 33010602011771号