什么数据包将在发送请求时首先到达

时间:2011-10-20 00:06:09

标签: networking tcp udp dns

正如其他论坛中提到的那样,面试官已经提出了下面给出的问题 我不知道确切的答案,但我会说HTTP请求?任何建议和解释

想象一下,用户坐在以太网连接的PC上。他打开了一个浏览器。他在地址栏中输入“www.google.com”并点击进入。

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

谢谢

3 个答案:

答案 0 :(得分:5)

没有保证始终正确的答案,但有一些可能的可能性。

如果客户端配置为DNS over UDP,则第一个数据包将是包含DNS query的UDP数据报,以解析www.google.com到IP地址。

如果客户端配置为DNS over TCP并且浏览器尚未与DNS服务器建立TCP连接,则第一个数据包将成为DNS连接握手的一部分,因此答案将是SYN数据包首先出门。

如果浏览器已编码为维持与DNS服务器的长期TCP连接,并假设DNS服务器已允许连接保持活动状态,则第一个数据包将是DNS查询,通过现有连接发送到该服务器DNS服务器。

最后,如果浏览器最近最近访问过www.google.com并且构建为对DNS查询结果进行一些智能本地缓存,则第一个数据包将成为SYN以建立与Google的Web服务器的新连接。

如果你想成为滑稽但绝对精确的话,请下拉一层以获得答案并说出“第一个数据包输出将是一个包含有效载荷的以太网帧,它支持任何需要更高级别的协议用于浏览器提供www.google.com“。公平地说,问题是关于以太网层......

答案 1 :(得分:2)

严格来说,在完全空白的情况下,发送的第一个数据包将是来自客户端PC的ARP广播请求(“谁有?”),试图发现其默认网关(或其DNS服务器的MAC地址)与客户端在同一子网上。)

答案 2 :(得分:0)

有意思:)我只是简单地说道:

Client sends a SYN
Server replies with a SYN,ACK
Client sends an ACK
Client sends an HTTP GET

(就像你在评论中提到的那样,第一个显然是DNS查找)