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