Appearance
FTP 与 DHCP
考情分析
FTP 和 DHCP 在 408 中考频不高,通常以选择题形式出现。FTP 常考双连接机制(控制连接 vs 数据连接)和端口号;DHCP 常考四步过程和"为什么用 UDP"。
考频:★★☆
FTP 文件传输协议
FTP(File Transfer Protocol,文件传输协议)用于在客户端和服务器之间传输文件。FTP 最大的特点是使用两个并行的 TCP 连接。
控制连接与数据连接
| 连接类型 | 端口 | 持续时间 | 用途 |
|---|---|---|---|
| 控制连接 | 21 | 整个 FTP 会话期间保持 | 传输 FTP 命令和响应 |
| 数据连接 | 20(主动模式) | 每次文件传输时建立,传完就关闭 | 传输文件数据 |
控制连接是持久的,用于发送命令(如 LIST、RETR、STOR)和接收响应。数据连接是临时的,每次传输文件或目录列表时建立一个新的数据连接,传完就关闭。
这种分离设计被称为带外控制(Out-of-Band Control)——控制信息和数据走不同的连接。与之对比,HTTP 是带内控制,请求和响应都走同一个 TCP 连接。
主动模式与被动模式
主动模式(PORT):
- 客户端通过控制连接告诉服务器自己的数据端口号
- 服务器从端口 20 主动连接到客户端指定的端口
- 数据连接建立,开始传输
主动模式的问题:如果客户端在防火墙/NAT 后面,服务器无法主动连接到客户端。
被动模式(PASV):
- 客户端通过控制连接发送 PASV 命令
- 服务器打开一个随机端口,并告知客户端
- 客户端主动连接到服务器指定的端口
- 数据连接建立,开始传输
被动模式解决了防火墙穿越问题,实际中更常用。
传输模式
FTP 支持两种传输模式:
| 模式 | 说明 | 适用场景 |
|---|---|---|
| ASCII 模式 | 传输文本文件,自动进行换行符转换 | 文本文件 |
| 二进制模式(Binary/Image) | 逐字节传输,不做任何转换 | 图片、视频、压缩包等 |
FTP 的特点总结
- 使用 TCP 传输(可靠)
- 两个并行连接:控制连接(端口 21)+ 数据连接(端口 20 或随机端口)
- 有状态协议——服务器需要维护用户的当前目录、认证状态等
- 明文传输,安全性差(SFTP/FTPS 是安全替代方案)
DHCP 动态主机配置协议
DHCP(Dynamic Host Configuration Protocol,动态主机配置协议)用于自动为网络中的主机分配 IP 地址及其他网络配置参数。
为什么需要 DHCP
手动为每台主机配置 IP 地址既麻烦又容易出错。在大型网络中,主机数量多、位置经常变化(如笔记本电脑在不同楼层连 WiFi),手动配置根本不可行。DHCP 让主机接入网络后自动获取 IP 地址和其他配置。
DHCP 使用 UDP
DHCP 使用 UDP 端口 67(服务器)和 68(客户端)。
为什么不用 TCP?因为客户端在获得 IP 地址之前连自己的 IP 都没有,无法建立 TCP 连接。而且 DHCP 需要广播,TCP 不支持广播。
DHCP 的四步过程
DHCP 地址分配过程包含四个报文:Discover → Offer → Request → ACK(简记:DORA)。
第一步:DHCP Discover(发现)
客户端广播发送 Discover 报文:
- 源 IP:0.0.0.0(客户端还没有 IP)
- 目的 IP:255.255.255.255(广播地址)
- 目的是:找到网络中有哪些 DHCP 服务器
第二步:DHCP Offer(提供)
DHCP 服务器收到 Discover 后,从地址池中选一个可用的 IP 地址,发送 Offer 报文给客户端,内容包括:
- 分配给客户端的 IP 地址
- 子网掩码
- 默认网关
- DNS 服务器地址
- 租约期限
如果网络中有多个 DHCP 服务器,客户端可能收到多个 Offer。
第三步:DHCP Request(请求)
客户端从收到的 Offer 中选择一个(通常是第一个到达的),以广播方式发送 Request 报文,声明自己选择了哪个服务器的 Offer。
用广播而不是单播的原因:让其他 DHCP 服务器知道自己的 Offer 没有被选中,它们可以回收预留的 IP 地址。
第四步:DHCP ACK(确认)
被选中的 DHCP 服务器发送 ACK 报文确认。客户端收到 ACK 后,IP 地址正式生效,可以开始正常通信。
租约机制
DHCP 分配的 IP 地址不是永久的,而是有一个租约期限(Lease Time)。
- 租约到期前,客户端需要向 DHCP 服务器续租
- 通常在租约期过半(T1 = 50%)时,客户端会尝试向原服务器续租
- 如果续租失败,在租约期 87.5%(T2)时,客户端向任意 DHCP 服务器广播续租
- 如果租约到期仍未续租成功,客户端必须释放 IP 地址,重新执行 DORA 过程
DHCP 中继代理
DHCP 使用广播,但广播不能跨越路由器(路由器默认不转发广播)。如果 DHCP 服务器和客户端不在同一个子网,客户端的 Discover 广播到不了服务器。
解决方案:在每个子网中配置一个 DHCP 中继代理(Relay Agent)。中继代理收到客户端的广播后,以单播方式转发给位于其他子网的 DHCP 服务器。这样就不需要在每个子网都部署 DHCP 服务器了。
易错点
1. FTP 控制连接端口是 21,不是 20
21 是控制连接,20 是主动模式的数据连接。被动模式的数据连接端口是服务器随机指定的,不一定是 20。
2. DHCP 的四步都用广播(Discover 和 Request 一定是广播)
Discover 和 Request 是广播(客户端还没有确定的 IP 或需要通知其他服务器)。Offer 和 ACK 可以是广播也可以是单播(取决于实现)。
3. DHCP Request 用广播而不是单播
即使客户端已经决定选谁了,仍然用广播发 Request。目的是通知那些未被选中的服务器释放预留的地址。
4. DHCP 中继代理不等于 DHCP 服务器
中继代理只是转发 DHCP 报文,自己不分配 IP 地址。
5. FTP 是有状态的,HTTP 是无状态的
FTP 服务器需要维护用户的当前目录等状态信息,而 HTTP 服务器不保留之前请求的任何信息。
高频考点清单
- FTP 使用两个 TCP 连接:控制连接(端口 21)和数据连接(端口 20 或随机端口)
- FTP 主动模式 vs 被动模式的区别
- FTP 是带外控制,HTTP 是带内控制
- DHCP 的四步过程:Discover → Offer → Request → ACK(DORA)
- DHCP 使用 UDP(端口 67/68),原因是客户端还没有 IP 地址且需要广播
- DHCP 租约机制和续租时间点(T1=50%, T2=87.5%)
- DHCP 中继代理的作用(跨子网转发)