CCNA 认证/应用层
致谢 — 简介 — OSI 模型 — 应用层 — 传输层 — 网络层 — 寻址 — 路由协议 — 数据链路层 — 交换 — 物理层 — 路由器操作 — 高级寻址主题 — 高级路由主题 — 高级交换主题 — 安全 — 广域网 — 配置 — 结论 — 参考文献 — 关于考试 — Cisco 路由器命令 — 快速参考表
应用层是七层 OSI 模型的第七层。它直接与应用程序进程交互并为其执行常见的应用程序服务;它还向表示层发出请求。
常见的应用层服务提供相关应用程序进程之间的语义转换。注意:通用应用程序服务的示例包括虚拟文件、虚拟终端、作业传输和操作协议。
四层和五层 TCP/IP 模型的应用层对应于七层 OSI 模型中的应用层、表示层和会话层。
DHCP 是一种由联网主机(客户端)使用的协议,用于从 DHCP 服务器获取 IP 地址和其他参数,例如默认网关、子网掩码和 DNS 服务器的 IP 地址。它有助于访问网络,因为否则必须为客户端手动设置这些设置才能参与网络。
DHCP 服务器确保所有 IP 地址都是唯一的,例如,在第一个客户端的分配有效(其租约尚未过期)时,不会将任何 IP 地址分配给第二个客户端。因此,IP 地址池管理由服务器完成,而不是由人类网络管理员完成。
DHCP 在功能上已成为旧的 BOOTP 协议的继任者,BOOTP 协议的租约无限期授予,不支持选项。由于 DHCP 的向后兼容性,很少有网络继续使用纯 BOOTP。
根据实现方式,DHCP 服务器有三种分配 IP 地址的方法
- 手动分配,其中 DHCP 服务器根据一个表执行分配,该表包含服务器管理员手动填写的 MAC 地址 - IP 地址对。只有请求的客户端的 MAC 地址列在这个表中,才能根据表获取 IP 地址。
- 自动分配,其中 DHCP 服务器永久分配管理员提供的范围内的一个空闲 IP 地址给请求的客户端。
- 动态分配,这是唯一提供 IP 地址动态重用的方法。网络管理员将一组 IP 地址分配给 DHCP,并且 LAN 上的每台客户端计算机都将其 TCP/IP 软件配置为在该客户端计算机的网络接口卡启动时从 DHCP 服务器请求一个 IP 地址。请求和授予过程使用一个租约概念,并具有可控的时间段。这极大地简化了客户端计算机侧的网络安装过程。
这个决定通常对客户端来说是不可见的。
某些 DHCP 服务器实现可以更新与客户端主机关联的 DNS 名称以反映新的 IP 地址。它们使用与 RFC 2136 建立的 DNS 更新协议。
- 设置 DHCP 数据库代理
使用 IP DHCP database 命令,配置一个 DHCP 数据库存储。或者,使用 no IP DHCP conflict logging 命令禁用 DHCP 冲突日志记录。
- 设置排除的 IP 地址
使用 ip dhcp excluded-address 命令配置 DHCP 池地址范围内但不应分配给客户端的任何 IP 地址。
- 配置地址池
首先,使用 IP DHCP pool name 命令创建一个 DHCP 池。接下来,在 DHCP 池模式下,使用 network 命令将网络范围添加到 DHCP 池。
- 配置默认 DNS 服务器
使用 dns-server 命令设置默认 DNS 服务器的 IP 地址。
- 配置默认路由
使用 default-router 命令设置 DHCP 客户端的默认路由。
- 启用 DHCP 服务器
使用 service DHCP 命令启用 DHCP 服务器。
防火墙通常必须显式允许 DHCP 流量。DHCP 客户端-服务器协议规范描述了几个情况下,数据包必须具有以下源地址0x00000000或目的地址为0xffffffff. 防欺骗策略规则和严格的包含性防火墙通常会阻止此类数据包。多宿主 DHCP 服务器需要特殊考虑,并且会使配置更加复杂。
为了允许 DHCP,网络管理员需要允许几种类型的数据包通过服务器端防火墙。所有 DHCP 数据包都以 UDP 数据报形式传输;所有客户端发送的数据包都具有源端口 68 和目的端口 67;所有服务器发送的数据包都具有源端口 67 和目的端口 68。例如,服务器端防火墙应允许以下类型的数据包
- 来自 0.0.0.0 或 dhcp-pool 到 dhcp-ip 的传入数据包
- 来自任何地址到 255.255.255.255 的传入数据包
- 来自 dhcp-ip 到 dhcp-pool 或 255.255.255.255 的传出数据包
其中 dhcp-ip 表示 DHCP 服务器主机上配置的任何地址,而 dhcp-pool 代表 DHCP 服务器分配给客户端的地址池
以下条目在启用了 DHCP 服务的 Cisco 3560 交换机上有效。ACL 应用于路由接口 10.32.73.129,在输入时。子网是 10.32.73.128/26。
10 permit udp host 0.0.0.0 eq bootpc host 10.32.73.129 eq bootps 20 permit udp 10.32.73.128 0.0.0.63 eq bootpc host 10.32.73.129 eq bootps 30 permit udp any eq bootpc host 255.255.255.255 eq bootps
DHCP 使用与 BOOTP 相同的两个 IANA 分配端口:67/udp 用于服务器端,68/udp 用于客户端。
DHCP 操作分为四个基本阶段。这些阶段是 IP 租约请求、IP 租约提供、IP 租约选择和 IP 租约确认。
DHCP 发现
[edit | edit source]客户端在本地物理子网上广播以查找可用的服务器。网络管理员可以配置本地路由器将 DHCP 数据包转发到不同子网上的 DHCP 服务器。这种客户端实现创建了一个 UDP 数据包,其广播目标为 255.255.255.255 或子网广播地址。
客户端还可以请求其最后已知的 IP 地址(在下面的示例中为 192.168.1.100)。如果客户端仍然在该 IP 地址有效的网络中,服务器可能会授予该请求。否则,它取决于服务器是否被设置为权威服务器。权威服务器将拒绝该请求,导致客户端立即请求新的 IP 地址。非权威服务器会简单地忽略该请求,导致客户端根据实现的时间超时而放弃该请求并请求新的 IP 地址。
UDP Src=0.0.0.0 sPort=68 Dest=255.255.255.255 dPort=67 | |||
OP | HTYPE | HLEN | HOPS |
---|---|---|---|
0x01 | 0x01 | 0x06 | 0x00 |
XID | |||
0x3903F326 | |||
SECS | FLAGS | ||
0x0000 | 0x0000 | ||
CIADDR | |||
0x00000000 | |||
YIADDR | |||
0x00000000 | |||
SIADDR | |||
0x00000000 | |||
GIADDR | |||
0x00000000 | |||
CHADDR | |||
0x00053C04 | |||
0x8D590000 | |||
0x00000000 | |||
0x00000000 | |||
192 个字节的 0。BOOTP 遗留 | |||
DHCP 选项 53:DHCP 发现 | |||
DHCP 选项 50:请求 192.168.1.100 |
DHCP 提供
[edit | edit source]当 DHCP 服务器从客户端收到 IP 租约请求时,它会扩展 IP 租约提供。这是通过为客户端保留一个 IP 地址,并将 DHCPOFFER 消息通过网络发送到客户端来完成的。此消息包含客户端的 MAC 地址,后面是服务器提供的 IP 地址、子网掩码、租约期限和提供服务的 DHCP 服务器的 IP 地址。
服务器根据 CHADDR 字段中指定的客户端硬件地址来确定配置。在这里,服务器 192.168.1.1 在 YIADDR 字段中指定 IP 地址。
UDP Src=192.168.1.1 sPort=67 Dest=255.255.255.255 dPort=68 | |||
OP | HTYPE | HLEN | HOPS |
---|---|---|---|
0x02 | 0x01 | 0x06 | 0x00 |
XID | |||
0x3903F326 | |||
SECS | FLAGS | ||
0x0000 | 0x0000 | ||
CIADDR | |||
0x00000000 | |||
YIADDR | |||
0xC0A80164 | |||
SIADDR | |||
0x00000000 | |||
GIADDR | |||
0x00000000 | |||
CHADDR | |||
0x00053C04 | |||
0x8D590000 | |||
0x00000000 | |||
0x00000000 | |||
192 个字节的 0。BOOTP 遗留 | |||
DHCP 选项 53:DHCP 提供 | |||
DHCP 选项 1:255.255.255.0 子网掩码 | |||
DHCP 选项 3:192.168.1.1 路由器 | |||
DHCP 选项 51:1 天 IP 租约时间 | |||
DHCP 选项 54:192.168.1.1 DHCP 服务器 |
DHCP 请求
[edit | edit source]客户端从收到的 DHCP“提供”数据包中选择一个配置,并在本地子网上广播它。同样,此客户端请求服务器指定的 192.168.1.100 地址。如果客户端收到多个提供,它会指定它接受提供服务的服务器。
UDP Src=0.0.0.0 sPort=68 Dest=255.255.255.255 dPort=67 | |||
OP | HTYPE | HLEN | HOPS |
---|---|---|---|
0x01 | 0x01 | 0x06 | 0x00 |
XID | |||
0x3903F326 | |||
SECS | FLAGS | ||
0x0000 | 0x0000 | ||
CIADDR | |||
0x00000000 | |||
YIADDR | |||
0x00000000 | |||
SIADDR | |||
0x00000000 | |||
GIADDR | |||
0x00000000 | |||
CHADDR | |||
0x00053C04 | |||
0x8D590000 | |||
0x00000000 | |||
0x00000000 | |||
192 个字节的 0。BOOTP 遗留 | |||
DHCP 选项 53:DHCP 请求 | |||
DHCP 选项 50:请求 192.168.1.100 | |||
DHCP 选项 54:192.168.1.1 DHCP 服务器。 |
DHCP 确认
[edit | edit source]当 DHCP 服务器从客户端收到 DHCPREQUEST 消息时,它会启动配置过程的最后阶段。此确认阶段包括将 DHCPACK 数据包发送到客户端。此数据包包括租约期限和客户端可能请求的任何其他配置信息。此时,TCP/IP 配置过程已完成。
服务器确认该请求并将确认发送到客户端。整个系统期望客户端使用提供的选项配置其网络接口。
UDP Src=192.168.1.1 sPort=67 Dest=255.255.255.255 dPort=68 | |||
OP | HTYPE | HLEN | HOPS |
---|---|---|---|
0x02 | 0x01 | 0x06 | 0x00 |
XID | |||
0x3903F326 | |||
SECS | FLAGS | ||
0x0000 | 0x0000 | ||
CIADDR(客户端 IP 地址) | |||
0x00000000 | |||
YIADDR(您的 IP 地址) | |||
0xC0A80164 | |||
SIADDR(服务器 IP 地址) | |||
0x00000000 | |||
GIADDR(中继 IP 地址) | |||
0x00000000 | |||
CHADDR(客户端硬件地址) | |||
0x00053C04 | |||
0x8D590000 | |||
0x00000000 | |||
0x00000000 | |||
192 个字节的 0。BOOTP 遗留 | |||
DHCP 选项 53:DHCP ACK | |||
DHCP 选项 1:255.255.255.0 子网掩码 | |||
DHCP 选项 3:192.168.1.1 路由器 | |||
DHCP 选项 51:1 天 IP 租约时间 | |||
DHCP 选项 54:192.168.1.1 DHCP 服务器 |
DHCP 选择
[edit | edit source]当客户端 PC 收到 IP 租约提供时,它必须告诉所有其他 DHCP 服务器它已接受提供。为此,客户端广播包含提供服务的服务器的 IP 地址的 DHCPREQUEST 消息。当其他 DHCP 服务器收到此消息时,它们会撤回可能已提供给客户端的任何提供。然后,它们将为客户端保留的地址返回到它们可以提供给另一台计算机的有效地址池。任何数量的 DHCP 服务器都可以响应 IP 租约请求,但客户端只能为每个网络接口卡接受一个提供。
DHCP 信息
[edit | edit source]客户端向 DHCP 服务器发送请求:要么请求服务器在原始 DHCPACK 中发送的更多信息;要么重复特定应用程序的数据 - 例如,浏览器使用 DHCP Inform 通过 WPAD 获取 Web 代理设置。此类查询不会导致 DHCP 服务器刷新其数据库中的 IP 过期时间。
DHCP 释放
[edit | edit source]客户端向 DHCP 服务器发送请求以释放 DHCP,并且客户端取消配置其 IP 地址。由于客户端通常不知道用户何时可能将它们从网络上拔下,因此该协议没有将发送 DHCP Release 定义为强制性的。
电子邮件
[edit | edit source]电子邮件由两种类型的协议组成:服务器到服务器和客户端到服务器。
服务器到服务器
[edit | edit source]简单邮件传输协议 (SMTP) 是互联网上电子邮件传输的事实上的标准。正式的 SMTP 在 RFC 821 (STD 10) 中定义,并由 RFC 1123 (STD 3) 第 5 章进行修订。今天使用的协议也称为 ESMTP,并在 RFC 2821 中定义。
SMTP 是一个相对简单的基于文本的协议,其中指定了消息的一个或多个收件人(并且在大多数情况下验证了收件人的存在),然后传输消息文本。使用 telnet 程序(见下文)很容易测试 SMTP 服务器。
SMTP 使用 TCP 端口 25。要确定给定域名对应的 SMTP 服务器,通常使用 MX(邮件交换)DNS 记录,如果 MX 不存在,则回退到简单的 A 记录(并非所有 MTA(邮件传输代理)都支持回退)。一些当前的邮件传输代理也会使用 SRV 记录,这是一种更通用的 MX 形式,但这些记录并未被广泛采用。
客户端到服务器
[edit | edit source]SMTP 是一个“推送”协议,不允许用户按需从远程服务器“拉取”消息。为此,邮件客户端必须使用 POP3 或 IMAP。另一个 SMTP 服务器可以使用 ETRN 触发 SMTP 中的传递。
POP3 使协议的早期版本(非正式地称为 POP1)和 POP2 过时。在当代使用中,在电子邮件协议的上下文中,不太精确的术语 POP 几乎总是指 POP3。
POP3 的设计及其程序支持具有间歇连接(例如拨号连接)的最终用户,允许这些用户在连接时检索电子邮件,然后在无需保持连接的情况下查看和操作检索到的消息。尽管大多数客户端都有一个将邮件留在服务器上的选项,但使用 POP3 的电子邮件客户端通常会连接、检索所有消息、将它们存储在用户的 PC 上作为新消息、从服务器中删除它们,然后断开连接。相比之下,更新、功能更强大的互联网邮件访问协议 (IMAP) 支持连接和断开连接两种操作模式。使用 IMAP 的电子邮件客户端通常将消息留在服务器上,直到用户显式删除它们。这和 IMAP 操作的其他方面允许多个客户端访问同一个邮箱。大多数电子邮件客户端支持 POP3 或 IMAP 来检索消息;但是,较少的互联网服务提供商 (ISP) 支持 IMAP。POP3 和 IMAP4 之间的根本区别在于,POP3 提供对邮件存放区的访问;邮件存在于服务器上,直到被客户端收集。即使客户端将一些或所有邮件留在服务器上,客户端的消息存储也被认为是权威的。相比之下,IMAP4 提供对邮件存储区的访问;客户端可以存储消息的本地副本,但这些副本被认为是临时缓存;服务器的存储区是权威的。
网络
[edit | edit source]超文本传输协议 (HTTP) 是一种用于在万维网上传输或传送信息的方法。它的最初目的是提供一种发布和检索 HTML 页面。
HTTP 的开发由 W3C 和 IETF 协调,最终发布了一系列 RFC,最著名的是 RFC 2616 (1999),该 RFC 定义了 HTTP/1.1,这是当今普遍使用的 HTTP 版本。
HTTP 是客户端和服务器之间的请求/响应协议。源客户端(例如 Web 浏览器、蜘蛛或其他最终用户工具)被称为用户代理。存储或创建资源(如 HTML 文件和图像)的目标服务器被称为源服务器。在用户代理和源服务器之间可能存在多个中间服务器,例如代理、网关和隧道。
HTTP 客户端通过建立与远程主机上的特定端口(默认情况下为端口 80;参见维基百科的端口号列表)的传输控制协议 (TCP) 连接来发起请求。监听该端口的 HTTP 服务器等待客户端发送请求消息。
服务器收到请求后,会发回状态行,例如“HTTP/1.1 200 OK”,以及自己的消息,其主体可能是请求的文件、错误消息或其他一些信息。
通过 HTTP 访问的资源使用 URI 来标识(更具体地说是使用http或 https URI 方案。
请求消息
[edit | edit source]请求消息由以下部分组成
- 请求行,例如GET /images/logo.gif HTTP/1.1,它请求logo.gif文件,它位于/images目录下。
- 头,例如Accept-Language: en
- 空行
- 可选的消息主体
请求行和头都必须以 CRLF(即回车后跟换行符)结尾。空行必须仅包含 CRLF,不包含任何其他空格。
在 HTTP/1.1 协议中,除 Host 之外的所有头都是可选的。
请求方法
[edit | edit source]HTTP 定义了八种方法(有时称为“动词”),它们指示要对已标识的资源执行的所需操作。
- HEAD
- 请求与 GET 请求对应的相同响应,但没有响应主体。这对于检索响应头中写入的元信息很有用,无需传输整个内容。
- GET
- 请求指定资源的表示。到目前为止,这是 Web 上最常用的方法。不应用于会导致副作用的操作(将其用于 Web 应用程序中的操作是一种常见的误用)。请参阅下面的“安全方法”。
- POST
- 提交数据以处理(例如,来自 HTML 表单)到标识的资源。数据包含在请求的主体中。这可能会导致创建新资源或更新现有资源或两者兼而有之。
- PUT
- 上传指定资源的表示。
- DELETE
- 删除指定资源。
- TRACE
- 回显收到的请求,以便客户端可以查看中间服务器在请求中添加或更改的内容。
- OPTIONS
- 返回服务器支持的 HTTP 方法。这可用于检查 Web 服务器的功能。
- CONNECT
- 用于与可以更改为 SSL 隧道代理的代理一起使用。
HTTP 服务器应该至少实现 GET 和 HEAD 方法,并且只要有可能,还应该实现 OPTIONS 方法。