正如其他论坛中提到的那样,面试官已经提出了下面给出的问题 我不知道确切的答案,但我会说HTTP请求?任何建议和解释
想象一下,用户坐在以太网连接的PC上。他打开了一个浏览器。他在地址栏中输入“www.google.com”并点击进入。
现在告诉我在以太网上出现的第一个数据包是什么。
谢谢
答案 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查找)