应用层常见协议:
超文本传输: HTTP、HTTPS
文件传输: FTP
电子邮件: SMTP、POP3、IMAP
动态主机配置: DHCP
域名系统: DNS
DNS协议
域名(Domain Name)
由于IP地址不方便记忆, 并且不能表达组织的名称和性质, 人们设计出了域名(比如baidu.com), 但实际上, 为了能够访问到具体的主机, 最终还是得知道目标主机的IP地址; 那干脆全程直接用域名, 不用IP地址?IP地址固定4个字节, 域名随随便便都至少10几个字节, 这无疑会增加路由器的负担, 浪费流量
根据级别不同, 域名可以分为:
- 顶级域名(Top-level Domain, 简称TLD)
- 二级域名
- 三级域名
- ...
域名 - 顶级域名的分类
通用顶级域名(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等
域名 - 二级域名
二级域名是指顶级域名之下的域名
在通用顶级域名下,它一般指域名注册人的名称,例如google、baidu、microsoft等
在国家及地区顶级域名下,它一般指注册类别的,例如com、edu、gov、net等
DNS
DNS的全称是:Domain Name System,译为:域名系统, 利用DNS协议,可以将域名 (比如baidu.com) 解析成对应的IP地址 (比如220.181.38.148);
DNS基于UDP协议,服务器占用53端口(理论上, 客户端也可以指定向DNS服务器查询时用TCP,但事实上,很多DNS服务器进行配置的时候,仅支持UDP查询包)
准确来说, DNS同时使用了TCP和UDP协议, 那么DNS在什么时候使用TCP, 什么时候使用UDP呢?
DNS区域传输的时候使用TCP协议:
辅域名服务器会定时(每3小时)向主域名服务器进行查询以便了解数据是否有变动。如有变动, 会执行一次区域传送, 进行数据同步。区域传送使用TCP而不是UDP, 因为数据同步传送的数据量比一个请求应答的数据量要多得多。TCP是一种可靠连接, 保证了数据的准确性。
域名解析时使用UDP协议:
客户端向DNS服务器查询域名, 一般返回的内容都不超过512字节, 用UDP传输即可。不用经过三次握手, 这样DNS服务器负载更低, 响应更快。通俗地讲, 就是DNS服务器之间传输时使用TCP, 而客户端与DNS服务器之间传输时用的是UDP
什么是区域传输?
DNS的规范规定了2种类型的DNS服务器, 一个叫主DNS服务器, 一个叫辅助DNS服务器。在一个区中主DNS服务器从自己本机的数据文件中读取该区的DNS数据信息, 而辅助DNS服务器则从区的权威DNS服务器中读取该区的DNS数据信息。当一个辅助DNS服务器启动时, 它需要与主DNS服务器通信, 并加载数据信息, 这就叫做区域传送(zone transfer)
DNS - 服务器
域名解析流程:
- 客户端首先会访问最近的一台DNS服务器 (也就是客户端自己配置的DNS服务器), 由该DNS服务器与各级域名服务器交互, 查询IP地址, 并将查询的结果加入缓存并返回给客户端
- 所有的DNS服务器都记录了DNS根域名服务器的IP地址, 上级DNS服务器记录了下一级DNS服务器的IP地址
- 分配给IPv4的根域DNS服务器的IP地址在全世界仅有13个, 分配给IPv6的根域DNS服务器的IP地址在全世界仅有25个, 但是根域DNS服务器是有很多个的
- 在解析域名的过程中, 都是由客户端中配置的最近的DNS服务器与各级域名服务器进行交互的, 一旦获取到域名对应的IP地址, 则进行缓存, 下次访问时, 直接返回; 如果某个域名没有对应的IP地址, 那么也会被缓存, 以便下次快速响应 (注意: ①缓存信息是存在有效期的, 过期将被删除; ②在对域名查询进行响应时,DNS服务器也会告知客 户端这一响应的结果是来自缓存中还是来自负责管理该域名的DNS服务器)
DNS - 常用命令:
ipconfig /displaydns:查看DNS缓存记录
ipconfig /flushdns:清空DNS缓存记录
ping 域名
nslookup 域名
DHCP
DHCP - 简介
IP地址按照分配方式,可以分为:静态IP地址、动态IP地址
静态IP地址
① 手动设置
② 适用场景:不怎么挪动的台式机(比如学校机房中的台式机)、服务器等
动态IP地址
① 从DHCP服务器自动获取IP地址
② 适用场景:移动设备、无线设备等
DHCP (Dynamic Host Configuration Protocol),译为:动态主机配置协议
① DHCP协议基于UDP协议,客户端是68端口,服务器是67端口
② DHCP服务器会从IP地址池中,挑选一个IP地址'出租'给客户端一段时间,时间到期就进行回收; 路由器也可以充当DHCP服务器
DHCP - 分配IP的4个阶段
1. DISCOVER:发现服务器
发广播包(源IP是0.0.0.0, 目标IP是255.255.255.255, 目标MAC是FF:FF:FF:FF:FF:FF)
2. OFFER:提供租约
服务器返回可以租用的IP地址, 以及租用期限、子网掩码、网关、DNS等信息; 注意:这里可能会有多个服务器提供租约
3. REQUEST:选择IP地址
客户端选择一个OFFER, 发送广播包进行回应
4. ACKNOWLEDGE:确认
被选中的服务器发送ACK数据包给客户端, 至此, IP地址分配完毕
wireshark抓包分析:
Discover:
Offer:
Request:
ACK:
DHCP - 细节
DHCP服务器可以跨网段分配IP地址么?(DHCP服务器、客户端不在同一个网段)
可以借助DHCP中继代理 (DHCP Relay Agent) 实现跨网段分配IP地址
自动续约
客户端会在租期不足的时候,自动向DHCP服务器发送REQUEST信息申请续约
常用命令
ipconfig /all:可以看到DHCP相关的详细信息,比如租约过期时间、DHCP服务器地址等
ipconfig /release:释放租约
ipconfig /renew:重新申请IP地址、申请续约(延长租期)