面试官:如果不在一个子网应该如何传播?
派大星:可以通过路由器/网关。网关就是路由器的一种,运作在网络层。通过交换机走以太网协议进行一个传输数据包。如图:
派大星:交换机主要用来在一个子网/局域网内进行广播。路由器的作用是把不同的子网连接起来。疑问点来了:不同子网的设备通过路由器/网关只知道同一子网的IP地址,不知道对应IP地址的MAC地址啊; 其实这里还有重要的一点是每台机器都有自己的ARP cache,这个ARP就是用来在一个局域网内让各个设备都知道自己每个设备的IP地址和Mac地址的对应关系。这样一广播大家都知道了。
面试官:用浏览器请求一个链接的时候,经历了哪些过程(DNS解析过程) 面试官心里分析:
主要考察的是网络基本功,看看有没有掌握基本的网络通信知识。这个问题相对比较经典。
派大星:假设我们现在有如下配置:
IP地址:192.168.10.110 子网掩码:255.255.255.0 网关地址:192.168.10.1 DNS地址:8.8.8.8
派大星:当我们在浏览器中数据**www.baidu.com**并回车的时候:`1`如果在本地的 hosts 文件没有能够找到对应的 ip 地址;会通过DNS服务器将www.baidu.com解析一个IP地址(172.168.10.110)并返回,返回之后本机电脑会判断返回的IP地址与当前IP地址是不是一个子网的(通过将两个IP地址的二进制与子网掩码的二进制进行与运算,并判断前面的3部分二进制是否一样),得出的结果指定不在一个子网下。
因为两个IP地址不在一个子网内,所以此时只能将数据包先通过以太网协议广播到网关上去,通过网关再发送出去。
2浏览器会请求这个地址,先是按照应用层的http协议封装一个应用层的数据包,数据包里放了http请求报文。3接着会走到传输层,假设这层设置的是TCP协议,此时会把应用层的数据包封装到TCP数据包中去,并携带TCP头,TCP头中包含收发端口号信息。4接下来会走到网络层,这层是IP协议,此时会把TCP头和TCP数据包放到IP数据包里面去,并携带IP头(包含本机192.168.10.110和目标机器的IP地址172.168.10.110)。5下一步走到数据链路层(以太网协议),并将数据打包成以太网数据包,并携带以太网标头(包含发送者网卡Mac地址、接收者网卡Mac地址-> 对应的是网关192.168.10.1的Mac地址)
- 注意:以太网的数据包是有大小限制的,最大只能是1500字节。如果一个数据包过大则会进行切分并标记好顺序。
最后会将切割好的以太网数据包发送到网关上去(192.168.10.1),网关可能会发送到别的网关上去,经过N次这样的转发会转发到目标服务器上
目标服务器接收到切割好的以太网数据包后,会根据IP头的序号将切割分裂的数据包进行拼接并还原出一个完整的数据包,接着一层一层的进行提取知道提取到http请求报文,http请求会直接到应用的Tomcat上去,然后就是Spring MVC,MyBatis这样一个常规的处理流程。
如有问题,欢迎加微信交流:w714771310,备注- 技术交流 。或关注微信公众号【码上遇见你】。