计算机网络(408考研)
数据链路层
数据链路层的流量控制与可靠传输机制
GNB
场景2:
WT=7(正确情况)
发送方发送 7 个帧:
- 发送序号 0, 1, 2, 3, 4, 5, 6(预留序号 7)。
接收方返回 ACK 0~ACK 6:
假设所有 ACK 到达,发送方滑动窗口,发送 新帧 7, 0, 1, 2, 3, 4, 5。
即使 ACK 全部丢失:
发送方重传的是 旧的 0~6,而接收方此时期待的是 7 或 0~5。
接收方发现 重复的 0~6 会丢弃,避免歧义。
SR
为什么TDM(时分复用)对带宽有要求
- TDM的基本原理
TDM(时分复用)通过 将时间划分为固定长度的时隙,让多个信号轮流占用信道:
- 发送端:不同用户的信号被分配到不同的时间片(如用户1用第1个时隙,用户2用第2个时隙……)。
- 接收端:根据时间片提取对应信号,完成多路信号的分离。
- 带宽要求的核心原因
TDM对带宽的要求源于信号调制后的复合信号特性:复合信号的带宽:将多个信号按时间片交织后,复合信号的频谱会扩展,其带宽可能远大于单个信号带宽。
原因:时域上的快速切换(时隙轮换)会导致频域的高频成分增加(傅里叶变换性质)。
- 举例:
若将 4 路 4 kHz 的语音信号通过 TDM 合并:时隙切换速度需足够快(如每秒 8000 次,每时隙 125 μs),复合信号的带宽可能扩展到 数十kHz。若信道带宽不足,高频成分会被滤除,导致信号失真。
令牌环网络的工作流程
A → B → C → D →(令牌循环)
站点要发送数据时
- 举例:站点B有数据要发给站点D。
- 等待令牌:B必须等到令牌传到自己手里(比如当前令牌在A→B的路径上)。
- 拿到令牌后:
B把令牌改成数据帧(贴上数据,写上目的地址D)。
发送数据帧到环上(B→C→D→A→B)。 - 数据帧的旅程
途经C:C检查数据帧,发现不是发给自己的,直接转发给D。
到达D:D发现是发给自己的,复制数据,但继续转发帧(因为帧要回到发送者B)。
回到B:B收到自己发的数据帧后,不再转发,而是:
检查数据是否成功传输(通过帧状态位)。
回收数据帧,重新生成一个干净的令牌。
把新令牌传给下一个站点(B→C)。
为什么全双工模式下不需要碰撞检测?
- 半双工(Half-Duplex):
- 同一时间只能单向通信(如对讲机)。
- 发送和接收共享同一信道,因此可能发生冲突(两个设备同时发数据)。
- 需要碰撞检测(如CSMA/CD):设备边发边听,发现冲突后重传。
- 全双工(Full-Duplex):
- 双向同时通信(如电话)。
- 发送和接收使用独立的物理通道(如双绞线的两对线),互不干扰。
- 无需碰撞检测:因为发送和接收完全隔离,不可能冲突。
为什么网卡同时涉及数据链路层和物理层?
- 物理层(Layer 1)的职责
信号转换:
将计算机内部的数字信号(0/1)转换为适合传输的 电信号(以太网)、光信号(光纤) 或 电磁波(Wi-Fi)。
- 数据链路层(Layer 2)的职责
帧的封装与解封装:
将网络层(如IP数据包)加上 帧头(源/目的MAC地址)和 帧尾(FCS校验)。
CSMA/CD协议中最短帧长的界定
在以太网(CSMA/CD)中:
- 发送数据时,设备会持续监听信道(边发边听)。
- 如果发送的数据和监听到的信号不一致,说明发生了冲突。
- 一旦检测到冲突发送方会立即停止发送,并执行退避算法等待重传。
如果帧太短的话:
- 在冲突信号返回 A 之前,A 已经发完了整个帧。
- A 停止监听信道(因为帧已经发完),无法检测到冲突。
- 结果:A 以为发送成功,但实际上数据已经因冲突被破坏。
需要界定最短帧长,那么临界点就是传数据的时间占用整个争用期(2τ)
为什么“2τ × 速率”是最短帧长?
- 2τ 是冲突信号返回的最长时间。
- 速率 决定单位时间能发送多少比特。
- 乘积 就是“在冲突信号返回前,最少要发送多少比特”。
- 这里的(τ)为总线传播时延,就是在链路上传输消耗的时间。
- 总而言之:
以太网:物理上星型结构、逻辑上是总线型结构
由于电信号在网线中传输时会衰减,集线器的作用是 接收信号并重新放大,再广播给所有端口。
IEEE 802.11 无线局域网
有固定设施的
为什么AP会改变?
- 无线信号覆盖限制:单个AP的覆盖范围有限,移动设备(A)远离原AP(AP1)时,信号变弱,需切换到新AP(AP2)。
- 无缝漫游:在ESS中,所有AP共享同一个网络标识(SSID),设备可自动切换AP,而用户无感知。
- AP改变但通信不中断:
- 高层协议(如TCP/IP)不受影响,因为分配系统(DS)确保了数据转发。
- 只有物理层和链路层的连接点(AP)发生变化。
无固定设施的自组织网络
军事战场通信
场景:
士兵携带的无线设备(如战术电台、无人机)在野外快速部署,没有固定基站。自组网如何工作:
设备自动发现附近的战友设备,形成临时网络。
每台设备既是通信终端,也是路由器,负责转发其他设备的数据。
如果某个士兵移动(如前进或撤退),网络拓扑动态调整,自动选择新路径。
- 与移动IP的区别:
移动IP需要依赖固定基站和互联网基础设施,而自组网完全独立运行。
注意区分与移动IP的区别
手机热点是自组织网络吗?
PPP-P
- LCP 负责建立、维护和终止物理连接,并协商链路层参数。
调制解调器拨号后,LCP先和ISP的服务器“握手”。
双方协商:“我们用CHAP认证,不压缩数据,链路超时时间设为30秒”。
若协商成功,链路建立;若失败(如密码错误),断开连接。
- NCP 在LCP建立链路后,配置网络层参数(如IP地址)。
LCP完成链路建立后:
NCP(具体为IPCP)向ISP请求:“请给我一个IP地址”。
ISP回复:“你的IP是192.168.1.100,DNS是8.8.8.8”。
你的电脑获得IP,开始上网。
- 组帧的方法
不同链路层协议的转发机制的差异
- 以太网(IEEE 802.3)
使用CSMA/CD(半双工)或全双工模式,依赖交换机转发。
- PPP协议(点对点链路)
简化帧格式(无MAC地址),直接转发到唯一对端。
- 无线网络(IEEE 802.11)
通过AP(接入点)转发,MAC地址包含发送端、接收端和BSSID。
广播域(Broadcast Domain)与冲突域(Collision Domain)
- 广播域(Broadcast Domain)
定义:
广播域是指网络中能接收到同一广播消息的所有设备的集合。当一台设备发送广播包(如目的IP为255.255.255.255或MAC为FF:FF:FF:FF:FF:FF)时,该包会被广播域内的所有设备接收和处理。
关键设备的影响:
路由器:分隔广播域(默认不转发广播包),每个路由器接口属于不同的广播域。
交换机:不能分隔广播域(会泛洪广播包),所有连接的设备属于同一广播域。
集线器/中继器:不能分隔广播域(物理层设备,直接转发所有信号)。
示例:
若两个局域网通过路由器连接,则它们是两个独立的广播域;若仅通过交换机连接,则属于同一个广播域。
- 冲突域(Collision Domain)
定义:
冲突域是指网络中共享同一信道、可能发生数据冲突(Collision)的设备范围。当多台设备同时发送数据时,冲突域内的设备需要竞争信道(如CSMA/CD机制)。
关键设备的影响:
交换机:分隔冲突域(每个交换机端口是一个独立的冲突域),因为交换机支持全双工通信。
路由器:分隔冲突域(每个接口独立)。
集线器/中继器:不能分隔冲突域(所有连接的设备共享同一信道)。
示例:
若10台设备连接到一个集线器,它们属于同一个冲突域;若连接到一个交换机,则每台设备独占一个冲突域。
如何理解“数据链路层中,流量控制与可靠传输机制是交织在一起的”?
在计算机网络的数据链路层(Data Link Layer),流量控制(Flow Control) 和 可靠传输(Reliable Delivery) 是两个核心功能,它们通常紧密结合,共同确保数据高效、无差错地传输。以下是具体解释:
1. 流量控制(Flow Control)
目的:防止发送方发送数据过快,导致接收方来不及处理而丢包。
实现方式:
- 滑动窗口协议(Sliding Window):动态调整发送窗口大小,限制未确认的数据帧数量。
- 停等协议(Stop-and-Wait):每发一帧,必须等确认(ACK)后再发下一帧(效率低,但简单)。
关键点:流量控制主要解决 “接收方处理能力” 问题,避免缓冲区溢出。
2. 可靠传输(Reliable Delivery)
目的:确保数据帧正确、按序到达接收方,避免丢失或错误。
实现方式:
- 确认应答(ACK):接收方收到数据后返回确认信号。
- 超时重传(Retransmission):如果发送方未收到 ACK,会重发数据帧。
- 序号机制(Sequence Numbers):确保数据按顺序接收,避免重复或乱序。
关键点:可靠传输主要解决 “数据丢失或错误” 问题。
3. 为什么说它们“交织在一起”?
在数据链路层,流量控制和可靠传输通常由同一机制(如滑动窗口协议)同时实现,原因如下:
(1)滑动窗口协议同时实现两种功能
- 流量控制:通过调整窗口大小限制发送速率。
- 可靠传输:通过 ACK 和重传确保数据正确到达。
例子(TCP 的类似机制):
- 发送方窗口大小 = 接收方剩余缓冲区大小(流量控制)。
- 如果某个帧丢失,接收方会要求重传(可靠传输)。
(2)停等协议(简单但低效)
- 每发一帧必须等 ACK(可靠传输)。
- 由于每次只能发一帧,天然限制了发送速率(流量控制)。
(3)ARQ(自动重传请求)机制
- 回退 N 帧(Go-Back-N, GBN) 和 选择重传(Selective Repeat, SR) 协议同时涉及:
- 流量控制:限制未确认帧的数量(窗口大小)。
- 可靠传输:通过 ACK/NAK 和重传保证数据正确性。
4. 总结
功能 | 流量控制(Flow Control) | 可靠传输(Reliable Delivery) |
---|---|---|
核心目标 | 防止接收方过载 | 防止数据丢失或错误 |
实现方式 | 滑动窗口、停等协议 | ACK、超时重传、序号机制 |
交织点 | 滑动窗口同时控制速率和可靠性 | ARQ 机制(如 GBN、SR) |
结论:
在数据链路层,流量控制和可靠传输通常由同一套协议(如滑动窗口、ARQ)实现,因此它们是紧密交织的。这种设计既保证了数据传输的可靠性,又避免了接收方被淹没,提高了整体效率。
网络层
网络地址转换(NAT)
- 它把内部网络(例如家或公司的局域网)的私有IP地址,转换成对外的公共IP地址,让内部设备能访问互联网。
- 例如:
- 有3台设备(手机、电脑、平板),都通过路由器连接互联网。
- 内部IP(路由器分配的私有地址):
手机:192.168.1.2
电脑:192.168.1.3
平板:192.168.1.4 - 外部IP(运营商提供的公共地址):123.45.67.89
- 当你的手机访问某个网站(例如陈同学的桃花源)时,数据包先发给路由器,路由器会把手机的私有IP(192.168.1.2)替换成公共IP(123.45.67.89),并记录这个连接。网站收到请求后,只会看到公共IP(123.45.67.89),不知道内部具体是哪台设备发的请求。网站返回数据时,路由器根据之前的记录,再把数据转发给手机。
私有IP地址
A_HOME和B_HOME的路由器都用同样的私有IP段(比如192.168.1.1)。
A的电脑IP是192.168.1.2,B的电视也是192.168.1.2。
私有IP只在本地有效:
A的192.168.1.2只在A的局域网内有效,B的192.168.1.2也只在B有效。
当A电脑访问陈同学的网站时,路由器会把私有IP(192.168.1.2)转换成公共IP(比如123.45.67.89)。
通过路由器连接IPv4和IPv6网络
- 隧道技术(Tunneling)
两个IPv6网络通过IPv4互联网连接:
由器A将IPv6数据包封装为IPv4数据包,目标为路由器B的IPv4地址。
路由器B解封装后,将原始IPv6数据包转发到本地IPv6网络。
DHCP
DHCP的工作流程(4个步骤)
假设一台新电脑(DHCP客户端)连接到公司网络,需要获取IP地址:
(1)DHCP发现(DHCP Discover)电脑(刚开机,IP=0.0.0.0)广播一条消息:“谁是DHCP服务器?我需要一个IP地址!”源IP:0.0.0.0(因为还没有IP)目标IP:255.255.255.255(全网广播)目标MAC:FF:FF:FF:FF:FF:FF(局域网广播)
为什么用广播?→电脑不知道DHCP服务器在哪,只能大喊一声问所有人。
(2)DHCP提供(DHCP Offer)DHCP服务器(比如公司内网的服务器)听到广播后回应:“我这有一个IP:192.168.1.100,你要吗?”源IP:DHCP服务器的IP(如192.168.1.1)目标IP:255.255.255.255(仍然广播,因为电脑还没IP)提供的配置:IP地址、子网掩码、网关、DNS、租期(如24小时)
注意:如果网络中有多个DHCP服务器,电脑会收到多个Offer,通常选择第一个。
(3)DHCP请求(DHCP Request)电脑选择其中一个Offer(比如192.168.1.100),并广播确认:“我要用192.168.1.100,请确认!”源IP:0.0.0.0(仍未正式分配)目标IP:255.255.255.255(继续广播)
为什么还要广播?→告诉其他DHCP服务器“我已选好,你们不用再给我IP了”。
(4)DHCP确认(DHCP Ack)DHCP服务器最终确认分配:“OK,192.168.1.100归你了,租期24小时!”源IP:DHCP服务器IP目标IP:255.255.255.255正式分配:IP、子网掩码、网关、DNS等信息。
此时,电脑正式获得IP,可以上网了!
IPv6的QoS
- 是什么:
在有限的带宽下,提供端到端的可靠保证
- IPv6 通过以下方式原生支持 QoS:
流量类别(Traffic Class, 8位)
标记数据包的优先级(如视频通话 > 网页浏览)。流标签(Flow Label, 20位)
标识同一数据流(如一场视频会议的所有包),确保路由器统一处理。
- 某公司使用 IPv6 网络进行跨国视频会议,需保证低延迟、不卡顿。
步骤:
- 标记优先级
视频会议终端将数据包的 Traffic Class 设为 0xB8(对应实时交互类流量)。
Flow Label 设为唯一值(如 0xABC12),标识此会议流。
- 路由器处理
路由器检测到 Traffic Class = 0xB8,优先转发该数据包。
相同 Flow Label 的包走同一路径,避免乱序。
- 带宽保障
若网络拥塞,普通下载流量(Traffic Class = 0x00)会被延迟,视频会议包仍优先传输。
- 效果:
即使网络带宽紧张,视频会议仍保持流畅,而文件下载速度暂时下降。
RIP 中的水平分割与毒性逆转
- 水平分割的作用
规则:如果路由器从某个接口学到一条路由,则不会通过同一接口再通告该路由。
本例:
RouterB 从 RouterA 的接口学到 10.0.0.0/8,因此不会通过同一接口将这条路由发回给 RouterA。
即使 RouterA 的直连路由失效,RouterB 也不会向 RouterA 发送错误信息,从而避免环路。
- 使用毒性逆转(Poison Reverse)的效果
毒性逆转是水平分割的增强版,其核心思想是:
“如果路由器从某个接口学到一条路由,它仍然会通过同一接口通告该路由,但会将其标记为不可达(跳数=∞)。”
注意:
- 当 RouterA 的直连路由 10.0.0.0/8 失效时:RouterA 会立即删除直连路由。
- 水平逆转超时速度慢:RouterB 会继续保留“10.0.0.0/8 可通过 RouterA 到达(跳数=1)”的路由,直到路由超时计时器(Route Age Timer)到期(如RIP默认是180秒)。
移动 IP 通信过程示例
- 场景描述
假设你是一台笔记本电脑(移动节点),IP 地址是 192.168.1.100(归属地址),原始网络是“家庭 Wi-Fi”(归属网络)。
当你带着笔记本从家移动到公司时,公司网络是被访网络,你需要保持 192.168.1.100 不变以维持正在进行的视频会议。
- 步骤详解
- 在家(归属网络)
你的笔记本通过家庭 Wi-Fi(192.168.1.0/24)联网,本地代理(家庭路由器)记录你的归属地址 192.168.1.100。
- 移动到公司(被访网络)
公司网络是 10.0.0.0/8,笔记本连接到公司 Wi-Fi。
外地代理(公司路由器)为你分配一个转交地址(如 10.0.0.5),并通知你的本地代理:“192.168.1.100 现在在 10.0.0.5”。
- 数据转发流程
同事(IP 192.168.1.200)给你发送数据包,目标地址是你的归属地址 192.168.1.100。
本地代理(家庭路由器)拦截该数据包,通过隧道封装(如 IP-in-IP)发送到转交地址 10.0.0.5。
外地代理(公司路由器)解封装数据包,最终递交给你的笔记本。
- 你的回复
笔记本直接通过公司网络(10.0.0.0/8)发送回复,无需经过本地代理(优化路径)。
路由器的交付
直接交付-全程不经过路由器
即若同属一个子网的A与B通信:主机 A(192.168.1.2)和主机 B(192.168.1.3)连接在同一交换机的局域网中(子网 192.168.1.0/24)。
主机 A 判断 192.168.1.3 属于同一子网。
主机 A 发送 ARP 请求:“谁是 192.168.1.3?请告诉你的 MAC 地址”。
主机 B 回复 ARP 响应,提供自己的 MAC 地址。
主机 A 将 ICMP 请求包(ping)封装目标 MAC 地址,通过交换机直接交付给主机 B。
间接交付-多次直接交付
传输层
端口
实际通信流程示例
- 场景:用FTP客户端(端口21)上传文件到服务器。
- 客户端:
随机选择源端口(如50001),目标端口=21。
发送数据包:源Socket=192.168.1.100:50001,目的Socket=203.0.113.5:21。
- 服务器:
通过端口21识别FTP服务进程,处理请求。
返回数据时,源Socket=203.0.113.5:21,目的Socket=192.168.1.100:50001。
- 多任务支持:
同一台服务器可同时处理多个FTP连接,因为每个客户端的源Socket不同(如192.168.1.100:50001 vs 192.168.1.101:60000)
Q:UDP完全不靠谱吗?
不是!UDP的不可靠指协议本身不提供重传等机制,但应用层可自行实现可靠性(如QUIC协议)。
Q:TCP一定比UDP慢?
不一定!在丢包率低的网络中,TCP的流量控制能优化吞吐量;而UDP在高丢包时可能因无重传更快。
TCP 三次握手
- 为什么要使用三次握手?
- 不使用三次握手
若客户端发送SYN=1, Seq=100(第一次握手),但因网络延迟未到达服务器。
客户端超时重传SYN=1, Seq=200(新请求),成功建立连接并传输数据后关闭。
此时旧SYN(Seq=100)突然到达服务器,若仅用两次握手:
服务器误认为新连接,回复SYN-ACK并分配资源。
客户端实际已关闭连接,不会回复ACK,导致服务器一直等待(资源浪费)。
- 三次握手如何解决:
客户端对旧SYN-ACK(应答Seq=100)会回复RST(重置),因为当前连接已失效。(客户端已经完成了Seq=200的连接并关闭了。它现在并没有处于“SYN_SENT”或“ESTABLISHED”状态。当它收到这个SYN-ACK(Seq=300,对Seq=100的响应)时,发现这不是自己当前期望的报文。于是客户端直接丢弃这个SYN-ACK,并发送RST(Reset)报文给服务器。RST的作用是告诉服务器:“这个连接我已经不认了,请你别等了。”)
关键点:第三次握手(ACK)是客户端对服务器响应的确认,表明连接是“新鲜”的。
应用层
域名解析过程示例(以查询 1chendian2.github.io 为例)
假设你的计算机(客户机)需要访问 1chendian2.github.io
,但不知道它的 IP 地址,于是触发 DNS 解析过程。整个过程涉及 递归查询 + 迭代查询,并可能发送 最多 8 个 UDP 报文(4 次查询 + 4 次响应)。
步骤详解
- ① 客户机 → 本地域名服务器(递归查询)
- 动作:你的计算机向 本地 DNS 服务器(如 ISP 提供的 DNS 服务器)发送一个 DNS 请求报文(查询
1chendian2.github.io
的 IP)。 - 查询方式:递归查询(即本地 DNS 服务器必须返回最终结果,不能让你自己去问其他服务器)。
报文计数:
- 查询报文 1(客户机 → 本地 DNS)
- 响应报文 1(本地 DNS → 客户机,但此时可能无缓存,需后续查询)
- ② 本地 DNS 服务器查询缓存
- 如果本地 DNS 服务器缓存中有
1chendian2.github.io
的记录,直接返回 IP(解析结束)。 - 若无缓存,则本地 DNS 服务器代表客户机,向 根域名服务器 发起 迭代查询。
- ③ 本地 DNS → 根域名服务器(迭代查询)
- 动作:本地 DNS 服务器向 根域名服务器 查询
1chendian2.github.io
的 IP。(三级域名的网站、四级域名网站见2016计算机408考研) - 根域名服务器回复:“我不知道
1chendian2.github.io
的 IP,但.com
顶级域名服务器(TLD)的地址是X.X.X.X
,你去问它。”
报文计数:
- 查询报文 2(本地 DNS → 根服务器)
- 响应报文 2(根服务器 → 本地 DNS,返回
.com
TLD 地址)
- ④ 本地 DNS → .com 顶级域名服务器(迭代查询)
- 动作:本地 DNS 服务器向
.com
TLD 服务器(dns.com
)查询1chendian2.github.io
的 IP。 - TLD 服务器回复:“我不知道
1chendian2.github.io
的 IP,但abc.com
的权威域名服务器(dns.abc.com
)的地址是Y.Y.Y.Y
,你去问它。”
报文计数:
- 查询报文 3(本地 DNS → .com TLD)
- 响应报文 3(.com TLD → 本地 DNS,返回
dns.abc.com
地址)
- ⑤ 本地 DNS → abc.com 权威域名服务器(迭代查询)
- 动作:本地 DNS 服务器向
dns.abc.com
(权威服务器)查询1chendian2.github.io
的 IP。 - 权威服务器回复:“
1chendian2.github.io
的 IP 是192.0.2.100
。”
报文计数:
- 查询报文 4(本地 DNS →
dns.abc.com
)- 响应报文 4(
dns.abc.com
→ 本地 DNS,返回1chendian2.github.io
的 IP)
- ⑥ 本地 DNS 缓存并返回结果给客户机
- 动作:本地 DNS 服务器缓存
1chendian2.github.io
的 IP(192.0.2.100
),然后返回给客户机。 - 客户机 拿到 IP 后,即可访问
1chendian2.github.io
。
报文计数:
- 响应报文 5(本地 DNS → 客户机,返回最终 IP)
- 总结(报文流程)
步骤 | 查询方 → 被查询方 | 查询方式 | 返回内容 | 报文类型 |
---|---|---|---|---|
① | 客户机 → 本地 DNS | 递归查询 | (无缓存,需进一步查询) | 查询 1 |
② | 本地 DNS → 根服务器 | 迭代查询 | .com TLD 服务器地址 |
查询 2 + 响应 2 |
③ | 本地 DNS → .com TLD | 迭代查询 | abc.com 权威服务器地址 |
查询 3 + 响应 3 |
④ | 本地 DNS → dns.abc.com |
迭代查询 | 1chendian2.github.io 的 IP |
查询 4 + 响应 4 |
⑤ | 本地 DNS → 客户机 | 递归响应 | 192.0.2.100 |
响应 5 |
总报文数:5 次查询/响应(若严格按 UDP 计算,可视为 8 个报文)。
- DNS 缓存优化
- 本地 DNS 缓存:存储最近查询的域名,减少重复查询。
- 客户机缓存:如浏览器、操作系统也会缓存 DNS 记录(TTL 到期后清除)。
- 减少查询次数:若缓存命中,可跳过部分步骤(如直接问权威服务器)。
- 关键点
✅ 递归查询:客户机要求本地 DNS 服务器“必须给我最终答案”。
✅ 迭代查询:本地 DNS 服务器一步步问其他服务器(根 → TLD → 权威)。
✅ UDP 报文:DNS 默认使用 UDP(快速、轻量),但大响应可能用 TCP。
✅ 缓存机制:提高解析速度,减少根服务器压力。
这样,1chendian2.github.io
的 IP 就被成功解析,计算机可以访问该网站了!
FTP
FTP 工作原理详解(以文件传输为例)
FTP(File Transfer Protocol,文件传输协议)用于在客户端和服务器之间传输文件。它使用 两个独立的 TCP 连接:控制连接(端口 21)和 数据连接(端口 20)。下面以客户端上传文件 example.txt
到 FTP 服务器为例,详细说明 FTP 的工作流程。
- FTP 连接建立(控制连接)
① 客户端发起控制连接(TCP 三次握手)
- 动作:客户端向 FTP 服务器的 21 端口 发起 TCP 连接请求(SYN)。
- 服务器响应:服务器接受连接(SYN-ACK),完成三次握手(ACK)。
- 作用:建立 控制连接,用于发送 FTP 命令(如登录、切换目录、上传/下载请求等)。
示例命令(客户端发送):
1
2 USER username // 输入用户名
PASS password // 输入密码
- 文件传输(数据连接)
FTP 的数据连接有两种模式:主动模式(PORT) 和 被动模式(PASV)。
(1)主动模式(PORT)—— 服务器主动连接客户端
② 客户端发送 PORT 命令
- 动作:客户端告诉服务器:“我在
IP:端口
(如192.168.1.100:5000
)等你,请用 20 端口 连接我。” - 服务器响应:服务器从 20 端口 发起 TCP 连接至客户端指定的端口(
192.168.1.100:5000
)。
③ 数据传输
- 动作:客户端发送
STOR example.txt
(上传)或RETR example.txt
(下载)。 - 数据流:文件内容通过 数据连接(20 → 5000)传输。
适用场景:客户端位于公网(无防火墙限制),服务器能直接访问客户端。
(2)被动模式(PASV)—— 客户端主动连接服务器
② 客户端发送 PASV 命令
- 动作:客户端请求服务器:“请告诉我一个端口,我来连接你。”
- 服务器响应:服务器随机开放一个端口(如
3000
),并回复:227 Entering Passive Mode (192.168.1.1,3000)
。
③ 客户端连接服务器端口
- 动作:客户端主动连接服务器的
3000
端口,建立数据通道。
④ 数据传输
- 动作:客户端发送
STOR example.txt
或RETR example.txt
。 - 数据流:文件内容通过 数据连接(客户端 → 3000)传输。
适用场景:客户端位于 NAT/防火墙后(如家庭网络),无法被服务器直接访问。
- 连接关闭
⑤ 传输完成,关闭连接
- 控制连接:保持开放,可继续发送其他命令(如
LIST
查看目录)。 - 数据连接:传输完成后立即关闭。
- 退出:客户端发送
QUIT
,服务器关闭控制连接。
- FTP 关键特点总结
特性 | 说明 |
---|---|
双通道 | 控制连接(21) + 数据连接(20 或 PASV 随机端口) |
传输模式 | 主动模式(PORT) / 被动模式(PASV) |
协议依赖 | 基于 TCP,确保可靠传输 |
权限管理 | 支持用户名/密码认证,也可匿名登录(anonymous) |
跨平台 | 可在不同操作系统(Windows/Linux)间传输文件 |
- FTP 与 HTTP 对比
对比项 | FTP | HTTP |
---|---|---|
连接方式 | 双连接(控制+数据) | 单连接(请求-响应后关闭) |
传输效率 | 适合大文件(可断点续传) | 适合小文件(无状态) |
安全性 | 默认明文(可搭配 FTPS/SFTP) | 可加密(HTTPS) |
用途 | 文件管理(上传/下载/删除) | 网页访问(GET/POST) |
- 实际应用场景
- 网站维护:通过 FTP 上传网页文件至服务器。
- 企业备份:自动备份数据库至远程 FTP 存储。
- 匿名共享:提供公共文件下载(如 Linux 镜像站)。
通过上述流程,FTP 实现了高效、灵活的文件传输,适用于各种网络环境!
DNS(域名系统) 相关的记录类型
- A记录(Address Record)
- 作用:将域名指向一个 IPv4地址(如 192.0.2.1)。
1 | example.com. A 192.0.2.1 |
- 类似记录:
AAAA记录:指向IPv6地址(如 2001:db8::1)。
- 负载均衡:
通过轮询A记录来实现。
- CNAME记录(Canonical Name Record)
- 作用:将域名 别名 指向另一个域名(真实域名),实现间接解析。
1 | www.example.com. CNAME example.com. |
- 注意:
CNAME不能与其他记录(如MX、TXT)共存。常用于CDN、子域名统一管理。
电子邮件
发邮件:用户代理 → SMTP → 发送方SMTP服务器 → SMTP → 接收方SMTP服务器。
收邮件:用户代理 ← POP3/IMAP ← 接收方服务器。
异步通信:邮件存储在服务器,收件人随时拉取。
通过SMTP的“推”和POP3的“拉”,电子邮件实现了灵活、可靠的异步通信。
万维网的工作流程
- 万维网的工作流程如下:
- 服务器监听TCP端口80,等待连接请求。
- 浏览器发起请求,与服务器建立TCP连接。
- 浏览器发送HTTP请求获取网页。
- 服务器处理请求,构建所需信息并通过HTTP响应返回。
- 浏览器解析响应并显示网页。
- 释放TCP连接。
鼠标点击一个网页链接,会发生什么?
- 应用层
DHCP(若未配置IP):
用户主机通过DHCP协议自动获取本地网络的IP地址、子网掩码、默认网关等配置(若未手动配置)。
DNS:
浏览器解析URL中的域名 www.tsinghua.edu.cn,向本地DNS服务器发起查询请求,通过递归/迭代查询最终获取目标服务器的IP地址(如 166.111.4.100)。
HTTP:
浏览器生成HTTP请求(如 GET /chn/index.htm),并依赖下层协议(TCP)传输。
- 传输层
TCP连接:
浏览器通过TCP协议与服务器建立可靠连接(三次握手),目标端口为80(HTTP默认端口)。
若使用HTTPS:还需通过TLS协议加密(涉及SSL握手)。
UDP(可选):
DNS查询通常使用UDP协议(端口53),因其无需建立连接,适合快速的小数据包传输。
- 网络层(网际层)
IP路由:
HTTP请求被封装为IP数据包,源IP(用户主机)和目标IP(清华大学服务器)由路由器基于路由表逐跳转发。
ARP:
在局域网内,通过ARP协议将网关IP地址解析为MAC地址,确保数据包能通过以太网传输。
- 数据链路层
以太网(CSMA/CD):
在本地网络中,数据包封装为以太网帧,通过MAC地址寻址。若使用有线网络,遵循CSMA/CD冲突检测机制(交换机环境下冲突较少)。
PPP(广域网):
若用户通过ISP拨号上网,数据链路层可能使用PPP协议封装IP数据包。
- 物理层
数据最终转换为电信号(有线)或电磁波(无线),通过物理介质(如光纤、双绞线)传输至下一跳设备(如路由器、交换机)。
网络杂谈
嗯… 无法访问此页面
已重置连接。请尝试:检查连接、检查代理和防火墙ERR_CONNECTION_RESET
- dns服务器解析错误:首先电脑出现网页无法正常访问而其他应用正常,大多数人都会想到是否是dns服务器出现了解析的问题,所以他们做的第一件事情通常是将DHCP修改为手动配置dns,当然,我一开始也是这样考虑的,于是我修改了手动dns,将dns服务器配置为
114.114.114.114
或者国内一些主流大厂的dns服务器(如腾讯和阿里的dns服务器),但是在修改过后且用ipconfig /flushdns
命令清理dns缓存后,我发现该问题依旧会复现,且在发生问题的时候,通过终端是可以ping
通发生问题网站的网址的,也没有发生丢包的情况,且用nslookup
命令查看dns服务器解析目标网站的ip地址,也是正常解析的,因此我排除了dns出现问题的可能。
拨号上网
拨号上网(Dial-up Internet Access) 是一种通过电话线模拟信号传输数据的早期互联网接入技术,曾在20世纪90年代至21世纪初广泛使用。其核心特点是利用电话网络和调制解调器(Modem)实现计算机与互联网服务提供商(ISP)的连接。
1. 工作原理
调制解调器(Modem):
将计算机的 数字信号 转换为电话线可传输的 模拟信号(调制),反之亦然(解调)。- 拨号时,Modem会发出熟悉的“嘀嘀嘀…滋滋滋”握手音。
拨号过程:
- 用户通过计算机拨叫ISP提供的电话号码(如
16300
)。 - 电话线接通ISP的调制解调器池(Modem Pool)。
- 双方Modem协商连接参数(如速率:56 Kbps)。
- 建立PPP(点对点协议)连接,分配动态IP地址。
- 用户通过计算机拨叫ISP提供的电话号码(如
2. 主要特点
低速传输:
- 理论最大速率 56 Kbps(实际受线路质量影响可能仅30-40 Kbps)。
- 下载1MB文件需约3-5分钟,无法支持视频流媒体。
独占电话线:
- 上网时电话无法接听或拨出(“占线”)。
- 部分家庭安装“分线器”但会降低网速。
按需连接:
- 每次上网需手动拨号,按时间计费(早期按分钟收费)。
3. 关键组件
组件 | 作用 |
---|---|
调制解调器(Modem) | 数模信号转换,支持拨号与数据传输。 |
电话线(PSTN) | 物理传输介质,使用普通铜质电话线路。 |
ISP接入服务器 | 提供拨号号码、认证账号(如用户名/密码)、分配IP地址。 |
PPP协议 | 管理数据封装、错误检测和IP地址分配(如 PPPoE 衍生协议用于后续宽带)。 |
4. 与宽带对比
特性 | 拨号上网 | 现代宽带(如光纤) |
---|---|---|
速度 | 56 Kbps | 100 Mbps - 1 Gbps+ |
连接方式 | 按需拨号,临时连接 | 始终在线(Always-On) |
电话线影响 | 上网时电话不可用 | 独立线路(电话/网络分离) |
典型费用 | 按分钟计费 + 电话费 | 包月固定费用 |
5. 为什么被淘汰?
- 速度瓶颈:无法满足网页多媒体化(如图片、视频)需求。
- 技术替代:
- DSL(如ADSL):利用电话线高频频段,实现上网/通话并行。
- 光纤/ Cable:更高带宽、更低延迟。
- 用户体验差:连接不稳定,易受干扰(如天气、电磁噪声)。
6. 历史意义
- 互联网普及先驱:推动早期家庭和中小企业接入互联网。
- 文化符号:拨号音成为一代人的集体记忆(如美国在线AOL的“Welcome”语音)。
- 技术基础:PPP协议衍生出PPPoE,至今用于部分宽带认证。
常见问题
Q1:现在还能用拨号上网吗?
- 少数偏远地区或特殊场景(如备份连接)仍支持,但主流ISP已逐步关闭服务。
Q2:为什么拨号音听起来像“噪音”?
- 这是Modem的 握手协议(Handshaking),通过不同频率音频协商参数(如V.34/V.90标准)。
Q3:拨号上网的IP地址是固定的吗?
- 通常是动态IP,每次拨号重新分配(类似现代家庭宽带的DHCP)。