TCP/IP协议族——ARP、DNS工作原理及实例详解



测试网络:

通过VMware创建了两个虚拟机,并利用桥接方式联网以此模拟两台主机连接一台路由器的情况。测试网络图如下:

ARP协议工作原理

ARP协议能实现任意网络地址到任意物理地址的转换,这里仅讨论IP地址到以太网地址(MAC地址)的转换。其工作原理是:主机向自己所在网络广播一个ARP请求,该请求包含目标机器的网络地址。此网络上的其他机器都将接收到这个请求,但只有被请求的目标机器会回应一个ARP应答,其中包含自己的物理地址。

以太网ARP请求/应答报文

以太网ARP请求/应答报文格式如下:

ARP高速缓存的查看和修改

ARP维护一个高速缓存,其中包含经常访问或最近访问的机器的IP地址到物理地址的映射,这样就避免了重复ARP请求,提高了发送数据包的速度。Linux下可以使用ar命令查看和修改ARP高速缓存。

$arp –a #查看arp缓存内容

? (192.168.73.254) at 00:50:56:ed:6c:66[ether] on eth0

? (192.168.73.2) at 00:50:56:f6:be:f2[ether] on eth0

? (192.168.73.130) at 00:0c:29:9b:94:99[ether] on eth0

$ sudoarp -d 192.168.73.130 #删除arp缓存中192.168.73.130

$arp –a

? (192.168.73.254) at 00:50:56:ed:6c:66[ether] on eth0

? (192.168.73.2) at 00:50:56:f6:be:f2[ether] on eth0

? (192.168.73.130) at<incomplete> on eth0 #注意改变前后变化

$sudo arp -s 192.168.73.130 08:00:27:53:10:67 #增加arp缓存中192.168.73.130

$arp –a

? (192.168.73.254) at 00:50:56:ed:6c:66[ether] on eth0

? (192.168.73.2) at 00:50:56:f6:be:f2 [ether]on eth0

? (192.168.73.130) at 08:00:27:53:10:67[ether] PERM on eth0

使用tcpdump观察ARP通信过程

$ sudoarp -d 192.168.73.130 #清除li123对应项

$ sudotcpdump -i eth0 -ent ‘(dst 192.168.73.130 and src 192.168.73.129) or (dst 192.168.73.129
and src 192.168.73.130)‘

#抓包命令

$ telnet192.168.73.130          #开启另一个终端执行telnet命令

在输入tcpdump命令的终端上输出:

00:0c:29:37:53:19 > ff:ff:ff:ff:ff:ff,ethertype ARP (0x0806), length 42: Request who-has 192.168.73.130 tell192.168.73.129, length 28

00:0c:29:9b:94:99 > 00:0c:29:37:53:19,ethertype ARP (0x0806), length 60: Reply 192.168.73.130 is-at00:0c:29:9b:94:99, length 46

第一个数据包中ARP源端物理地址00:0c:29:37:53:19,目的端物理地址ff:ff:ff:ff:ff:ff,这是以太网广播地址,用以表示整个局域网。数值0x0806表示分用的目标是ARP模块,其中以太网帧的长度是42字节(实际上是46字节,加上4字节的CRC校验码),其中数据部分长度为28字节。”Request”表示这是一个ARP请求,“who-has
192.168.73.130 tell 192.168.73.129”表示chen123要查询li123的IP地址。

第二个数据包源端物理地址为00:0c:29:9b:94:99,目的端物理地址为00:0c:29:37:53:19。Reply表示这是一个ARP应答,“192.168.73.130is-at
00:0c:29:9b:94:99”表示目标机器li123告知其物理地址。

DNS工作原理

DNS是一套分布式的域名服务系统。每个DNS服务器上都存放着大量的机器名和IP地址映射,并且是动态更新的。众多网络客户端都使用DNS协议来向DNS服务器查询目标主机的IP地址。

Linux下访问DNS服务

一个常用访问DNS服务器的客户端程序是host:

$host -t Awww.baidu.com

www.baidu.com is an alias forwww.a.shifen.com.

www.a.shifen.com has address115.239.211.110

www.a.shifen.com has address 115.239.210.27

host命令告诉我们,机器名www.baidu.comwww.a.shifen.com的别名,并且该机器对于两个IP地址。host命令中-t选项告诉DNS协议使用哪种查询类型,这里我们使用A类型,即通过机器的域名获得其IP地址。

使用tcpdump观察DNS通信过程

将/etc/resolv的内容:

nameserver 127.0.1.1

search localdomain

修改为

nameserver 219.239.26.42

nameserver 124.207.160.106

我们知道127.0.0.1是回路地址,而127.0.1.1也是保留地址,用来解析主机名。可以在文件/etc/hosts中看到如下内容:

127.0.0.1 localhost

127.0.1.1 ubuntu

在/etc/hostname中可以查到主机名,这里不出所料是“Ubuntu”当设置自带的DNSmasq,需要将其设置为127.0.1.1,本例为了容易观察DNS通信过程,所以将其改变。

然后键入如下命令:

$sudo tcpdump -i eth0 -nt -s 500 port domain

$host -t Awww.baidu.com(在新的终端上执行)

可以在输入tcpdump命令的终端上看到以下输出:

IP 192.168.73.129.33293 >219.239.26.42.53: 17643+ A? www.baidu.com. (31)

IP 219.239.26.42.53 >192.168.73.129.33293: 17643 3/5/5 CNAME www.a.shifen.com., A 119.75.218.77, A119.75.217.56 (260)

第一个数据包书机器chen123(192.168.73.129)向其首选DNS服务器(目标IP地址219.239.26.42)发送的DNS查询报文(目标端口53是DNS服务器使用的端口),数值17643是DNS查询报文的标识符。括号中的(31)是DNS报文查询长度,A?标识A类型查询方式。

第二个数据包是DNS应答报文,3/5/5表示该报文包含3个应答资源记录,5个授权资源记录和5个额外信息记录。CNAMEwww.a.shifen.com.,
A 119.75.218.77, A 119.75.217.56表示3个应答资源记录的内容。

参考Linux高性能服务器编程

转载注明出处,谢谢~~

TCP/IP协议族——ARP、DNS工作原理及实例详解

时间: 2024-10-03 12:06:41

TCP/IP协议族——ARP、DNS工作原理及实例详解的相关文章

TCP/IP协议族——IP工作原理及实例详解(上)

 IP协议详解 本文主要介绍了IP服务特点,头部结构,IP分片知识,并用tcpdump抓取数据包,来观察IP数据报传送过程中IP的格式,以及分片的过程. IP头部信息:IP头部信息出现在每个IP数据报中,用于指定IP通信的源端IP地址.目的端IP地址,知道IP分片和重组. IP数据报的路由和转发:IP数据报的路由和转发发生在出目标机器之外的所有主机和路由器上.他们决定数据报是否应该转发以及如何转发. IP服务的特点 IP协议是TCP/IP协议族的动力,它为上层协议提供无状态.无连接.不可靠的

tco/iP协议族——IP工作原理及实例详解(下)

 IP协议详解 上一篇文章文章主要介绍了IP服务的特点,IPv4头部结构IP分片,并用tcpdump抓取数据包,来观察IP数据报传送过程中IP的格式,以及分片的过程.本文主要介绍IP路由,IP转发,重定向和IPv6头部结构. IP路由 IP协议的一个核心任务是数据报的路由,即决定发送数据报到目标机器的路径.为了理解IP路由过程,我们先简要分析IP模块的基本流程. IP模块工作流程 从右往左分析上图,它首先对该数据报的头部做CRC校验,确认无误之后就分析其头部的具体信息. 如果该IP数据报的头

TCP/IP协议之三次握手、四次断开详解

TCP三次握手详细介绍 1.TCP/IP协议简单介绍: TCP/IP是一个协议族,通常分不同层次进行工作,每个层次负责不同的通信功能.包含以下四个层次: 应用层:(http.telnet.Email.dns等协议) 传输层:(tcp和udp) 网络层:(ip.icmp.rarp.bootp) 链路层:(设备驱动程序及接口卡) 1).链路层,也称作数据链路层或者网络接口层,通常包括操作系统中的设备驱动程序和计算机中对应的网络接口卡.它们一起处理与电缆(或其他任何传输媒介)的物理接口细节. 2).网

TCP/IP协议族——IP工作原理及实例具体解释(上)

?? IP协议具体解释 本文主要介绍了IP服务特点,头部结构,IP分片知识,并用tcpdump抓取数据包.来观察IP数据报传送过程中IP的格式,以及分片的过程. IP头部信息:IP头部信息出如今每一个IP数据报中,用于指定IP通信的源端IP地址.目的端IP地址,指导IP分片和重组. IP数据报的路由和转发:IP数据报的路由和转发发生在出目标机器之外的全部主机和路由器上.他们决定数据报是否应该转发以及怎样转发. IP服务的特点 IP协议是TCP/IP协议族的动力.它为上层协议提供无状态.无连接.不

Android网络编程系列 一 TCP/IP协议族

在学习和使用Android网路编程时,我们接触的仅仅是上层协议和接口如Apache的httpclient或者Android自带的httpURlconnection等等.对于这些接口的底层实现我们也有必要进一步的了解,这就要我们了解网络通信层了,提到网络通信层不得不说起ISO-OSI的七层协议经典架构,如图所示: 上图的左边部分就是osi架构模型了, ISO/OSI模型,即开放式通信系统互联参考模型(Open System Interconnection Reference Model),是国际标

第12章 网络基础(1)_网络分层和TCP/IP协议族

1. 协议的概念 (1)计算机网络中实现通信必须有一些约定.如对速率.传输代码.代码结构.传输控制步骤和出错控制等约定,这些约定即被称为通信协议 (2)在两个节点之间要成功地进行通信,两个节点之间必须约定使用共同的"语言",这些被通信各方共同遵守的约定.语言.规则被称为协议 (3)在Internet中,最为通用的网络协议是TCP/IP协议. 2. 网络分层模型 (1)应用层:提供用户接口,特指能够发起网络通信的应用程序,如客户端程序.QQ.MSN.浏览器等,服务器程序有Web服务器.邮

TCP/IP协议族(一) HTTP简介、请求方法与响应状态码

接下来想系统的回顾一下TCP/IP协议族的相关东西,当然这些东西大部分是在大学的时候学过的,但是那句话,基础的东西还是要不时的回顾回顾的.接下来的几篇博客都是关于TCP/IP协议族的,本篇博客就先简单的聊一下TCP/IP协议族,然后聊一下HTTP协议,然后再聊一下SSL上的HTTP(也就是HTTPS)了.当然TCP/IP协议族是个老生常谈的话题,网络上关于该内容的文章一抓一大把呢,但是鉴于其重要性,还是有必要系统的总结一下的. 一.TCP/IP协议组简述 在聊HTTP与HTTPS之前呢,我们先简

深入浅出--iOS的TCP/IP协议族剖析&amp;&amp;Socket

深入浅出--iOS的TCP/IP协议族剖析&&Socket 简介 该篇文章主要回顾--TCP/IP协议族中的TCP/UDP.HTTP:还有Socket.(--该文很干,酝酿了许久!你能耐心看完吗?) 我在这个文章中,列举了常见的TCP/IP族中的协议,今天主角是--传输层协议. 传输层(Transport Layer)是OSI(七层模型)中最重要.最关键的一层,它负责总体的数据传输和数据控制的一层,传输层提供端到端(应用会在网卡注册一个端口号)的交换数据的机制,检查分组编号与次序.传输层对

iOS的TCP/IP协议族剖析&amp;&amp;Socket

原创文章,版权声明:自由转载-非商用-非衍生-保持署名 | Creative Commons BY-NC-ND 3.0 简介 该篇文章主要回顾--TCP/IP协议族中的TCP/UDP.HTTP:还有Socket.(--该文很干,酝酿了许久!你能耐心看完吗?O_o) 我在这个文章中,列举了常见的TCP/IP族中的协议,今天主角是--传输层协议. 传输层(Transport Layer)是OSI(七层模型)中最重要.最关键的一层,它负责总体的数据传输和数据控制的一层,传输层提供端到端(应用会在网卡注