一、应用层
应用层位于网络模型的最上层
- 我们开发的时候, 一般都是面向
应用层开发
二、应用层的常见协议
-
超文本传输: 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等
- 一个域名, 级别是从右往左的, 例如
mail.whu.edu.cn
四、域名服务器
- 域名服务器, 用于
存放域名和IP地址的映射关系, 比如使用浏览器打开mail.sina.com, 就需要先从域名服务器中找到mail.sina.com对应的IP地址 域名服务器分为不同的级别,上级域名服务器记录下级域名服务器的地址, 最上级的域名服务器是根域名服务器
五、DNS
- DNS的全称是: Domain Name System, 译为: 域名系统
- 利用DNS协议, 可以将域名(比如baidu.com)解析成对应的IP地址(比如220.181.38.148、220.181.38.251)
- DNS可以基于
UDP协议,也可以基于TCP协议,服务器占用53端口 - 在浏览器中输入
baidu.com, 使用Wireshark抓取数据
1、服务器
- DNS首先会访问最近的一台DNS服务器(也就是客户端自己配置的DNS服务器)
- 所有的DNS服务器都记录了DNS根域名服务器的IP地址
- 上级DNS服务器记录了下一级DNS服务器的IP地址
- 全球一共13台IPv4的DNS根域名服务器, 25台IPv6的DNS根域名服务器
2、计算机查找IP地址的过程
- 如下图所示
- 在计算机的浏览器中输入
mail.sina.com - ① 计算机会优先查找最近的
DNS域名服务器, 也就是计算机上的本地DNS域名服务器 - ② 如果
本地DNS域名服务器中没有记录mail.sina.com的IP地址, 那么本地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域名服务器地址
六、IP地址的分配
- IP地址按照分配方式, 可以分为: 静态IP地址、动态IP地址
- 静态IP地址
- 手动设置
- 适用场景: 不怎么挪动的台式机(比如学校机房中的台式机)、服务器等
- 动态IP地址
- 从DHCP服务器自动获取IP地址
- 适用场景: 移动设备、无线设备等
- 移动设备、无线设备等, 之所以需要自动获取
IP地址, 是为了防止同一局域网内有其它计算机使用了相同的IP地址 - 如下图所示, 左右两个不同的局域网, 虽然他们的
IP地址有重复, 但是疑问不在同一局域网内, 所以都可以正常使用
- 但如果把左侧局域网的
计算机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服务器
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数据
- 查看
DHCP Discover,计算机向DHCP服务器发送广播
- 查看
DHCP Offer,DHCP服务器向计算机发放Offer, 同意分配IP地址
- 查看
DHCP Request,计算机向DHCP服务器发放广播, 确定使用的IP地址和对应的DHCP服务器
- 查看
DHCP ACK,DHCP服务器向计算机发放ACK确认报文, 确定计算机使用的IP地址, 并在此发送租赁时间
类似于找工作: 面试, 发Offer, 确定Offer, 确定协议
- DHCP服务器可以跨网段分配IP地址么?(DHCP服务器、客户端不在同一个网段)
- 可以借助DHCP中继代理(DHCP Relay Agent)实现跨网段分配IP地址
- 自动续约
- 客户端会在租期不足的时候,自动向DHCP服务器发送REQUEST信息申请续约
- MAC电脑可以在
设置->网络->高级->TCP/IP中进行DHCP续租
Wireshark抓取自动续期报文, 只有DHCP Request 和 DHCP ACK两个报文