Skip to content

Latest commit

 

History

History
114 lines (101 loc) · 10.4 KB

计算机网络常见面试题总结.md

File metadata and controls

114 lines (101 loc) · 10.4 KB

计算机网络基础

OSI和TCP/IP网络分层模型

相关面试题:

  • OSI七层模型是什么?每一层作用是什么?
  • TCP/IP四层模型是什么?每一层的作用是什么?
  • 为什么网络要分层?

应用层有哪些常见的协议?

TCP与UDP

TCP和UDP的区别(很重要)

  1. **是否面向连接:**UDP在传送数据之前不需要先建立连接。而TCP提供面向连接的服务,在传送数据之前必须先建立连接,数据传送结束后要释放连接。
  2. **是否是可靠运输:**远地主机在收到UDP报文后,不需要给出任何确认,并且不保证数据不丢失,不保证是否顺序到达。TCP提供可靠的运输服务,TCP在传输数据之前,会有三次握手来建立连接,而且在数据传递时,有确认、窗口、重传、拥塞来控制机制。通过TCP连接传输的数据,无差错、不丢失、不重复、并且按序到达。
  3. **是否有状态:**这个和上面的“是否可靠运输”相对应。TCP传输是有状态的,这个状态说的是TCP会去记录自己发送消息的状态比如消息是否发送了、是否被接收了等等。为此,TCP需要维持复杂的连接状态等。而UDP是无状态服务,简单来说就是不管发出去之后的事情了。
  4. **传输效率:**由于TCP进行传输的时候多了连接、确认、重传等机制,所以TCP的传输效率要比UDP低很多。
  5. **传输形式:**TCP是面向字节流的,UDP是面向报文的。
  6. **首部开销:**TCP首部开销(20-60字节)比UDP首部开销(8字节)要大。
  7. **是否提供广播或多播服务:**TCP支支持点对点通信,UDP支持一对一、一对多、多对一、多对多。
  8. ...

image.png

什么时候选择TCP,什么时候选择UDP?

  • **UDP一般用于即时通信,**比如:语音、视频、直播等。这些场景对传输数据的准确性要求不是特别高,比如你看视频即使少两个帧,实际给人的感觉区别并不是特别大。
  • **TCP用于对传输专区恶行要求特别高的场景:**比如文件传输、发送和接收右键、远程登录等。

HTTP是基于TCP还是UDP?

HTTP3.0之前是基于TCP协议的,而HTTP3.0将弃用TCP,改用**基于UDP的QUIC协议。**此变化主要为了解决HTTP/2中存在的队头阻塞问题。由于HTTP/2在单个TCP连接上使用了多路复用,收到TCP拥塞控制的影响,少量的丢包就可能导致整个TCP连接上的所有流被阻塞。

使用TCP的协议有哪些?使用UDP的协议有哪些?

运行于TCP协议之上的协议:

  • HTTP 协议 :超文本传输协议(HTTP,HyperText Transfer Protocol)主要是为 Web 浏览器与 Web 服务器之间的通信而设计的。当我们使用浏览器浏览网页的时候,我们网页就是通过 HTTP 请求进行加载的。
  • HTTPS 协议 :更安全的超文本传输协议(HTTPS,Hypertext Transfer Protocol Secure),身披 SSL 外衣的 HTTP 协议
  • FTP 协议:文件传输协议 FTP(File Transfer Protocol),提供文件传输服务,基于 TCP 实现可靠的传输。使用 FTP 传输文件的好处是可以屏蔽操作系统和文件存储方式。
  • SMTP 协议:简单邮件传输协议(SMTP,Simple Mail Transfer Protocol)的缩写,基于 TCP 协议,用来发送电子邮件。注意 ⚠️:接受邮件的协议不是 SMTP 而是 POP3 协议。
  • POP3/IMAP 协议: POP3 和 IMAP 两者都是负责邮件接收的协议。
  • Telnet 协议:远程登陆协议,通过一个终端登陆到其他服务器。被一种称为 SSH 的非常安全的协议所取代。
  • SSH 协议 : SSH( Secure Shell)是目前较可靠,专为远程登录会话和其他网络服务提供安全性的协议。利用 SSH 协议可以有效防止远程管理过程中的信息泄露问题。SSH 建立在可靠的传输协议 TCP 之上。

运行于UDP之上的协议:

  • **DHCP协议:**动态主机配置协议,动态配置IP地址
  • **DNS:域名系统(DNS,Domain Name System)将人类可读的域名转换为机器可读的IP地址。**实际上DNS同时支持UDP和TCP。

TCP三次握手和四次挥手(重要)

相关面试题:

  • 为什么要三次握手?
  • 第二次握手传回了ACK,为什么还要传回SYN?
  • 为什么要四次挥手?
  • 为什么不能把服务器发送的ACK和FIN合并起来,变成三次挥手?
  • 如果第二次挥手时服务器的ACK没有东到客户端,会怎样?
  • 为什么第四次挥手客户端需要等待2*MSL事件后才进入CLOSED状态。

TCP如何保证传输的可靠性?(重要)

HTTP

从输入URL到页面展示到底发生了什么?(非常重要)

总体来说分为以下几个过程:

  1. DNS解析
  2. TCP连接
  3. 发送HTTP请求
  4. 服务器处理请求并返回HTTP报文
  5. 浏览器解析渲染页面
  6. 连接结束

HTTP状态码有哪些?

image.png

HTTP和HTTPS有什么区别?(重要)

  • **端口号:**HTTP默认是80,HTTPS默认是443.
  • **URL前缀:**HTTP的前缀是http://,HTTPS的URL前缀是https://
  • 安全性和资源消耗: HTTP 协议运行在 TCP 之上,所有传输的内容都是明文,客户端和服务器端都无法验证对方的身份。HTTPS 是运行在 SSL/TLS 之上的 HTTP 协议,SSL/TLS 运行在 TCP 之上。所有传输的内容都经过加密,加密采用对称加密,但对称加密的密钥用服务器方的证书进行了非对称加密。所以说,HTTP 安全性没有 HTTPS 高,但是 HTTPS 比 HTTP 耗费更多服务器资源。

HTTP1.0和HTTP1.1有什么区别?

  • 连接方式 : HTTP 1.0 为短连接,HTTP 1.1 支持长连接。
  • 状态响应码 : HTTP/1.1中新加入了大量的状态码,光是错误响应状态码就新增了24种。比如说,100 (Continue)——在请求大资源前的预热请求,206 (Partial Content)——范围请求的标识码,409 (Conflict)——请求与当前资源的规定冲突,410 (Gone)——资源已被永久转移,而且没有任何已知的转发地址。
  • 缓存处理 : 在 HTTP1.0 中主要使用 header 里的 If-Modified-Since,Expires 来做为缓存判断的标准,HTTP1.1 则引入了更多的缓存控制策略例如 Entity tag,If-Unmodified-Since, If-Match, If-None-Match 等更多可供选择的缓存头来控制缓存策略。
  • 带宽优化及网络连接的使用 :HTTP1.0 中,存在一些浪费带宽的现象,例如客户端只是需要某个对象的一部分,而服务器却将整个对象送过来了,并且不支持断点续传功能,HTTP1.1 则在请求头引入了 range 头域,它允许只请求资源的某个部分,即返回码是 206(Partial Content),这样就方便了开发者自由的选择以便于充分利用带宽和连接。
  • Host头处理 : HTTP/1.1在请求头中加入了Host字段。

HTTP是不保存状态的协议,如何保存用户状态?

HTTP 是一种不保存状态,即无状态(stateless)协议。也就是说 HTTP 协议自身不对请求和响应之间的通信状态进行保存。那么我们保存用户状态呢?Session 机制的存在就是为了解决这个问题,Session 的主要作用就是通过服务端记录用户的状态。典型的场景是购物车,当你要添加商品到购物车的时候,系统不知道是哪个用户操作的,因为 HTTP 协议是无状态的。服务端给特定的用户创建特定的 Session 之后就可以标识这个用户并且跟踪这个用户了(一般情况下,服务器会在一定时间内保存这个 Session,过了时间限制,就会销毁这个 Session)。
在服务端保存 Session 的方法很多,最常用的就是内存和数据库(比如是使用内存数据库 redis 保存)。既然 Session 存放在服务器端,那么我们如何实现 Session 跟踪呢?大部分情况下,我们都是通过在 Cookie 中附加一个 Session ID 来方式来跟踪。

Cookie被禁用怎么办?

最常用的就是利用URL重写把Session ID直接附加在URL路径的后面。

URI和URL的区别是什么?

  • URI(Uniform Resource Identifier) 是统一资源标志符,可以唯一标识一个资源。
  • URL(Uniform Resource Locator) 是统一资源定位符,可以提供该资源的路径。它是一种具体的 URI,即 URL 可以用来标识一个资源,而且还指明了如何 locate 这个资源。

URI 的作用像身份证号一样,URL 的作用更像家庭住址一样。URL 是一种具体的 URI,它不仅唯一标识资源,而且还提供了定位该资源的信息。

ARP

什么是MAC地址

MAC 地址的全称是 媒体访问控制地址(Media Access Control Address)。如果说,互联网中每一个资源都由 IP 地址唯一标识(IP 协议内容),那么一切网络设备都由 MAC 地址唯一标识。

ARP协议解决了什么问题,地位如何?

ARP协议,全称地址解析协议(Address Resolution Protocol), 它解决的是网络层地址和链路层地址之间的转换问题。因为一个 IP 数据报在物理上传输的过程中,总是需要知道下一跳(物理上的下一个目的地)该去往何处,但 IP 地址属于逻辑地址,而 MAC 地址才是物理地址,ARP 协议解决了 IP 地址转 MAC 地址的一些问题。

ARP协议的工作原理