avatar

计算机网络10道问题

计算机网络问题(准备中)


1. TCP三次握手机制,为什么要三次握手?

TCP最大的特点是可靠性,同时TCP不同于HTTP协议,TCP是双工的,TCP的Client和Server端可以互换。所以在建立连接的时候必须一端发送请求,另一端回复收到才行。这里最重要的就是双方都要获取对方的序列号(Sequence Number)(当然也需要同步报文长度、滑动窗口等等)。
所以会存在一个疑问,就是Client发送ACK,Server发送收到,Server再发送请问,Client发送收到,双方为什么不是四次握手?
原因在于建立连接的时候不同于关连接的操作,关连接时Client可以一直等待Server端,没有时间要求。但是要建立连接的时候是不允许的,Client端不能长时间等待Server端的消息,必须一次将Seq和ACK发送过来。

2. HTTP协议中缓存的处理流程?

3. 在地址栏键入URL后,网络世界发生了什么?

键入URL后,域名要通过DNS解析成为IP地址,然后经历缓存(Cache,因为发音酷似cash,经常用$代替),缓存没有命中的话,会经历正向代理(正向代理过程中可能也有缓存),然后再去DNS解析,从反向代理到负载均衡(可能也有缓存),再到原服务器。

HTTP请求.PNG

1
2
浏览器地址栏:developer.mozilla.org
HTTP请求编码:

HTTP请求编码.PNG

4. 使用HTTP长连接有哪些优点?

4.1 长连接与短连接的区分:
1
2
3
语法:
Connection: keep-alive
Connection: close

connection后面跟close的时候就是短连接(串行连接),当服务器回复完response后就关连接,如果再连接需要重新建立连接。
后面是keep-alive的时候就是长连接(持久连接),不需要重新三次握手。

4.2 长连接的优点
  • 减少握手次数
  • 减少慢启动影响慢启动:因为公网的带宽有限,开始再公网的传输速度很慢,逐渐增加传输速度至一个合适的速度就是慢启动的过程)。
4.3 缺点
  • TCP因为传输协议的特点,可能会出现队头阻塞的问题,即传输一个文件的过程中一个报文丢包后,对方的应用层也不能接收,即需要重新传输就会出现阻塞现象。

5. 介绍下CLOSE_WAIT状态产生的原因?

TCP在关连接的时候就不再提Client和Server了,而要考虑谁先主动关。
CLOSE_WAIT的状态就是对应第一个问题的等待情况,当发送应答之后会进入CLOSE_WAIT状态,这个等待可以持续很长时间,但是一般不会真的持续很长时间,如果真的持续很长时间可能是出bug了。
CLOSE_WAIT.PNG

6. 能介绍下多播是怎样实现的吗?

多播在局域网中目前应用较少(5G的到来可能会带来改变),广域网一般是单播。
当一个用户给100个用户发送1G的文件,则在单播的条件下需要发送端的CPU重复复制100份再传输,发送端的流量也需要100G。但是如果是多播,则复制等操作是由交换机来完成的,网络带宽需要的也更少。

7. 服务器的最大并发连接数是多少?

248

  • 延伸: 怎样实现高并发?
    不要处理一个问题的时间太长,要把一个请求切的非常小,考虑事件驱动、无阻赛

  • 延伸: Linux下高并发优化?
    TCP连接如何设置以发出更多的消息,进程、线程的优化。

8. TCP和UDP协议如何选择?

UDP TCP
一对多通讯 传递任意长度信息
效率高 可靠
简单、 流量控制
- 实时性更好(无对头阻塞) 拥塞控制

9. TLS/SSL协议是怎样保障信息安全的?

利用加密密钥实现

10. HTTP2协议有哪些优点?

10.1 HTTP1.0有哪些缺点?

header实在太长,不支持多路复用。

10.2 2.0的解决方案
  • 多路复用,消息推送
  • HPACK编码: 动态表、静态表、静态Huffman,整数编码
  • Stream优先级: 父子依赖,权重
Author: TheOutsider
Link: http://yoursite.com/2020/04/01/%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%BD%91%E7%BB%9C10%E9%81%93%E9%97%AE%E9%A2%98/
Copyright Notice: All articles in this blog are licensed under CC BY-NC-SA 4.0 unless stating additionally.