想象一下,用户坐在以太网连接的PC上.他打开了一个浏览器.他在地址栏中输入"www.google.com"并点击进入.
现在告诉我在以太网上出现的第一个数据包是什么.
我在这里找到了这个问题:关于套接字编程和多线程的访谈问题
由于我不是网络专家,我想听听答案(我认为这是"它取决于";)).
使用像Wireshark这样的工具,我显然可以检查自己的计算机行为.我想知道我看到的数据包(例如ARP,DNS,VRRP)在每个以太网配置中是否相同(它依赖于操作系统?驱动程序?浏览器甚至:)?)以及哪些条件它们出现了.在数据链路层,它是否可能依赖于物理网络(连接到集线器/交换机/路由器)?
谈论使用ARP查找DNS服务器的答案通常是错误的.
特别是,使用ARP 永远不会对网外IP地址进行IP地址解析,并且路由器不负责回答这样的ARP查询.
离线路由由客户端机器完成,知道哪些IP地址在它所连接的本地子网上.如果请求的IP地址不是本地的,则客户端机器参考其路由表以找出将数据包发送到哪个网关.
因此,在大多数情况下,发出的第一个数据包将是一个ARP请求,用于查找默认网关的MAC地址(如果它尚未在ARP缓存中).
只有这样才能通过网关发送DNS查询.在这种情况下,数据包与IP目标字段中的DNS服务器的IP地址一起发送,但是在以太网数据包上使用网关的MAC地址.
你总是可以下载wireshark并看一看.
虽然破坏了乐趣.
假设没有缓存主机的IP地址,并且没有缓存DNS服务器的MAC地址,首先要发送的是广播ARP消息,试图找出DNS服务器的MAC地址(路由器将响应自己的地址).
接下来,将使用DNS解析主机名.然后使用ARP解析返回的IP地址(路由器将再次使用自己的地址进行响应),最后,实际将发送HTTP消息.