计算机网络问题

幻昼 2020年03月15日 404次浏览

HTTP缓存有什么好处?

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

HTTP & HTTPS区别?

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

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

关注同步位和确认位置1,序号,确认号,AB状态变化:
三报文握手:Bob 给 Alice 的 ACK ,可以和 Bob 向 Alice 发起的 SYN 合并,称为一条 SYN-ACK 消息。TCP 协议以此来减少握手的次数,减少数据的传输,于是 TCP 就变成了三次握手。
三次握手
四挥手释放:第 2 步和 第 3 步在挥手的过程中不能合并为 FIN-ACK。原因是在挥手的过程中,Alice 和 Bob 都可能有未完成的工作。比如对 Bob 而言,可能还存在之前发给 Alice 但是还没有收到 ACK 的请求。
四挥手
第二次挥手后,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区别?

UDP用户数据报协议:
1. 无连接
2. 不可靠连接,尽最大努力交付
3. 没有拥堵控制
TCP传输控制协议:
1. 通过套接字的点对点连接
2. 可靠连接,有握手和挥手

3.有拥堵控制

HTTP状态码?

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

抓包工具,怎么抓包HTTPS?

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

用UDP实现TCP?

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

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

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

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

计算机网络五层
网络五层
image.png

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

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

DNS是什么,有什么作用?

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

对称/非对称加密?

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