ping通www.baidu.com的完整过程。

本文详细阐述了通过ping命令访问www.baidu.com时的网络通信流程,涉及DNS查询、ARP协议、IP数据报封装、ICMP协议以及路由器的转发机制。从主机查找本地DNS缓存开始,到最终获取并发送ICMP回显请求,再到接收到ICMP回显应答,整个过程清晰地展示了网络通信的基本原理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

ping通www.baidu.com的完整过程。

用tcpdump抓包和wireshark软件分析抓到的包,通过抓到的包、自己的知识储备,结合网络知识分析ping程序的网络完整过程。

1、主机查找本地系统Hosts文件的DNS缓存,如果存在www.baidu.com对应的IP,则获取IP;

2、若本地系统没有对应IP,主机操作系统生成一个DNS查询报文,将字符串www.baidu.com放入DNS报文段中。该DNS报文段被放置于53号(DNS服务器)目的端口的UDP报文段。该UDP报文则被放入具有IP目的地址(在网络初始化阶段DHCP ACK返回的DNS服务器地址)和源IP地址的IP数据报中;

3、主机将包含DNS请求报文的数据报放入一个以太网帧中。该帧将发送(在链路层寻址)到虚拟机网络中的网关路由器。网络初始化时知道了虚拟机局域网的网关路由器的IP地址,但是仍不知道该网关路由器的MAC地址,主机将使用ARP协议;

4、主机生成一个具有目的IP地址的ARP查询报文,将该ARP报文放置在一个具有广播目的地址(FF:FF:FF:FF:FF:FF)的以太网帧中并向交换机发送该以太网帧,交换机将该帧交付给所有连接的设备,包括网关路由器;

4、网关路由器接收到包含该ARP查询报文的帧,发现在ARP查询报文中目标IP地址匹配接口的IP地址,网关路由器将准备一个ARP回答,指示该接口的MAC地址对应目标IP地址。它将ARP回答放在一个以太网帧中,目的地址为主机MAC地址,并向交换机发送该帧,交换机向主机发送该帧;

5、主机接收包含ARP回答的帧,并从ARP回答报文中抽取网关路由器的MAC地址;

6、主机向交换机发送2中包含DNS查询报文的帧,交换机将该帧发送给网关路由器

7、网关路由器接受该帧并抽取包含DNS查询的数据报。路由器查找该数据报的目的地址,并根据其转发表(根据自身域内协议和英特网域间协议BGP填写)决定该数据报最佳转发链路,经过数个路由器重复网关路由器的过程,最终到达DNS服务器。DNS服务器抽取出DNS查询报文,在数据库中查找www.baisu.com及其IP地址的DNS源记录。该DNS服务器形成一个包含这种主机名到IP地址映射的DNS回答报文,并将该报文放到UDP报文段中,报文段放入寻址到主机的IP数据报中,反向转发到主机。

8、若DNS服务器不存在www.baidu.com的记录与其对应的IP地址,则本地DNS服务器将主机报文发送到根DNS服务器,根服务器匹配com后缀并向本地DNS服务器返回负责com的TLD的IP地址列表。本地服务器再次向列表的TLD DNS服务器之一发送请求,该TLD服务器利用权威DNS服务器的Ip地址进行响应,最后本地DNS服务器直接向权威服务器发起请求,权威DNS服务器将返回响应报文,逐层返回给本地主机。至此,主机获得www.baidu.com对应的IP地址。

9、主机通过www.baidu.com的IP地址的子网掩码判断出该地址跨网段并将ICMP类型8编码0的请求回显查询报文封装成IP数据报,源地址为主机的IP地址,目的地址时域名对应的IP地址。主机再将该IP数据报封装成MAC帧,源地址是主机的MAC地址,目的地址是网关路由器的MAC地址

10、主机发送MAC帧,经过交换机发送到网关路由器,路由器解封装该帧,发现MAC目的地址是自己,而IP目的地址不是自己,将帧的MAC源地址改为自己的MAC地址,根据路由协议计算出最短路径的下一个网关路由器的MAC地址(若不知道MAC地址,则如同3、4那样经由ARP协议获取下一个网关的MAC地址),作为该帧的目的地址,直至最后一个网关路由器接收到该帧,找到子网内IP地址符合目的IP地址的主机www.baidu.com,将该IP数据包转发给该主机。主机接受ICMP请求报文后,生成一个ICMP类型0编码0的回显应答报文,经过多层封装,由ARP协议的相互学习性获得的MAC地址,经由多个网关路由器,转送到本地主机,本地主机接受到该ICMP报文后,证明两个主机ping通。

ICMP协议:ICMP是TCP/IP协议族的一个子协议,工作在网络互联层(网络层)。ICMP协议是一种面向无连接的协议,用于传输出错报告控制信息。用于在IP主机、路由器之间传递控制消息。控制消息是指网络通不通、主机是否可达、路由是否可用等网络本身的消息。这些控制消息虽然并不传输用户数据,但是对于用户数据的传递起着重要的作用。

利用nslookup能够查询URL对应的IP地址,并能查看DNS服务器的地址

用tcpdump抓包和wireshark软件分析抓到的包

<think>嗯,用户的问题是Jetson Nano在Ubuntu 18.04下无法解析域名,具体现象是ping www.baidu.com时出现“Name or service not known”。首先,我需要考虑DNS解析失败的可能原因。常见的原因包括DNS配置错误、网络连接问题、DNS服务未运行,或者防火墙设置阻止了DNS请求。 首先,检查网络连接是否正常。用户应该确认Jetson Nano能够访问互联网,比如ping一个IP地址,比如114.114.114.114。如果IP能但域名不能解析,问题可能出在DNS配置上。 接下来,查看/etc/resolv.conf文件,确认里面是否有正确的DNS服务器地址。有时候这个文件会被DHCP覆盖,或者配置不正确。如果发现里面的DNS服务器不可用,可以手动添加如8.8.8.8或114.114.114.114这样的公共DNS。 另外,检查/etc/nsswitch.conf中的hosts配置,确保files dns的顺序正确,这样系统会先查看/etc/hosts文件,然后过DNS解析。如果配置错误,可能导致DNS查询不被使用。 如果用户使用DHCP,可能需要检查网络接口的配置文件,比如/etc/network/interfaces或/etc/netplan/*.yaml,确保DHCP正确获取DNS配置。有时候重启网络服务或使用dhclient可以刷新DHCP租约,获取正确的DNS设置。 还有可能需要检查DNS解析服务是否正常运行,比如systemd-resolved的状态,并尝试重启相关服务。防火墙设置也可能阻止DNS查询的53端口,需要检查iptables或ufw的规则。 如果以上步骤都无效,可能需要考虑手动设置静态DNS,修改Netplan配置文件,并应用新的配置。此外,测试DNS解析命令如nslookup或dig可以帮助诊断问题所在。 用户提供的参考引用中提到了内部DNS服务器的架设和DHCP客户端的配置,这可能提示用户的环境中可能存在内部网络配置问题,或者DHCP未正确分配DNS服务器。需要确保DHCP配置正确,或者手动指定可靠的DNS服务器。 总结可能的解决步骤:检查网络性→验证DNS配置→检查相关服务状态→调整防火墙设置→手动设置DNS。同时,生成相关问题可以帮助用户进一步排查其他潜在问题,比如检查路由表或hosts文件,以及系统更新问题。</think>### Jetson Nano Ubuntu 18.04 DNS解析失败解决方案 #### 1. 检查网络性 - **验证基础网络连接** 先确认设备能够访问互联网: ```bash ping 114.114.114.114 # 测试是否能连公共DNS服务器IP ``` - 若IP可但域名无法解析,问题集中在DNS配置 - 若IP不,需检查物理连接或路由器配置[^1] #### 2. 验证DNS配置文件 - **检查`/etc/resolv.conf`** 该文件定义DNS服务器地址,需包含有效条目: ```bash $ cat /etc/resolv.conf nameserver 8.8.8.8 # 示例:添加Google DNS nameserver 114.114.114.114 ``` - 若文件被重置(如DHCP覆盖),需过以下方式固化配置: ```bash $ sudo vim /etc/resolvconf/resolv.conf.d/head # 添加永久DNS配置 ``` #### 3. 检查DNS解析顺序 - **修改`/etc/nsswitch.conf`** 确保解析顺序为`files dns`(优先本地文件,再DNS查询): ```bash $ sudo vim /etc/nsswitch.conf hosts: files dns ``` #### 4. 重启网络服务 - **应用配置更改** 若使用`netplan`(Ubuntu 18.04默认): ```bash $ sudo netplan apply ``` 若使用传统网络配置: ```bash $ sudo systemctl restart networking ``` #### 5. 排查DHCP配置问题 - **检查网卡配置文件** 编辑对应网卡(如`eth0`)的配置文件: ```bash $ sudo vim /etc/network/interfaces # 确保包含DHCP获取DNS auto eth0 iface eth0 inet dhcp ``` 或过`netplan`配置(YAML格式): ```yaml network: version: 2 renderer: networkd ethernets: eth0: dhcp4: yes dhcp4-overrides: use-dns: yes ``` #### 6. 测试DNS解析工具 - **使用`dig`或`nslookup`诊断** ```bash $ dig www.baidu.com # 显示详细DNS查询过程 $ nslookup www.baidu.com # 检查指定DNS服务器是否响应 ``` #### 7. 防火墙与系统服务排查 - **检查`systemd-resolved`状态** ```bash $ systemctl status systemd-resolved # 确保服务正常运行 $ sudo systemctl restart systemd-resolved ``` - **验证防火墙规则** 确保53端口(DNS)未被阻止: ```bash $ sudo ufw status # 若启用UFW,需允许53端口 ``` --- ###
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值