网络协议基础学习(九): 应用层: DNS、DHCP

385 阅读6分钟

一、应用层

  • 应用层位于网络模型的最上层

image.png

  • 我们开发的时候, 一般都是面向应用层开发

二、应用层的常见协议

  • 超文本传输: HTTP、HTTPS

  • 文件传输: FTP

  • 电子邮件: SMTP、POP3、IMAP

  • 动态主机配置: DHCP

  • 域名系统: DNS

三、域名

  • 由于IP地址不方便记忆, 并且不能表达组织的名称和性质, 人们设计了域名(例如: baidu.com)
    • 但实际上, 为了访问到具体的主机, 最终还是得知道目标主机的IP地址
    • 域名申请地址: wanwang.aliyun.com/
  • 如果全部使用域名, 不使用IP地址呢?
    • IP地址占4个字节, 但是域名长短不一, 会占用更多的字节, 这样会增加路由器的负担, 浪费流量
  • 根据级别不用, 域名有等级划分
    • 顶级域名
    • 二级域名
    • 三级域名
    • ......

1、顶级域名的分类

  • 通用顶级域名 (General Top-level Domain, 简称: gTLD)
    • .com (公司)
    • .net (网络机构)
    • .org (组织机构)
    • .edu (教育)
    • .gov (政府部门)
    • .int (国际组织)
    • ......
  • 国家及地区顶级域名 (Country Code Top-level Domain, 简称: ccTLD)
    • .cn (中国)
    • .jp (日本)
    • .uk (英国)
    • ......
  • 新通用顶级域名 (New Generic Top-level Domain, 简称: New gTLD)
    • .vip
    • .xyz
    • .top
    • .club
    • .shop
    • ......

2、二级域名

  • 二级域名是指顶级域名之下的域名, 三级域名以此类推
  • 在通用顶级域名下, 它一般指域名注册人的名称, 例如google、baidu、microsoft等
  • 在国家及地区顶级域名下, 它一般指注册的类别的, 例如com、edu、gov、net等

image.png

  • 一个域名, 级别是从右往左的, 例如mail.whu.edu.cn

image.png

四、域名服务器

  • 域名服务器, 用于存放域名IP地址映射关系, 比如使用浏览器打开mail.sina.com, 就需要先从域名服务器中找到mail.sina.com对应的IP地址
  • 域名服务器分为不同的级别, 上级域名服务器记录下级域名服务器的地址, 最上级的域名服务器根域名服务器

image.png

五、DNS

  • DNS的全称是: Domain Name System, 译为: 域名系统
  • 利用DNS协议, 可以将域名(比如baidu.com)解析成对应的IP地址(比如220.181.38.148、220.181.38.251)
  • DNS可以基于UDP协议,也可以基于TCP协议,服务器占用53端口
  • 在浏览器中输入baidu.com, 使用Wireshark抓取数据

image.png

1、服务器

  • DNS首先会访问最近的一台DNS服务器(也就是客户端自己配置的DNS服务器)
  • 所有的DNS服务器都记录了DNS根域名服务器的IP地址
  • 上级DNS服务器记录了下一级DNS服务器的IP地址
  • 全球一共13台IPv4的DNS根域名服务器, 25台IPv6的DNS根域名服务器

2、计算机查找IP地址的过程

  • 如下图所示

image.png

  • 在计算机的浏览器中输入mail.sina.com
  • ① 计算机会优先查找最近的DNS域名服务器, 也就是计算机上的本地DNS域名服务器
  • ② 如果本地DNS域名服务器中没有记录mail.sina.comIP地址, 那么本地DNS域名服务器就会从DNS根域名服务器查找
  • 根域名服务器中找到记录com顶级域名服务器地址, 返回给本地DNS域名服务器
  • 本地DNS域名服务器接着从com所在的顶级域名服务器中查找
  • com所在顶级域名服务器中找到sina.com所在的二级域名服务器地址, 返回给本地DNS域名服务器
  • 本地DNS域名服务器接着从sina.com所在的二级域名服务器中查找
  • sina.com所在的二级域名服务器中找到mail.sina.com所在的三级域名服务器地址, 返回给本地DNS域名服务器
  • 本地DNS域名服务器接着从mail.sina.com所在的三级域名服务器中查找
  • mail.sina.com所在的三级域名服务器中找到mail.sina.com对应的IP地址, 返回给本地DNS域名服务器
  • 本地DNS域名服务器记录mail.sina.com对应的IP地址后, 返回给计算机, 接着计算机使用IP地址访问mail.sina.com
  • MAC电脑, 可以在设置->网络->高级->DNS中查看和编辑本地DNS域名服务器地址

image.png

六、IP地址的分配

  • IP地址按照分配方式, 可以分为: 静态IP地址、动态IP地址
  • 静态IP地址
    • 手动设置
    • 适用场景: 不怎么挪动的台式机(比如学校机房中的台式机)、服务器等

image.png

  • 动态IP地址
    • 从DHCP服务器自动获取IP地址
    • 适用场景: 移动设备、无线设备等

image.png

  • 移动设备、无线设备等, 之所以需要自动获取IP地址, 是为了防止同一局域网内有其它计算机使用了相同的IP地址
  • 如下图所示, 左右两个不同的局域网, 虽然他们的IP地址有重复, 但是疑问不在同一局域网内, 所以都可以正常使用

image.png

  • 但如果把左侧局域网的计算机0(IP: 192.168.1.10), 放到右侧局域网中
  • 那么, 右侧局域网中的计算机9(IP: 192.168.1.10)计算机0(IP: 192.168.1.10)的IP地址相同, 此时两台计算机就无法正常使用
  • 此时, 就需要使用自动分配IP地址的模式, 防止上述问题

七、DHCP

  • DHCP(Dynamic Host Configuration Protocol), 译为: 动态主机配置协议
    • DHCP协议基于UDP协议,客户端是68端口,服务器是67端口
  • DHCP服务器会从IP地址池中,挑选一个IP地址"出租"给客户端一段时间,时间到期就回收它们
    • 平时家里上网的路由器就可以充当DHCP服务器

image.png

1、分配IP地址的4个阶段

  • DISCOVER: 发现服务器
    • 发广播包(源IP是0.0.0.0,目标IP是255.255.255.255,目标MAC是FF:FF:FF:FF:FF:FF)
  • OFFER: 提供租约
    • 服务器返回可以租用的IP地址,以及租用期限、子网掩码、网关、DNS等信息
    • 注意: 这里可能会有多个服务器提供租约
  • REQUEST: 选择IP地址
    • 客户端选择一个OFFER,发送广播包进行回应
  • ACKNOWLEDGE: 确认
    • 被选中的服务器发送ACK数据包给客户端
    • 至此, IP地址分配完毕

2、使用Wireshark查看DHCP

  • 切换网络, 就可以使用Wireshark抓取到DHCP数据

image.png

  • 查看DHCP Discover, 计算机DHCP服务器发送广播

image.png

  • 查看DHCP Offer, DHCP服务器计算机发放Offer, 同意分配IP地址

image.png

  • 查看DHCP Request, 计算机DHCP服务器发放广播, 确定使用的IP地址和对应的DHCP服务器

image.png

  • 查看DHCP ACK, DHCP服务器计算机发放ACK确认报文, 确定计算机使用的IP地址, 并在此发送租赁时间

image.png

类似于找工作: 面试, 发Offer, 确定Offer, 确定协议

  • DHCP服务器可以跨网段分配IP地址么?(DHCP服务器、客户端不在同一个网段)
    • 可以借助DHCP中继代理(DHCP Relay Agent)实现跨网段分配IP地址
  • 自动续约
    • 客户端会在租期不足的时候,自动向DHCP服务器发送REQUEST信息申请续约
  • MAC电脑可以在设置->网络->高级->TCP/IP中进行DHCP续租

image.png

  • Wireshark抓取自动续期报文, 只有DHCP Request 和 DHCP ACK两个报文

image.png