browser - 开始浏览时发送的第一个数据包

标签 browser network-programming network-protocols packet arp

想象一下,一位用户坐在一台连接以太网的 PC 前。他打开了一个浏览器。他在地址栏中输入“www.google.com”并按回车键。

现在告诉我以太网上出现的第一个数据包是什么。

我在这里发现了这个问题:Interview Questions on Socket Programming and Multi-Threading

因为我不是网络专家,所以我想听听答案(我假设是“视情况而定”;))。

使用像 Wireshark 这样的工具,我显然可以检查我自己的计算机行为。我想知道我看到的数据包(例如 ARP、DNS、VRRP)在每个以太网配置中是否相同(它取决于操作系统吗?驱动程序?浏览器甚至:)?)以及哪些是条件他们出现了。在数据链路层,它甚至可能依赖于物理网络(连接到集线器/交换机/路由器)吗?

最佳答案

关于使用ARP寻找DNS服务器的答案一般都是错误的。

特别是,从不使用 ARP 完成网外 IP 地址的 IP 地址解析,并且路由器不负责回答此类 ARP 查询。

网外路由由客户端 机器完成,它知道哪些 IP 地址在它所连接的本地子网上。如果请求的 IP 地址不是本地的,则客户端计算机会引用其路由表以找出将数据包发送到哪个网关。

因此在大多数情况下,第一个发送的数据包将是一个 ARP 请求,用于查找默认网关的 MAC 地址,如果它不在 ARP 缓存中的话。

只有这样它才能通过网关发送 DNS 查询。在这种情况下,发送的数据包在 IP 目标字段中带有 DNS 服务器的 IP 地址,但在以太网数据包中带有网关的 MAC 地址。

关于browser - 开始浏览时发送的第一个数据包,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/666864/

相关文章:

css - 按钮文本被排除在页内搜索之外——有没有一种干净的方法来模拟它?

c++ - 如何知道一个完成数据包是用于 WSASend() 或 WSARecv() 还是 AcceptEx()?

使用无需驱动程序的 IPP 进行打印(IPP 客户端)

java - 有没有办法让 Android 设备充当 NTRIP 客户端?

windows - Windows 版 Safari 和 Mac 版 Safari 之间的区别

CSS:调整 Logo 大小,同时保持浏览器的外观

testing - Protractor 实例与浏览器

java - 尝试使一个简单的回显客户端服务器程序在两台计算机之间工作

c++ - UDP winsock 服务器 C++

networking - DNS 应答返回没有 IP 地址的 NS 记录,这正常吗?