接续接着上节“ 一.我在哪里?你又在哪里?” ,奶牛继续来说说这个网络数据包滴故事。
二.怎么找到你?
你可能会疑问,上一节我们不是说了你在哪里哇,那还用找哇?当然,我们这节就是要弄清楚我是怎么知道的你在哪里。
关键词:ARP DNS
先来说ARP
- ARP(address resolution protocol):地址解析协议是获取物理地址的一个TCP/IP协议。
- 某节点的IP地址的ARP请求被广播到网络上后,这个节点会收到确认其物理地址的应答,这样的数据包才能被传送出去。
那ARP解析的究竟是什么呢?让我们看一下:
- arp -a
- 接口: 192.168.1.100 --- 0xb
- Internet 地址 物理地址 类型
- 192.168.1.1 94-0c-6d-23-d7-9a 动态
- 192.168.1.255 ff-ff-ff-ff-ff-ff 静态
奶牛查询了下本地的arp,我们可以看到,奶牛是在路由器的环境下,网关就是IP:192.168.1.1,它的硬件mac地址是94-0c-6d-23-d7-9a ,这记录在我们的arp表中,而192.168.1.255就是广播地址啦,如果我们的路由器下还有一台机器的IP是192.168.1.2,如果我们知道它就是我们的目标,我们就要把数据包发送给它,那么我们就需要首先利用ARP来查询到192.168.1.2的硬件MAC地址,然后将这个地址封在我们的以太网帧中,这样子才能把数据通过硬件发送出去,因为最终归结到最后,所有数据包还是要通过硬件来完成传送的。
再来说说DNS
- DNS(Domain Name System)是域名系统的缩写
- 它是因特网的一项核心服务,它作为可以将域名和IP地址相互映射的一个分布式数据库
- 能够使人更方便的访问互联网,而不用去记住能够被机器直接读取的IP数串。
从定义来看,DNS就是将IP与域名进行互相映射,我们可以通过dns查找一个域名对应的IP,也可以通过IP查找这个IP下的域名。对于域名,我们这里也来说一下,域名是指abc.com nenew.net或相类似形式的名称,而www.abc.com www.nenew.net只是一个子域名,跟blog.nenew.net哇wiki.nenew.net哇是同等地位的。当然子域跟IP也是对应的。
- nslookup nenew.net 8.8.8.8
- 服务器: google-public-dns-a.google.com
- Address: 8.8.8.8
- 非权威应答:
- 名称: nenew.net
- Address: 65.49.24.75
用nslookup命令来查询nenew.net的IP地址,可以得到奶牛现在用的服务器的IP,当然,这里跟我们说的数据包的故事有些远了,我们继续绕回去,有了域名,我们就不用去记忆一整串的IP地址了,因此,如果你想与一台服务器进行通信,传送数据包,有时候也会用到DNS来帮助我们解析出目标的IP,这样子我们就知道了IP包中的目标地址了。
对于TCP或者UDP的表头中的目标端口,我们一般还是以默认的知道的情况下才好进行数据包的传送,比如我们要浏览一个网页,那么默认的端口一般就是80,这个是公认的,小于1024的端口一般都被赋予了相应的功能跟意义,虽然我们也可以手动进行修改,但是很多东西是约定俗成的。
综合一下上面:
以太网帧的表头中的目的地址是mac硬件地址,使用arp将目标IP解析成硬件地址
IP数据包的表头中的目的地址是IP,这个IP可以是我们事先知道的,也可以是通过DNS查询得到的。
TCP包的表头中的目的端口是目标的端口号,一般是默认定义好的(比如web的80端口ftp的21端口)也可以是事先知道的。
通过这三点,我们就可以确定出你在哪里,并且知道我是怎么找到你的。
数据包的故事继续,下节继续说数据包的传输过程:你等着,我来了。