计算机网络常见面试题


1.路由器与交换机的区别是什么?

  • 在OSI七层模型中,交换机主要工作在数据链路层(第二层),路由器工作在网络层(第三层)。
  • 交换机转发所依据的对象是物理地址,也就是MAC地址,而路由器转发所依据的对象时网络地址,也就是IP地址。
  • 交换机主要用于组建局域网,而路由主要功能是将由交换机组好的局域网相互连接起来,或者接入互联网。

2.ping的原理是什么?

ping是用来探测本机与网络中另一主机之间是否可达的命令,如果两台主机之间ping不通,则表明这两台主机不能建立起连接。利用ping命令可以检查网络是否通畅或者网络连接速度,很好地分析和判定网络故障。

  • ping的原理是基于ICMP(Internet Control Messages Protocol)来工作的,即因特网信报控制协议;
  • ping命令利用了ICMP两种类型的控制消息:“echo request”(回显请求)、“echo reply”(回显应答)。
  • 在主机A上执行ping命令,目标主机是B。在A主机上就会发送“echo request”(回显请求)控制消息,主机B正确接收后即发回“echo reply”(回显应答)控制消息,通过对方回复的数据包来确定两台网络机器是否连接相通,时延是多少。

ping命令本身处于应用层,相当于一个应用程序。它使用的ICMP协议是一个网络层协议,也就是说,ping是一个应用层直接使用网络层协议的例子。像我们常见的HTTP协议是依赖的传输层协议TCP/UDP,而传输层的协议再依赖网络层的IP协议。

3.ping为什么不需要端口号?

ping 命令在网络诊断中是一种常用工具,用于测试目标主机的连通性和响应时间。

ping 命令是基于 ICMP 协议的,ICMP 是 IP 协议的一部分,用于传递控制消息。ping命令本身处于应用层,相当于一个应用程序。它使用的ICMP协议是一个网络层协议。

但是,我们通常用到的端口号,其实是传输层(如 TCP 和 UDP)的一部分,用于区分同一 IP 地址上的多个服务或应用程序。

由于,ping是一个应用层直接使用网络层协议的例子,不涉及到传输层,所以不需要指定端口号。

4.浏览器输入网址,敲回车会发生什么?

  1. URL解析,对URL自动编码,然后检查长度,之后根据url查看浏览器是否缓存了该页面
  2. DNS查询,依次通过浏览器缓存,OS hosts缓存,路由器缓存,ISP缓存和根域名服务器去查询对应的ip
  3. 浏览器将请求封装为HTTP报文,在client和server建立连接之前,会进行TCP三次握手
  4. 之后将报文从外到里封装为 以太网首部+ip首部+tcp首部+http首部经过网关和路由器发送给server
  5. 对于淘宝来说,请求会先到nginx服务器上,然后nginx采用默认的轮询算法进行负载均衡,携带原来browser的ip把报文发送给Servlet容器
  6. Servlet容器接收到请求之后会解析请求行,请求体,请求头,然后交给MVC处理
  7. DispatcherServlet接收到请求后,通过请求路径返回相应的拦截器和Controller;
  8. 在Controller中会进行业务逻辑的执行,可能会调用下层的Service以及持久层进行数据的CRUD。
  9. 对Controller进行处理并返回ModelAndView;然后在通过ViewResolve对ModelAndView进行处理,返回View视图;最后一步是进行渲染View,产生response
  10. 浏览器接收response,HTTP响应报文的头部包含了状态码(Status-Code),并进行缓存和解码
  11. 浏览器渲染页面

文章作者: Fuchanglai
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 Fuchanglai !
赏
  目录