写点什么

对线面试官 - TCP 经典面试题

作者:派大星
  • 2023-08-15
    辽宁
  • 本文字数:1154 字

    阅读完需:约 4 分钟

面试官:如果不在一个子网应该如何传播?


派大星:可以通过路由器/网关。网关就是路由器的一种,运作在网络层。通过交换机走以太网协议进行一个传输数据包。如图:



派大星:交换机主要用来在一个子网/局域网内进行广播。路由器的作用是把不同的子网连接起来。疑问点来了:不同子网的设备通过路由器/网关只知道同一子网的 IP 地址,不知道对应 IP 地址的 MAC 地址啊; 其实这里还有重要的一点是每台机器都有自己的 ARP cache,这个 ARP 就是用来在一个局域网内让各个设备都知道自己每个设备的 IP 地址和 Mac 地址的对应关系。这样一广播大家都知道了。


面试官:用浏览器请求一个链接的时候,经历了哪些过程(DNS 解析过程)面试官心里分析:


主要考察的是网络基本功,看看有没有掌握基本的网络通信知识。这个问题相对比较经典。


派大星:假设我们现在有如下配置:


IP 地址:192.168.10.110 子网掩码:255.255.255.0 网关地址:192.168.10.1DNS 地址: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,备注- 技术交流 。或关注微信公众号【码上遇见你】。




发布于: 刚刚阅读数: 4
用户头像

派大星

关注

微信搜索【码上遇见你】,获取更多精彩内容 2021-12-13 加入

微信搜索【码上遇见你】,获取更多精彩内容

评论

发布
暂无评论
对线面试官 - TCP 经典面试题_Java 面试题_派大星_InfoQ写作社区