计算机网络面试常见问题

729 阅读4分钟

HTTP缓存有什么好处?

缓存是一种保存资源副本并在下次请求时直接使用该副本的技术。当 web 缓存发现请求的资源已经被存储,它会拦截请求,返回该资源的拷贝,而不会去源服务器重新下载。这样带来的好处有:缓解服务器端压力,提升性能(获取资源的耗时更短了)。

HTTP & HTTPS区别?

HTTP使用明文传输,无加密,使用80端口;HTTPS也是HTTP协议,使用了TLS/SSL加密。
SSL工作流程:
1. 协商加密算法
2. 服务器鉴别
3. 会话密钥计算
4. 安全数据传输

SSL

TCP是什么,握手与挥手过程?

运输层的传输控制协议,面向连接的,有两个端点,通过socker连接,可靠交付, 全双工通信,面向字节流。
关注同步位和确认位置1,序号,确认号,AB状态变化:
三报文握手:

tcp-connect

四挥手释放:

第二次挥手后,TCP 连接处于半关闭(half-dose)状态,B 可以向A传输数据

HTTP是长连接还是短连接?

http1.0:
1. 客户端发出的报文header有“Connection:keep-alive”的请求。
2. 服务器接收后发现要求长连接,就在response的header中增加“Connection:keep-alive”,且不关闭连接。
3. 客户端收到服务端的response后,发现其中包含”Connection:keep-alive“,确认是一个长连接,不关闭这个连接。并用该连接再发送request。
4. 转到第一步,循环
http1.1:
1. 客户端直接发送http1.1,服务器自动判定为长连接,在response的header中增加“Connection:keep-alive”,且不关闭连接。
2. 客户端发现response中header有Connection:keep-alive,继续用这个连接发送请求。
4. 转到第一步,循环

服务器推送怎么实现?

这种技术是将所有的工作都交给服务器。服务器不断地运行与动态文档相 关联的应 用程序,定期更新信息,并发送更新过的文档。

TCP/UDP/HTTP区别?

UDP用户数据报协议:
1. 无连接
2. 不可靠连接,尽最大努力交付
3. 面向报文
4. 没有拥堵控制
TCP传输控制协议:
1. 面向连接
2. 通过套接字的点对点连接
3. 可靠连接,有握手和挥手
4. 使用无结构字节流
HTTP超文本传输协议:
1. HTTP位于运输层上面的应用层,TCP、UDP都处于运输层
2. HTTP使用TCP连接

HTTP状态码?

序号 意义 说明
1xx 通知信息 表示请求收到了或正在处理
2xx 成功 表示接受或知道了
3xx 重定向 表示完成请求还要采取必须的行动
4xx 客户端错误 表示语法错误、不能完成
5xx 服务器错误 表示服务器失效

抓包工具,怎么抓包HTTPS?

Charles 伪装为CA,Charles 通过自己的 CA 签名了一个自己的公钥,发送给客户端,客户端就误以为是服务器了,这样之后的流程都会先走到 Charles 然后才会走到目标服务器。

TCP滑动窗口?

作用:确保可靠传输
1. A->B发送报文,B返回确认,说好窗口字节数和确认号。
2. A可以生成下一个窗口值大小窗口,B目标窗口是确认号。A再发送窗口,B返回最高位确认序号。
3. A对最高序号确认,根据确认号向前移动,B也向前移动。


用UDP实现TCP?

就模仿TCP嘛,或者使用RUDP,RTP
1. 增加类似握手挥手过程,添加seq/ack机制
2. 增加发送接收缓存
3. 超时重传机制

HTTPS公钥暴露怎么办?

公钥本来就是暴露,私钥才要保存好。现在一般使用RSA非堆成算法,私钥不暴露。

HTTP分段上传文件怎么保证正确?

分段就是断点续传。增强校验,比如实现 Last-Modified 来标识文件的最后修改时间,也可以使用 ETag 头来放置文件的唯一标识。

计算机网络有哪几层,分别对应什么协议?

OSI七层,TCP四层,计算机网络五层


IP/TCP传输的都是什么数据?

IP传运输层TCP和UDP传过来的数据
TCP传应用层的HTTP、SMTP、FTP、DNS等的数据

DNS是什么,有什么作用?

域名系统,从域名解析出IP地址

对称/非对称加密?

对称:两边使用一样的密钥,例如AES
非对称:两边不一样密钥,一个公钥,向外公开,一个私钥,要保存好。例如RSA