应用层
应用层工作在 TCP/IP 协议栈的最上层,日常中使用的软件都工作在这一层,如 QQ,微信等。该层主要是产生数据,保证和其他系统上的应用进行相互通信。
常见的应用层协议如下图所示:
可以看到,我们熟悉的 HTTP,HTTPS,SSH,FTP 处于数据的可靠性,全都采用了 TCP 作为传输层的协议。而 DNS 有些特殊,既有 TCP,又有 UDP 的协议。
DNS
域名的作用:
为了方便人类记忆而设计,否则的话 IP 地址是无法容易记忆的。
DNS 的作用:
由于数据包在网络层传输时,是要通过 IP 进行转发的。所以需要将域名转化成 IP,这个过程就是由 DNS 服务器所提供的。
DNS 的原理:
在 DNS 服务器上会有一张表,记录域名和 IP 的映射关系。比如在浏览器上输入 www.baidu.com
后,会先产生一个 DNS 请求报文,通过运营商的路由器发给 DNS 服务器,然后 DNS 会查询所需域名的 IP 地址,然后进行 DNS 回复把对应 IP 告诉客户端。这时客户端拿到真的 IP 地址就可以和淘宝服务器进行交互了。
这里我们请求下 www.sogou.com
的地址:
紧接着后面就是建立 TCP 三次握手的过程,然后访问搜狗服务器。
HTTP
- HTTP 工作在应用层
- 使用客户端和服务器的架构(C/S)
- 无状态, 无连接的协议
- 独立于物理层,没有限制
DHCP
想象一下,对于大型公司内的多台 PC 来说,如果需要访问互联网服务就需要手动配置 IP 地址,这时由于手工易错再加上配置过程较为重复。如果能将该过程自动进行就好了,动态主机配置协议(DHCP)就提供了这样的服务。当一台主机要接入因特网时,就会自动为其配置 IP 地址、子网掩码、默认网关和域名服务器。
DHCP 的分配方式是:网络中至少有一台 DHCP 服务器在工作,它会通过端口 67 监听网络的 DHCP 请求,并与客户端协商配置客户机的 TCP/IP 环境。
DHCP 协议使用 UDP 作为运输层协议,DHCP 服务器端口号是 67,客户端的端口号是 68. DHCP 服务器管理一个或多个 IP 地址域,称为地址池。当收到客户端的请求后,会从地址池中取出一个未用的地址分配给客户端,称为出租。
DHCP 的原理
DHCP Discover 和 Request 报文都是广播
DHCP Offer 和 Ack 报文都是单播
发现 DHCP 服务器
客户端启动后,会向网络广播一个 DHCP Discover 报文,寻找 DHCP 服务器。此时由于客户端不知道服务器的地址,所以要发送广播。本地网络中的每个主机都会收到,但是只有 DHCP 服务才会响应。
报文如下:
提供 IP 租用地址
DHCP 服务器收到 DHCP Discover 报文后,从还没出租的地址范围内,选择最前面的空白 IP 地址,向客户端发送 DHCP Offer 报文。
注意这里的 DSP 是 10.1.1.11 ,原因在于请求的这台 PC 之前使用过该地址,而此时该 IP 也没有被其他的 PC 占用。所以 DSP 是 10.1.1.11. 有时可以看到这会是 255.255.255.255.
报文如下:
接收租用并确认
客户端可能会收到一个或多个 DHCP Offer 报文(可能存在多个 DHCP 服务器),客户端从中选择一个 DHCP 服务器,并广播 DHCP Request 报文, 并在报文中必须指明选择的服务器。
报文如下:
确认租约
被选中的服务情收到 DHCP Request 后,回应 DHCP Ack 报文,地址分配完成
报文如下:
可以发现:
对于 DHCP Discover 和 DHCP offer 的作用主要是为了确定 DHCP Server.
而 DHCP Request 和 DHCP ACK 则是为了申请对应的 IP 地址。
DHCP 在路由器上的配置
Router>en
Router#>conf t
Router(config)#ho DHCP-SERVER
DHCP-SERVER(config)#ip dhcp pool Central
DHCP-SERVER(dhcp-config)#network 10.1.1.0 255.255.255.0
DHCP-SERVER(dhcp-config)#default-router 10.1.1.254
DHCP-SERVER(dhcp-config)#dns-server 8.8.4.4
DHCP-SERVER(dhcp-config)#lease 0 1 1
r(config)#ip dhcp excluded-address 10.1.1.1 10.1.1.10
DHCP-SERVER(config)int e 0/0
DHCP-SERVER(config)ip add 10.1.1.1 255.255.255.0
DHCP-SERVER(config)no shu