传输层
传输层负责在不同主机上运行的应用程序之间进行的逻辑通信。
传输层包括两个协议:
- 传输控制协议 (TCP Transmission Control Protocol)
- 用户数据报协议 (UDP User Datagram Protocol)
传输层的职责
- 跟踪各个会话-源应用和目的应用之间传输的每个数据集称为会话并分别进行跟踪
- 数据分段和数据段重组-将应用程序数据划分为适当大小的块。根据所使用的传输层协议,传输层块称为数据段或数据报。
- 添加报头信息-将包含二进制数据的报头信息添加到每个数据块中,这些数据被组织成几个字段。不同的传输层协议通过这些字段值在管理数据通信过程中执行各自的功能。
- 标识应用-为了将数据流传递到适当的应用程序,传输层使用称为端口号的标识符来标识目标应用。
- 会话多路复用-使不同的通信会话在同一网络上交错。
传输层协议
传输层协议指定如何在主机之间传输消息,并负责管理会话的可靠性要求。传输层包括 TCP 和 UDP 协议。
不同的应用有不同的传输可靠性要求。因此,TCP/IP 提供了两个传输层协议,如图所示
TCP
TCP 被认为是可靠且功能齐全的传输层协议,用于确保所有数据到达目的设备。TCP包含确保应用数据传递的字段。这些字段需要发送和接收的主机进行额外处理。
TCP将数据分为若干个数据段。
TCP 使用以下基本操作提供可靠性和流量控制:
- 编号并跟踪从特定应用程序发送到特定主机的数据段。
- 确认收到数据
- 在一定时间段后重新传输未确认的数据
- 有顺序的数据可能以错误的顺序到达 以接收方可以接受的有效速率* 发送数据
UDP
UDP是一种比TCP更简单的传输层协议。它不提供可靠性和流量控制,这意味着它需要更少的报头字段。由于发送方和接收方UDP进程不需要管理可靠性和流量控制,这意味着 UDP 数据报的处理速度比 TCP 数据段快。UDP 仅提供在相应应用之间传输数据报的基本功能,需要很少的开销和数据检查。
UDP 将数据划分为数据报,也称为数据段。
UDP是一种无连接协议。由于 UDP 不提供可靠性或流量控制,因此不需要建立连接。由于 UDP 不跟踪客户端和服务器之间发送或接收的信息,因此UDP 也称为无状态协议。
UDP 也称为最大努力交付协议,因为在目的地接收到数据后没有确认消息。UDP 中没有通知发送方是否成功传输的传输层程。
UDP 是一个尽最大努力传输协议,而 TCP 是一个可靠的传输协议。
实时视频和语音应用能够容忍具有极小或没有明显影响的一些数据丢失,非常适合于 UDP。
TCP概述
功能
除了支持数据分段和重组的基本功能之外,TCP 还提供以下服务:
- 建立会话 -TCP是一种面向连接的协议,在转发任何流量之前,在源设备和目的设备之间协商并建立永久连接(或会话)。通过建立会话,设备可以协商特定时间能够转发的流量,而且两个设备之间的通信数据可得到严格管理。
- 确保可靠的传递 -由于多种原因,数据段在网络传输过程中可能会损坏或者完全丢失。TCP确保从源设备发送的每个数据段都能够到达目的地。
- 提供相同顺序的传递 -由于网络可能提供了多条路由,每条路由又有不同的传输速率,所以可能导致数据抵达的顺序错乱。通过对数据段编号和排序,TCP 确保按正确的顺序重组这些数据段。
- 支持流量控制 -网络主机的资源有限(即,内存或处理能力)。当 TCP 发现这些资源超负荷运转时,它可以请求源应用程序降低数据流速。为此,TCP 会调整源设备传输的数据量。流量控制可避免当接收主机的资源不堪重负时,数据的重新传输。
报头
在封装应用层数据时,TCP 数据段会增加 20 个字节(即 160 位)的开销。该图显示的是 TCP 报头中的字段。(10个)
报头字段
TCP 报头字段 | 描述 |
---|---|
源端口 | 一个16位字段, 用于通过端口号标识源应用程序。用于跟踪设备之间的多个会话。还用于为服务器的响应保留打开的条目 |
目的端口 | 一个16位字段, 用于通过端口号标识目的应用 程序。 |
序列号 | 一个32位字段, 用于数据重组。 |
确认号 | 一个32位的字段, 用于指示已接收到数据, 并且期望从源 接收下一个字节。 |
报头长度 | 一个4位字段, 称为“数据偏移”, 表示 TCP数据段报头的长度。 |
保留 | 一个6位字段, 保留供将来使用。 |
控制位 | 一个6位字段, 包括位代码或标志, 指示 TCP段的目的和功能。 |
窗口大小 | 一个16位字段, 用于指示一次可以接受的 字节数。 |
校验和 | 一个16位字段, 用于数据段报头和数据的错误检查。 |
紧急 | 一个 16 位字段, 用于指示包含的数据是否紧急。 |
应用程序
FTP、HTTP、SMTP、SSH
UDP概述
因此,UDP 仅仅是将接收到的数据按照先来后到的顺序转发到应用程序。如果数据顺序对应用程序很重要,应用程序必须确定正确的顺序并决定如何处理数据。因此,UDP 仅仅是将接收到的数据按照先来后到的顺序转发到应用程序。如果数据顺序对应用程序很重要,应用程序必须确定正确的顺序并决定如何处理数据。### 功能
UDP 是一种尽最大努力传输协议。UDP 是一种轻型传输协议,提供与 TCP 相同的数据分段和重组功能,但是没有 TCP 所提供的可靠性和流量控制。
UDP 协议非常简单,它通常被描述为与 TCP 比较所不提供的功能。
UDP的特点包括以下几种:
- 数据按照接收顺序重构。
- 丢失的任何数据段都不会重新发送。
- 不会建立会话。
- 不会告知发送者资源可用性。
报头
UDP 是无状态协议,这意味着客户端和服务器都不会跟踪通信会话的状态。如果使用 UDP 作为传输协议时要求可靠性,必须由应用来处理可靠性。
UDP 中的通信块称为数据报或数据段,这些数据报通过传输层协议尽力传送,有四个字段,需要8个字节(即64位)。该图显示的是 UDP 报头中的字段。
报头字段
UDP 报头字段 | 描述 |
---|---|
源端口 | 一个16位字段,用于通过端口号标识源应用程序。 |
目的端口 | 一个16位字段,用于通过端口号标识目的应用 程序。 |
长度 | 一个16位字段,指示UDP数据报报头的长度。 |
校验和 | 一个16位字段,用于数据报报头和数据的错误检查。 |
应用程序
最适合采用 UDP 协议的三种应用程序包括:
- 实时视频和多媒体应用程序 - 这些应用可以容忍部分数据丢失但要求延迟极小或没有延迟的应用程序。示例包括 VoIP 和实时流传输视频。
- 简单请求和应答应用程序- 处理简单事务的应用程序,其中主机发送请求,但不一定收到应答。示例包括 DNS 和 DHCP。
- 处理可靠性的应用程序 - 不要求进行流量控制、错误检测、确认和错误恢复,或这些功能由应用程序来执行的单向通信。示例包括 SNMP 和 TFTP。
即:DHCP、DNS、SNMP、TFTP、VoIP、视频会议
端口号
TCP 和 UDP 传输层协议使用端口号来管理多个同时的对话。TCP和UDP报头字段标识源和目的应用程序端口号。
源端口和目的端口都被置入分段内,然后分段封装于IP 数据包内。IP 数据包中含有源 IP 地址和目的 IP 地址。
源 IP 地址和源端口号的组合或者目的 IP 地址和目的端口号的组合,称为套接字。
互联网编号指派机构 (IANA) 是负责分配各种编址标准(包括端口号)的标准组织。用于标识源端口号和目的端口号的16位二进制提供了从0到65535的端口范围。
三个端口组
| 端口组 | 号码范围 | 描述 |
| — | — | — |
| 公认端口 | 0到1023 | 这些端口号保留用于常见或流行的服务和应用程序, 例如 Web浏览器, 电子邮件客户端和远程访问 客户端。为常用的服务器应用程序定义的公认端口使 客户端能够轻松识别所需的关联服务。
|
| 注册端口 | 1024到49151 | IANA将这些端口号分配给请求实体, 以用于特定的进程或应用程序。这些进程主要是用户选择安装的单个 应用程序, 而不是使用公认端口号的 常见应用程序。例如, 思科已为其RADIUS服务器身份验证进程 注册了端口1812。
|
| 私有和(或)动态端口 | 49152 到 65535 | 这些端口也称为 _临时端口_。客户端的操作系统通常在 发起与服务的连接时动态分配端口号。之后即可在通信过程中使用动态端口识别客户端 应用程序。
|
该表显示了一些常用的公认端口号及其相关应用程序。
| 端口号 | 协议 | 应用层 |
| — | — | — |
| 20 | TCP | 文件传输协议 (FTP) - 数据 |
| 21 | TCP | 文件传输协议 (FTP) - 控制 |
| 22 | TCP | 安全 Shell (SSH) |
| 23 | TCP | Telnet |
| 25 | TCP | 简单邮件传输协议 (SMTP) |
| 53 | UDP、TCP | 域名服务 (DNS) |
| 67 | UDP | 动态主机配置协议 (DHCP)- 服务器 |
| 68 | UDP | 动态主机配置协议-客户端 |
| 69 | UDP | 简单文件传输协议 (TFTP) |
| 80 | TCP | 超文本传输协议 (HTTP) |
| 110 | TCP | 邮局协议第 3 版 (POP3) |
| 143 | TCP | 互联网消息访问协议 (IMAP) |
| 161 | UDP | 简单网络管理协议 (SNMP) |
| 443 | TCP | 安全超文本传输协议 (HTTPS) |
Windows中命令netstat
可列出正在使用的协议、本地地址和端口号、外部地址和端口号以及连接的状态。
默认情况下,netstat命令会试图将 IP 地址解析为域名,将端口号解析为公认应用程序。使用 -n 选项能够以数字形式显示 IP 地址和端口号。
TCP通信进程
在服务器上运行的每个应用程序进程都配置为使用一个端口号。端口号由系统管理员自动分配或手动配置。
在同一传输层服务中,单个服务器上不能同时存在具有相同端口号的两个不同服务。
分配有特定端口的活动服务器应用程序被认为是开放的,也就是说,传输层将接受并处理分配到该端口的数据段。所有发送到正确套接字地址的传入客户端请求都将被接受,数据将被传送到服务器应用。
TCP 连接的建立(三次握手)
三次握手验证目标主机是否可用来通信。
- 第一步SYN:源客户端请求与服务器进行客户端-服务器通信会话。
- 第二步ACK和SYN:服务器确认客户端-服务器通信会话,并请求服务器-客户端通信会话。
- 第三步ACK:源客户端确认服务器-客户端通信会话。
会话终止
若要关闭连接,分段报头必须设置完成 (FIN) 控制标志。为终止每个单向 TCP 会话,需采用包含 FIN 分段和确认 (ACK) 分段的二次握手。
因此,若要终止 TCP 支持的整个会话过程,需要实施四次交换,以终止两个双向会话。客户端或服务器都可以发起终止。
- 第一步FIN:当客户端的数据流中没有其他要发送的数据时,它将发送带 FIN 标志设置的分段。
- 第二步ACK:服务器发送 ACK 信息,确认收到从客户端发出的请求终止会话的 FIN 信息。
- 第三步FIN:服务器向客户端发送 FIN 信息,终止从服务器到客户端的会话。
- 第四部ACK:客户端发送 ACK 响应信息,确认收到从服务器发出的 FIN 信息。
TCP 三次握手分析
主机维护状态,跟踪会话过程中的每个分段,并使用 TCP 报头信息交换已接收数据的相关信息。TCP 是全双工协议,每个连接都代表两个单向通信会话。若要建立连接,主机应执行三次握手。如图所示,TCP 报头中的控制位指出了连接的进度和状态。
这些是三次握手的功能:
- 确认目的设备存在于网络上。
- 确认目的设备有活动的服务,并且正在源客户端要使用的目的端口号上接受请求。
- 通知目的设备源客户端想要在该端口号上建立通信会话。
通信完成后,将关闭会话并终止连接。连接和会话机制保障了 TCP 的可靠性功能。
TCP 分段报头的控制位字段中的六位被称为标志。标志是设置为开启或关闭的位。
六个控制位标志如下: - URG - 紧急指针字段(重要)
- ACK - 用于建立连接和会话终止的确认标志
- PSH - 推送功能
- RST - 在出现错误或超时时重置连接
- SYN - 同步建立连接中使用的序列号
- FIN - 没有更多来自发送方的数据,并用于会话终止
可靠性和流控制
TCP可靠性 - 保证及按序传递
有时可能TCP数据段没有到达目的地。有时,TCP段可能会无序到达。因此,为了让接收方理解原始消息,必须接收所有数据,并重组这些数据段,使其恢复原有顺序。每个数据包中的数据段报头中都含有序列号,便于进行数据重组。序列号代表 TCP 分段的第一个数据字节在完整数据中的位置。
在会话建立过程中,将设置初始序列号 (ISN)。此 ISN 表示传输到接收应用的字节起始值。在会话过程中,每传送一定字节的数据,序列号就随之增加。通过这样的数据字节跟踪,可以唯一标识并确认每个分段,还可以标识丢失的分段。
(ISN 并不是从 1 开始,而是随机的数字。这样做的目的是防止某些类型的恶意攻击。为简单起见,本章的示例中我们将使用 1 作为 ISN。)
TCP可靠性 - 数据丢失和重传
TCP 提供了管理数据段丢失的方法。其中一个方法就是重新传输未确认的数据。
- 序列 (SEQ) 号和确认 (ACK) 号一起使用,以确认接收传输段中包含的数据字节。SEQ 编号标识正在传输的数据段中的第一个字节。TCP 使用发送回源代码的 ACK 编号来指示接收方希望接收的下一个字节。这称为期望确认。
在进行后续增强之前,TCP只能确认预期的下一个字节。 - 今天的主机操作系统通常采用一种称为选择性确认 (SAK) 的可选 TCP 功能,在三次握手期间协商。如果两个主机都支持SACK,则接收方可以明确地确认接收了哪些数据段(字节),包括任何不连续的段。因此,发送主机只需要重新传输丢失的数据。
TCP 流量控制 - 窗口大小和确认
TCP 还提供了流量控制机制。
流量控制即目的主机能够可靠地接收并处理的数据量。
流量控制可以调整给定会话中源和目的地之间的数据流速,有助于保持 TCP 传输的可靠性。为此,TCP 报头包括一个称为“窗口大小”的 16 位字段。窗口大小用于确定在获得确认前可以发送的字节数。
确认号是指下一个预期字节的编号。
窗口大小是 TCP 会话的目的设备一次可以接受和处理的字节数。
初始窗口大小在三次握手期间建立 TCP 会话时确定。源设备必须根据目的设备的窗口大小限制发送到目的设备的字节数。只有源设备收到字节数已接收的确认之后,才能继续发送更多会话数据。
注意:设备如今使用滑动窗口协议。接收方通常在每收到两个数据段之后发送确认。在确认之前收到的数据段的数量可能有所不同。滑动窗口的优势在于,只要接收方确认之前的数据段,就可以让发送方持续传输数据段。
TCP 流量控制-最大段大小 (MSS)
MSS 是 TCP 报头中选项字段的一部分,用于指定设备可以在单个 TCP数据段中接收的最大数据量(以字节为单位)。
- MSS 大小不包括 TCP 报头。
- MSS 通常包括在三次握手过程中。
- 使用 IPv4 时,常见的 MSS 为 1460 字节。
主机会从以太网最大传输单位 (MTU) 中减去 IP 和 TCP 报头,从而确定其 MSS 字段的值。在以太网接口上,默认 MTU 为 1500 个字节。减去 20 个字节的 IPv4 报头和 20 个字节的 TCP 报头,默认 MSS 大小为 1460 个字节
TCP 流量控制 - 避免拥塞
网络中出现拥塞会使过载的路由器丢弃数据包。当包含 TCP 数据段的数据包未到达其目的地时,它们就成为未确认的数据包。通过确定 TCP 数据段发送但未确认的速率,源设备可以假设一定程度的网络拥塞。
出现网络拥塞时,从源设备丢失的 TCP 数据段就会重传。如果不适当控制重传,TCP 数据段的额外重传会使拥塞的情况更糟。网络中不仅有 TCP 数据段的新数据包,而且还有重传丢失的 TCP 数据段的反馈效果,这都增加了拥塞。
为避免和控制拥塞,TCP 使用了多个拥塞处理机制、计时器和算法。
如果源设备确定 TCP 数据段没有被确认或没有被及时确认,它会在收到确认之前减少发送的字节数。
UDP通信
低开销与可靠性
UDP 数据报重组
与 TCP分段类似,当将多个 UDP 数据报发送到目的主机时,它们通常采用不同的路径,到达顺序也可能跟发送时的顺序不同。与 TCP 不同,UDP 不跟踪序列号。
因此,UDP 仅仅是将接收到的数据按照先来后到的顺序转发到应用程序。如果数据顺序对应用程序很重要,应用程序必须确定正确的顺序并决定如何处理数据。
UDP 服务器进程与请求
与基于 TCP 的应用程序相同的是,基于 UDP 的服务器应用程序也被分配了公认端口号或注册端口号。当上述应用或进程在服务器上运行时,它们就会接受与所分配端口号相匹配的数据。当 UDP 收到用于某个端口的数据报时,它就会按照应用的端口号将数据发送到相应的应用。
UDP 客户端进程
客户端应用向服务器进程请求数据,便会发起客户端-服务器通信。
UDP 客户端进程则是从可用端口号中动态挑选一个端口号,用来作为会话的源端口。
而目的端口通常都是分配到服务器进程的公认端口号或注册端口号。
应用层
应用层、表示层和会话层
应用层
该层为用于通信的应用程序和用于消息传输的底层网络提供接口。应用层协议用于在源主机和目的主机上运行的程序之间进行数据交换。
基于TCP/IP模型,OSI 模型上面三层(应用层、表示层和会话层)定义了 TCP/IP 应用层的功能。
表示层
表示层具有三个主要功能:
- 将来自源设备的数据格式化或表示成兼容形式,以便目的设备接收。
- 采用可被目的设备解压缩的方式对数据进行压缩。
- 加密要传输的数据并在收到数据时解密数据。
表示层标准的示例有MKV、GIF、JPG、MOV和PNG。
会话层
会话层的功能就是创建并维护源应用程序和目的应用程序之间的对话。会话层用于处理信息交换,发起对话并使其处于活动状态,并在对话中断或长时间处于空闲状态时重启会话。
TCP/IP 应用层协议
域名系统
DNS - 域名系统(或服务)
- TCP,UDP客户端 53
- 将域名(例如 cisco.com)转换为 IP 地址。
主机配置
BOOTP - 引导程序协议
- UDP 客户端 68,服务器 67
- 允许无盘工作站探查其 IP 地址、网络中 BOOTP 服务器的 IP 地址以及要加载到内存中以引导机器的文件
- BOOTP 正在被 DHCP 所取代
DHCP-动态主机配置协议
- UDP 客户端 68,服务器 67
- 动态分配IP地址可以重复使用不再需要的地址
电子邮箱
SMTP - 简单邮件传输协议
- TCP 25
- 允许客户端向邮件服务器发送电子邮件
- 允许服务器向其他服务器发送电子邮件
POP3 - 邮局协议
- TCP 110
- 允许客户端从邮件服务器检索电子邮件 将电子邮件* 下载到客户端的本地邮件应用程序
IMAP - 互联网消息访问协议
- TCP 143
- 允许客户端访问存储在邮件服务器中的电子邮件
- 在服务器上维护电子邮件
文件传输
FTP - 文件传输协议
- TCP 20至21
- 设置规则,使得一台主机上的用户能够通过网络访问另一台主机或向其传输文件
- FTP是一种可靠、面向连接且进行确认的文件传输协议。
TFTP - 简单文件传输协议 - UDP 客户端 69
- 一个简单的,无连接的文件传输协议,使用尽最大努力、不被答复的文件交付
- 它使用的开销比FTP少
Web
HTTP-超文本传输协议
- TCP 80,8080
- 有关在万维网上交换文本、图形图像、音频、视频以及其他多媒体文件的一组规则集
HTTPS - 安全 HTTP - TCP,UDP 443
- 浏览器使用加密技术保护 HTTP 通信
- 验证您的浏览器连接的网站
客户端-服务器模式
客户端进程和服务器进程都处于应用层。客户端首先向服务器发送数据请求,服务器通过发送一个或多个数据流来响应客户端。应用层协议规定了客户端和服务器之间请求和响应的格式。除了实际数据传输外,数据交换过程还要求用户身份验证以及要传输的数据文件的标识。
对等网络(P2P)
在对等 (P2P) 网络模式中,可以从对等设备访问数据,而无需使用专用服务器。
P2P 网络模型包含两个部分:P2P 网络和 P2P 应用程序。
P2P 网络
在 P2P 网络中,两台或多台计算机通过网络互连,它们共享资源(如打印机和文件)时可以不借助专用服务器。每台接入的终端设备(称为“对等体”)既可以作为服务器,也可以作为客户端。在某项事务中,作为服务器的计算机也可以同时成为其他服务器的客户端。于是,计算机的角色根据请求的不同在客户端和服务器之间切换。
P2P 应用程序
对等 (P2P) 应用程序允许设备在同一通信中同时充当客户端和服务器。在该模型中,每台客户端都是服务器,而每台服务器也同时是客户端。P2P 应用程序要求每台终端设备提供用户界面并运行后台服务。
常见对等应用程序
使用 P2P 应用程序时,网络中运行该应用程序的每台计算机都可以充当在网络中运行该应用程序的其他计算机的客户端或服务器。常见 P2P 网络包括:
- BitTorrent
- Direct Connect
- eDonkey
- Freenet
某些 P2P 应用程序基于 Gnutella 协议,允许每个用户与他人共享整个文件。如图所示,通过与 Gnutella 协议兼容的客户端软件,用户可以在互联网上连接 Gnutella 服务,然后定位并访问由其他 Gnutella 对等设备共享的资源。许多Gnutella客户机应用程序可用,包括μTorrent,BitComet, DC++, Deluge, 和emule。
Web 和电子邮件协议
超文本传输协议(HTTP)和超文本标记语言(HTML)
URL(Uniform Resource Locator,统一资源定位符)
URI(Uniform Resource Identifier,统一资源标识符)
对于http://www.cisco.com/index.html(URL)
- 浏览器对 URL 地址的三个组成部分进行分析:http(协议或方案)、www.cisco.com(服务器名称)、index.html(所请求的特定文件名)
- 然后,浏览器将通过域名服务器将 www.cisco.com 转换成数字表示的 IP 地址,用它连接到该服务器。客户端通过向服务器发送GET请求向服务器发起一个HTTP请求并请求index.html文件。
- 作为对请求的响应,服务器将此web页面的HTML代码发送到浏览器。
- 浏览器解译 HTML 代码并为浏览器窗口格式化页面。
HTTP 和 HTTPS
HTTP 是一种请求/响应协议。当客户端,尤其是 Web 浏览器,发送请求到 Web 服务器时,HTTP 将指定用于该通信的消息类型。
常用的三种消息类型包括 GET、POST 和 PUT。
- GET - 客户端请求数据。客户端(Web 浏览器)向 Web 服务器发送 GET 消息以请求 HTML 页面。
- POST - 上传数据文件到 Web 服务器,例如表单数据。
- PUT - 用于向 Web 服务器上传资源或内容,例如图像。
尽管 HTTP 灵活性相当高,但它不是一个安全协议。
为了在互联网中进行安全通信,人们使用 HTTP 安全(HTTPS)协议。HTTPS 借助身份验证和加密来保护数据,使数据得以安全地在客户端与服务器之间传输。HTTPS 使用的客户端请求服务器响应过程与 HTTP 相同,但在数据流通过网络传输以前会使用安全套接字层 (SSL) 加密。
电子邮件协议
邮件是通过网络发送、存储和检索电子消息的存储转发方法。邮件消息存储在邮件服务器的数据库中。
邮件客户端通过与邮件服务器通信来收发邮件。邮件服务器之间也会互相通信,以便将邮件从一个域发到另一个域中。也就是说,发送邮件时,邮件客户端并不会直接与另外一个邮件客户端通信。而是双方客户端均依靠邮件服务器来传输邮件。
电子邮件支持三种单独的协议以实现操作:简单邮件传输协议 (SMTP)、邮局协议 (POP) 和 Internet 邮件访问协议 (IMAP)。发送邮件的应用层进程会使用 SMTP。客户端会使用以下两种应用层协议之一来检索邮件:POP 或 IMAP。
SMTP
SMTP 邮件格式要求邮件具有报头和正文。虽然邮件正文没有长度限制,但邮件报头必须具有格式正确的收件人邮件地址和发件人地址。
当客户端发送邮件时,客户端 SMTP 进程会连接公认端口 25 上的服务器 SMTP 进程。连接建立后,客户端将尝试通过此连接发送邮件到服务器。服务器收到邮件后,如果收件人在本地,它会将邮件保存在本地账户中,或者将邮件转发给另一台邮件服务器以便传输。
发出邮件时,目的邮件服务器可能并不在线,或者正忙。因此,SMTP 将邮件转到后台处理,稍后再发送。服务器会定期检查邮件队列,然后尝试再次发送。经过预定义的过期时间后,如果仍然无法发送邮件,则会将其作为无法投递的邮件退回给发件人。
POP
应用程序使用 POP 从邮件服务器中检索邮件。根据 POP 的规定,邮件将从服务器下载到客户端,然后从服务器上删除。这是 POP 的默认操作。
服务器通过在 TCP 端口 110 上被动侦听客户端连接请求来启动 POP 服务。当客户端要使用此服务时,它会发送一个请求来建立与服务器的 TCP 连接。一旦建立连接,POP 服务器即会发送问候语。然后客户端和 POP 服务器会交换命令和响应,直到连接关闭或中止。
根据 POP,由于电子邮件会下载到客户端并从服务器删除,因此电子邮件不会集中保存在某一特定的位置。因为 POP 不存储邮件,因此不建议用于需要集中备份解决方案的小型企业。POP3 是最常用的版本。
IMAP
IMAP 是另外一种用于检索电子邮件消息的协议。与 POP 不同的是,当用户连接使用 IMAP 的服务器时,邮件的副本会下载到客户端应用程序。同时原始邮件会一直保留在服务器上,直到用户将它们手动删除。用户在自己的邮件客户端软件中查看邮件副本。
用户可以在服务器上创建文件层次结构来组织和保存邮件。该文件结构会照搬到邮件客户端。当用户决定删除邮件时,服务器会同步该操作,从服务器上删除对应的邮件。
IP 编址服务
使用数字 IP 地址标记设备以便通过网络发送和接收数据。人们创建了可以将数字地址转换为简单易记名称的域名系统。
DNS (Domain Name System,域名系统)协议定义了一套自动化服务,该服务将资源名称与所需的数字网络地址匹配。协议涵盖了查询格式、响应格式及数据格式。DNS 协议通信采用单一格式,即消息格式。该格式用于所有类型的客户端查询和服务器响应、报错消息、以及服务器间的资源记录信息的传输。
DNS 消息格式
DNS 服务器中存储不同类型的资源记录,用来解析域名。这些记录中包含域名、地址以及记录的类型。
这些记录有以下类型:
- A - 终端设备 IPv4 地址
- NS - 授权域名服务器
- AAAA - 终端设备 IPv6 地址(读作“四 A”)
- MX - 邮件交换记录
在客户端进行查询时,服务器 DNS 进程首先会查看自己的记录以解析名称。如果服务器不能通过自身存储的记录解析域名,它将联系其他服务器对该域名进行解析。在检索到匹配信息并将其返回到原始请求服务器后,服务器临时存储数字地址,以供再次请求同一域名时使用。
DNS在服务器间使用相同的消息格式,包含所有类型的客户端查询的问题、回答、授权和更多信息以及服务器响应、错误消息和服务器间的资源记录信息的传输。
ipconfig /displaydns
命令显示所有 DNS 缓存条目。(Windows)nslookup
命令后,即显示为主机配置的默认 DNS 服务器,可以在nslookup提示符下输入主机名或域名
DNS 层级
DNS 协议采用分层系统创建数据库以提供名称解析
不同的顶级域有不同的含义,分别代表着组织类型或起源国家/地区
动态主机配置协议(DHCP)
主机连入网络时,将联系 DHCP 服务器并请求地址。DHCP 服务器从已配置地址范围(也称为“地址池”)中选择一条地址,并将其分配(租赁)给主机。
在较大型的网络中,或者用户经常变更的网络中,地址分配优先选用 DHCP。新用户可能在到达时需要连接;其他用户可能有新计算机必须要连接。与为每个连接使用静态编址的做法相比,采用 DHCP 自动分配 IPv4 地址的方法更有效。
DHCP可以在一段可配置的时间内分配IP地址,这段时间称为租期。租期是一个重要的 DHCP 设置,当租期过期或 DHCP 服务器收到 DHCPRELLAME 消息时,地址将返回到 DHCP 池以便重复使用。因此,用户可以自由的移动位置,并通过DHCP随时重新连接网络。
很多网络都同时采用 DHCP 和静态编址。DHCP 用于一般用途主机,例如用户终端设备。静态编址用于网络设备,例如网关路由器、交换机、服务器和打印机。
DHCP 工作原理
配置了 DHCP 的 IPv4 设备在启动或连接到网络时,
客户端将广播一条 DHCP 1发现 (DHCPDISCOVER) 消息以确定网络上是否有可用 DHCP 服务器。
DHCP 服务器回复 DHCP 2服务 (DHCPOFFER) 消息,为客户端提供租赁服务。该服务消息包含为其分配的 IPv4 地址和子网掩码、DNS 服务器的 IPv4 地址和默认网关的 IPv4 地址。租赁服务还包括租用期限。
如果本地网络中有超过一台 DHCP 服务器,客户端可能会收到多条 DHCPOFFER 消息。此时,客户端必须在这些服务器中进行选择,并且将包含服务器标识信息及客户端所接受的租赁服务的 DHCP 3请求 (DHCPREQUEST) 消息发送出去。客户端还可选择向服务器请求分配以前分配过的地址。
如果客户端请求的 IPv4 地址(或者服务器提供的 IPv4 地址)仍然可用,服务器将返回 DHCP 4确认 (DHCPACK) 消息,向客户端确认地址租赁。如果请求的地址不再有效,则所选服务器将回复一条 DHCP 否定确认 (DHCPNAK) 消息。一旦返回 DHCP NAK 消息,应重新启动选择进程,并重新发送新的 DHCP 发现消息。客户端租赁到地址后,应在租期结束前发送 DHCPREQUEST 消息进行续期。
DHCP 服务器确保每个 IP 地址都是唯一的(一个 IP 地址不能同时分配到不同的网络设备上)。因此,大多数ISP往往使用 DHCP 为其客户分配地址。
DHCPv6 有一组与DHCPv4 类似的消息。DHCPv6 消息包括 SOLICIT、ADVERTISE、INFORMATION REQUEST 和 REPLY。
文件共享服务
文件传输协议(FTP)
FTP 用于客户端和服务器之间的数据传输。FTP 客户端是一种在计算机上运行的应用,用于从 FTP 服务器中收发数据。
客户端使用 TCP 端口 21 与服务器建立第一个连接用于控制流量。流量由客户端命令和服务器应答组成。
客户端使用 TCP 端口 20 与服务器建立第二个连接用于实际数据传输。每当有数据需要传输时都会建立此连接。
数据传输可以在任何一个方向进行。客户端可以从服务器下载(取)数据,也可以向服务器上传(放)数据。
服务器消息块(SMB)
服务器消息块 (SMB) 是一种客户端/服务器文件共享协议,用于规范共享网络资源(如目录、文件、打印机以及串行端口)结构。这是一种请求-响应协议。所有的 SMB 消息都采用一种常用格式。该格式采用固定大小的文件头,后跟可变大小的参数以及数据组件。
三个功能:
- 启动、身份验证以及终止会话
- 控制文件和打印机的访问
- 允许应用程序向任何设备收发消息
Microsoft 网络配置中主要采用 SMB 形式实现文件共享和打印服务。
与 FTP 协议支持的文件共享不同,SMB 协议中的客户端要与服务器建立长期连接。一旦建立连接,客户端用户就可以访问服务器上的资源,就如同资源位于客户端主机上一样。