🌐 通俗版解析:
当你输入网址时,背后发生了什么?(故事化叙述)
想象你要去朋友家做客,但不知道具体地址。计算机网络世界也遵循类似的逻辑:
第一步:查地址簿(DNS解析)
就像用导航App搜索朋友小区,计算机会通过DNS系统查找网址对应的IP地址。
1️⃣ 问居委会(本地DNS):先查浏览器缓存→系统缓存→路由器缓存(就像先翻自己通讯录)
2️⃣ 查市政厅(根DNS):全球13组根服务器告诉你".com"归哪个部门管
3️⃣ 找片区管理员(顶级DNS):".com"管理局会告诉你"taobao.com"的登记处
4️⃣ 最终问物业(权威DNS):拿到淘宝服务器的真实IP地址
💡 小知识:DNS会缓存地址,就像你记下朋友地址后下次不用再查
第二步:建立专用通道(TCP三次握手)
拿到地址后,浏览器要和服务器"打电话"确认身份:
👋 客户端:“我要连接啦”(SYN)
👋 服务端:“收到!准备好啦”(SYN-ACK)
👋 客户端:“好的,开始传数据”(ACK)
就像:
A:“喂,听得到吗?”
B:“听到,你能听到我吗?”
A:“可以,开始说正事吧”
第三步:传输货物(HTTP/HTTPS)
普通快递(HTTP):数据明文传输,像寄明信片
加密专递(HTTPS):
1️⃣ 先交换密码本(SSL/TLS握手)
2️⃣ 用公钥加密临时密钥(像把密码锁在保险箱)
3️⃣ 后续用对称加密传输(双方用同一把密钥解密)
🔐 关键点:地址栏小锁标志=已加密,支付时务必认准!
第四步:高效运输(TCP流量控制)
采用智能物流策略防止堵车:
🚚 滑动窗口:根据路况动态调整发货量
⚠️ 拥堵控制:发现堵车立即减速(慢启动→线性增长→快恢复)
第五步:精准派送(IP寻址)
每个数据包都像快递包裹:
📦 源IP(寄件人地址)
📦 目标IP(收件人地址)
📦 TTL(最多经过多少快递站,防无限绕路)
常见地址分类:
🏢 A类:超大型企业(1.0.0.0~126.255.255.255)
🏠 C类:家庭网络(192.0.0.0~223.255.255.255)
第六步:最后一公里(数据链路层)
交换机像智能分拣员:
📡 通过MAC地址(设备身份证号)精准投递
📡 自学设备位置,建立转发表(类似记住同事工位)
🚀 高频面试题精粹
-
为什么TCP要三次握手?
防止已失效的连接请求突然传到服务器(防"僵尸来电") -
GET和POST区别?
GET POST 数据位置 URL可见 请求体隐藏 安全性 不适合敏感信息 相对安全 缓存 可缓存 不可缓存 数据量 受URL长度限制(约2KB) 支持大数据传输 -
HTTPS加密过程
非对称加密传密钥 + 对称加密传数据(像先寄密码箱再传文件) -
TCP vs UDP
TCP:可靠传输(视频会议)
UDP:快速传输(直播弹幕)
😈 以下内容请谨慎观看 😈
🌐 不通俗也不生动版解析:
当你准备上网时,首先打开浏览器,在地址栏中输入网址。
此时,域名系统(DNS)开始发挥作用,它通过递归查询或迭代查询的方式将你输入的域名转换为对应的 IP 地址。这涉及到 DNS 的层次结构、域名解析过程以及缓存机制等考点。
一、DNS 的层次结构
- 根域名服务器:处于 DNS 层次结构的顶端,负责管理顶级域名服务器的地址信息,全球共有 13 套根域名服务器系统,它们存储了顶级域名(如.com、.org、.net 等)的信息以及指向顶级域名服务器的指针。
- 顶级域名服务器:负责管理在该顶级域名下注册的所有二级域名。例如,对于 “.com” 顶级域名服务器,它存储了所有以 “.com” 结尾的域名信息以及对应的权威域名服务器地址。
- 权威域名服务器:由域名的所有者或管理者负责维护,存储了特定域名的详细 IP 地址信息。比如,某个公司的网站域名对应的权威域名服务器就存储了该公司网站的 IP 地址等具体信息。
- 本地域名服务器:也称为递归服务器,通常由互联网服务提供商(ISP)设置,它与用户的计算机距离较近。当用户发起域名解析请求时,首先会向本地域名服务器查询,如果本地域名服务器没有缓存该域名的解析结果,它会代表用户向其他层次的域名服务器发起查询。
二、域名解析过程
- 递归查询:
- 当用户的计算机向本地域名服务器发起域名解析请求时,如果本地域名服务器不知道该域名的 IP 地址,它会以客户端的身份向根域名服务器发起查询。
- 根域名服务器如果也不知道该域名的具体 IP 地址,但它会返回负责该顶级域名的顶级域名服务器的地址。
- 本地域名服务器接着向顶级域名服务器发起查询,顶级域名服务器再返回负责该域名的权威域名服务器的地址。
- 本地域名服务器最后向权威域名服务器发起查询,权威域名服务器返回该域名对应的 IP 地址。
- 本地域名服务器将查询到的 IP 地址返回给用户的计算机,完成域名解析过程。
- 迭代查询:
- 用户的计算机向本地域名服务器发起域名解析请求。
- 本地域名服务器向根域名服务器发起查询,根域名服务器返回负责该顶级域名的顶级域名服务器的地址。
- 本地域名服务器向顶级域名服务器发起查询,顶级域名服务器返回负责该域名的权威域名服务器的地址。
- 本地域名服务器向权威域名服务器发起查询,权威域名服务器返回该域名对应的 IP 地址。与递归查询不同的是,在迭代查询中,每一步都是由本地域名服务器向其他服务器发起查询,而不是由上级服务器代表本地域名服务器继续查询。
三、缓存机制
- 本地域名服务器缓存:本地域名服务器会缓存已经查询过的域名和对应的 IP 地址,这样当用户再次请求相同的域名解析时,本地域名服务器可以直接返回缓存中的 IP 地址,而无需再次向其他域名服务器发起查询,大大提高了域名解析的效率。缓存的时间通常由域名的生存时间(TTL)决定,当 TTL 过期后,本地域名服务器会重新发起查询更新缓存。
- 客户端缓存:一些操作系统和浏览器也会缓存域名解析结果,以加快网页访问速度。同样,客户端缓存也受到 TTL 的限制。
- 域名服务器之间的缓存:在域名解析的过程中,各级域名服务器也可能会缓存查询结果,以便更快地响应其他客户端的相同查询请求。例如,顶级域名服务器可能会缓存一些经常被查询的二级域名的权威域名服务器地址,减少重复查询的次数。
接着,浏览器使用超文本传输协议(HTTP)向目标服务器发出请求,渴望获取网页内容。HTTP 协议中包含请求方法(GET、POST 等)、状态码(200 表示成功、404 未找到等)、报文格式(请求报文和响应报文的组成)等考点。同时,若使用的是安全的超文本传输协议(HTTPS),则涉及到加密算法(对称加密、非对称加密等)、数字证书的验证等考点。
一、HTTP 请求方法
- GET:用于请求获取指定资源。它是最常见的请求方法,通常用于获取网页内容、图片等资源。GET 请求会将请求参数附加在 URL 后面,因此可以被缓存、收藏和保留在浏览器历史记录中。但由于请求参数暴露在 URL 中,所以不太适合传输敏感信息。
- POST:用于向服务器提交数据,通常用于提交表单、上传文件等操作。POST 请求的数据放在请求体中,相对更加安全,并且可以传输大量数据。
- PUT:用于向服务器上传资源,通常用于更新资源或创建新资源。PUT 请求要求请求体中包含完整的资源内容,服务器会用请求体中的内容完全替换指定资源的现有内容。
- DELETE:用于请求删除服务器上的指定资源。
- HEAD:与 GET 类似,但只返回响应头信息,不返回响应体内容。通常用于检查资源是否存在、获取资源的元信息等。
二、HTTP 状态码
- 1xx 信息性状态码:表示服务器收到请求,正在进行进一步处理。例如,100 Continue 表示客户端应继续发送请求,101 Switching Protocols 表示服务器正在根据客户端的请求切换协议。
- 2xx 成功状态码:表示请求成功处理。例如,200 OK 表示请求成功,服务器返回了请求的资源;201 Created 表示请求成功且服务器创建了新的资源。
- 3xx 重定向状态码:表示需要进一步的操作以完成请求。例如,301 Moved Permanently 表示请求的资源已被永久移动到新位置,客户端应使用新的 URL 访问;302 Found 表示请求的资源临时被移动到其他位置。
- 4xx 客户端错误状态码:表示客户端的请求有错误。例如,400 Bad Request 表示客户端请求语法错误;404 Not Found 表示服务器找不到请求的资源;403 Forbidden 表示服务器拒绝访问请求的资源。
- 5xx 服务器错误状态码:表示服务器在处理请求时发生错误。例如,500 Internal Server Error 表示服务器内部错误;502 Bad Gateway 表示服务器作为网关或代理,从上游服务器收到无效响应。
三、HTTP 报文格式
- 请求报文:
- 请求行:包括请求方法、请求 URL 和 HTTP 版本。例如,“GET /index.html HTTP/1.1”。
- 请求头:包含各种关于请求的元信息,如 Host(指定请求的服务器主机名和端口号)、User-Agent(客户端的信息)、Accept(客户端可以接受的响应内容类型)等。
- 请求体:对于某些请求方法(如 POST、PUT),包含要提交给服务器的数据。
- 响应报文:
- 状态行:包括 HTTP 版本、状态码和状态描述。例如,“HTTP/1.1 200 OK”。
- 响应头:包含关于响应的元信息,如 Content-Type(响应内容的类型)、Content-Length(响应内容的长度)、Server(服务器的信息)等。
- 响应体:包含服务器返回给客户端的实际内容,如网页的 HTML 代码、图片数据等。
四、HTTPS 加密算法和数字证书验证
- 加密算法:
- 对称加密:通信双方使用相同的密钥进行加密和解密。优点是加密和解密速度快,效率高。常见的对称加密算法有 AES(高级加密标准)等。在 HTTPS 中,对称加密用于加密实际传输的数据内容。
- 非对称加密:使用一对密钥,即公钥和私钥。公钥可以公开,用于加密数据;私钥由所有者保密,用于解密数据。非对称加密的安全性较高,但加密和解密速度相对较慢。常见的非对称加密算法有 RSA、ECC(椭圆曲线加密算法)等。在 HTTPS 中,非对称加密用于在建立连接时交换对称加密的密钥。
- 数字证书验证:
- 数字证书是由权威的证书颁发机构(CA)颁发的,包含服务器的公钥、服务器的名称、证书的有效期等信息,以及 CA 的数字签名。
- 当客户端与服务器建立 HTTPS 连接时,服务器会将数字证书发送给客户端。客户端会验证数字证书的有效性,包括以下步骤:
- 验证证书的颁发机构是否可信:客户端会检查证书颁发机构的数字签名,以确保证书是由可信任的 CA 颁发的。
- 验证证书的完整性:检查证书是否被篡改过。
- 验证证书的有效期:确保证书在有效期内。
- 验证证书上的服务器名称:确保证书上的服务器名称与实际连接的服务器名称一致。
- 如果数字证书验证通过,客户端会使用证书中的公钥与服务器进行非对称加密通信,协商出对称加密的密钥,然后使用对称加密进行后续的数据传输。
数据在网络中传输时,网际协议(IP)负责寻址和路由。IP 协议的考点包括 IP 地址的分类(A、B、C、D、E 类地址)、子网划分与子网掩码、路由选择算法(如距离向量算法、链路状态算法等)以及 IP 数据包的格式。
一、IP 地址分类
- A 类地址:
- 范围:1.0.0.0 到 126.255.255.255。
- 特点:网络号占 8 位,第一位固定为 0。可用于大型网络,网络数量较少但每个网络可容纳大量主机。
- B 类地址:
- 范围:128.0.0.0 到 191.255.255.255。
- 特点:网络号占 16 位,前两位固定为 10。适用于中型网络。
- C 类地址:
- 范围:192.0.0.0 到 223.255.255.255。
- 特点:网络号占 24 位,前三位固定为 110。用于小型网络,网络数量较多但每个网络容纳的主机数量较少。
- D 类地址:用于多播,范围是 224.0.0.0 到 239.255.255.255。
- E 类地址:保留用于实验和未来扩展,范围是 240.0.0.0 到 255.255.255.255。
二、子网划分与子网掩码
- 子网划分:
- 将一个大的网络划分为多个较小的子网,以提高网络管理的灵活性和效率。
- 通过借用主机位作为子网位来实现子网划分。例如,一个 B 类网络原本有 16 位网络号和 16 位主机号,若借用若干位主机号作为子网位,则可以划分出多个子网。
- 子网掩码:
- 用于确定 IP 地址中的网络号和主机号。
- 由连续的 1 和连续的 0 组成,1 对应网络号和子网号部分,0 对应主机号部分。
- 例如,对于一个 C 类网络,默认子网掩码是 255.255.255.0。如果进行子网划分,子网掩码可能会变成 255.255.255.128 等。
三、路由选择算法
- 距离向量算法:
- 每个路由器维护一张路由表,表中包含到各个目的网络的距离(通常以跳数表示)和下一跳路由器。
- 路由器定期与相邻路由器交换路由信息,根据收到的信息更新自己的路由表。
- 可能会出现路由环路问题,可通过设置最大跳数、水平分割等方法解决。
- 链路状态算法:
- 每个路由器通过与其他路由器交换链路状态信息,了解整个网络的拓扑结构。
- 根据拓扑结构计算到各个目的网络的最短路径。
- 相比距离向量算法,链路状态算法能更快地适应网络变化,且不易产生路由环路。
四、IP 数据包格式
- 版本:指明 IP 协议的版本,如 IPv4 或 IPv6。
- 头部长度:表示 IP 头部的长度,以 32 位字为单位。
- 服务类型:用于指示数据包的优先级、延迟、吞吐量等要求。
- 总长度:整个 IP 数据包的长度,包括头部和数据部分。
- 标识、标志、片偏移:用于数据包的分片和重组。当数据包长度超过网络的最大传输单元(MTU)时,需要进行分片传输,这些字段用于在目的端正确重组数据包。
- 生存时间(TTL):数据包在网络中可以经过的最大跳数,每经过一个路由器,TTL 减 1,当 TTL 为 0 时,数据包被丢弃。
- 协议:指示 IP 数据包封装的上层协议,如 TCP、UDP 等。
- 头部校验和:用于检测 IP 头部在传输过程中是否发生错误。
- 源 IP 地址和目的 IP 地址:分别表示发送数据包的主机和接收数据包的主机的 IP 地址。
- 选项(可选):一些额外的功能选项,如记录路由、时间戳等。
- 数据:上层协议的数据内容。
传输层则根据具体情况选择传输控制协议(TCP)或用户数据报协议(UDP)。TCP 协议的考点有三次握手建立连接的过程、四次挥手断开连接的机制、滑动窗口机制用于流量控制、拥塞控制算法(慢开始、拥塞避免、快重传、快恢复等)以及 TCP 报文段的格式。UDP 协议相对简单,考点主要是其无连接的特性以及报文格式。
一、TCP 协议
- 三次握手建立连接:
- 第一次握手:客户端向服务器发送一个 SYN(同步)报文段,其中包含客户端选择的初始序列号(seq)。此时客户端进入 SYN_SENT 状态。
- 第二次握手:服务器收到客户端的 SYN 报文段后,向客户端发送一个 SYN/ACK(同步确认)报文段,其中包含服务器选择的初始序列号和对客户端序列号的确认(ack = client_seq + 1)。此时服务器进入 SYN_RCVD 状态。
- 第三次握手:客户端收到服务器的 SYN/ACK 报文段后,向服务器发送一个 ACK(确认)报文段,其中确认号为服务器序列号加一(ack = server_seq + 1)。此时客户端和服务器进入 ESTABLISHED(已建立连接)状态,连接建立成功。
- 四次挥手断开连接:
- 第一次挥手:主动关闭方(通常是客户端)发送一个 FIN(结束)报文段,表示没有数据要发送了,进入 FIN_WAIT_1 状态。
- 第二次挥手:被动关闭方(通常是服务器)收到 FIN 报文段后,发送一个 ACK 报文段进行确认,进入 CLOSE_WAIT 状态。此时主动关闭方进入 FIN_WAIT_2 状态。
- 第三次挥手:被动关闭方处理完剩余数据后,也发送一个 FIN 报文段,表示自己也没有数据要发送了,进入 LAST_ACK 状态。
- 第四次挥手:主动关闭方收到被动关闭方的 FIN 报文段后,发送一个 ACK 报文段进行确认,此时双方都进入 TIME_WAIT 状态。经过一段时间后,连接彻底关闭。
- 滑动窗口机制用于流量控制:
- 发送方和接收方在建立连接时会协商一个窗口大小。发送方在未收到接收方确认之前,最多可以发送窗口大小的数据。
- 接收方在收到数据后,会向发送方发送确认报文,同时根据自己的处理能力调整窗口大小,并在确认报文中告知发送方。
- 发送方根据接收方返回的确认报文和窗口大小调整自己的发送速度,从而实现流量控制,避免发送方发送数据过快导致接收方无法处理。
- 拥塞控制算法:
- 慢开始:初始时,发送方的拥塞窗口大小为 1,每收到一个 ACK 确认,拥塞窗口大小就加倍。当拥塞窗口大小达到慢开始门限(ssthresh)时,进入拥塞避免阶段。
- 拥塞避免:拥塞窗口大小不再加倍,而是每次收到一个 ACK 确认,拥塞窗口大小加 1。这样可以避免拥塞窗口增长过快导致网络拥塞。
- 快重传:当接收方连续收到三个重复的 ACK 确认时,立即重传丢失的报文段,而不必等待超时计时器超时。
- 快恢复:当发送方收到三个重复的 ACK 确认时,将慢开始门限(ssthresh)设置为当前拥塞窗口大小的一半,同时将拥塞窗口大小设置为慢开始门限加 3,然后进入拥塞避免阶段。
- TCP 报文段的格式:
- 源端口号和目的端口号:用于标识发送方和接收方的应用程序。
- 序列号:表示本报文段所发送数据的第一个字节的序号。
- 确认号:期望收到的下一个报文段的序列号。
- 头部长度:指示 TCP 头部的长度,以 32 位字为单位。
- 保留位:目前未使用,留作将来扩展。
- 标志位:包括 URG(紧急指针有效)、ACK(确认号有效)、PSH(推送数据)、RST(重置连接)、SYN(同步序号)、FIN(结束连接)等。
- 窗口大小:用于流量控制。
- 校验和:用于检测 TCP 报文段在传输过程中是否发生错误。
- 紧急指针:当 URG 标志位为 1 时,紧急指针指出紧急数据的最后一个字节的序号。
- 选项(可选):一些额外的功能选项,如最大报文段长度、窗口扩大因子等。
- 数据:上层协议的数据内容。
二、UDP 协议
- 无连接的特性:
- UDP 是一种无连接的协议,在发送数据之前不需要建立连接。这使得 UDP 协议简单、高效,适用于对实时性要求较高、对数据准确性要求相对较低的应用场景,如视频直播、语音通话等。
- 由于没有连接建立和断开的过程,UDP 协议的开销较小,可以快速地发送数据。但是,这也意味着 UDP 协议不能保证数据的可靠传输,可能会出现数据丢失、乱序等问题。
- UDP 报文格式:
- 源端口号和目的端口号:用于标识发送方和接收方的应用程序。
- 长度:指示 UDP 报文的总长度,包括头部和数据部分。
- 校验和:用于检测 UDP 报文在传输过程中是否发生错误。如果校验和为 0,表示不进行校验。
- 数据:上层协议的数据内容。
在网络传输过程中,互联网控制报文协议(ICMP)可能会被用到进行诊断。ICMP 的考点包括差错报告报文(如目的不可达、超时等)和询问报文(如回显请求与回显应答)。
一、ICMP 的差错报告报文
- 目的不可达报文:
- 当路由器无法将数据包转发到目标网络或主机时,会发送目的不可达报文。
- 可能的原因包括网络不可达(目标网络不存在)、主机不可达(目标主机不存在或不可达)、协议不可达(目标主机不支持数据包中指定的上层协议)、端口不可达(目标主机上的应用程序未在指定端口监听)等。
- 目的不可达报文可以帮助发送方了解数据包无法到达目的地的原因,以便采取相应的措施。
- 超时报文:
- 当数据包在网络中传输时,其生存时间(TTL)字段会不断递减。当 TTL 减为 0 时,路由器会丢弃该数据包,并向发送方发送超时报文。
- 超时报文通知发送方数据包在传输过程中超过了最大跳数限制,可能是由于网络故障或路由环路等原因导致。
二、ICMP 的询问报文
- 回显请求与回显应答报文(Ping 命令使用):
- 回显请求报文由发送方发送给目标主机,请求目标主机返回一个回显应答报文。
- 回显应答报文是目标主机对回显请求报文的响应,包含与请求报文相同的数据内容。
- Ping 命令就是利用 ICMP 的回显请求和回显应答报文来测试网络连接的可达性和延迟。发送方发送一系列回显请求报文,目标主机收到后立即返回回显应答报文。通过测量发送请求到收到应答的时间间隔,可以估算网络延迟。如果没有收到应答,则可能表示网络连接存在问题。
ICMP 协议在网络诊断和故障排除中起着重要的作用。它可以帮助网络管理员了解网络的运行状况,发现和解决网络问题。同时,ICMP 报文也可能被恶意利用,例如通过发送大量的 ICMP 报文进行拒绝服务攻击(DoS)。因此,在网络安全方面也需要对 ICMP 报文进行适当的管理和过滤。
如果要下载文件,文件传输协议(FTP)就会大显身手。FTP 涉及到两个连接(控制连接和数据连接)、不同的传输模式(主动模式和被动模式)等考点。
一、FTP 的两个连接
- 控制连接:
- 用于在客户端和服务器之间传输控制信息,如用户登录、文件目录列表请求、文件传输命令等。
- 控制连接在整个 FTP 会话期间保持打开状态。
- 控制连接使用的是 TCP 协议,端口号通常为 21。
- 控制连接上的通信是双向的,客户端和服务器可以通过控制连接发送和接收命令及响应。
- 数据连接:
- 用于在客户端和服务器之间传输实际的文件数据。
- 数据连接在需要传输文件时建立,传输完成后关闭。
- 数据连接也使用 TCP 协议,端口号的选择取决于传输模式。
二、FTP 的传输模式
- 主动模式:
- 在主动模式下,客户端向服务器发送 PORT 命令,通知服务器自己用于接收数据的端口号。
- 服务器收到 PORT 命令后,使用该端口号与客户端建立数据连接,并从服务器向客户端主动发起连接。
- 主动模式的问题在于,如果客户端位于防火墙或 NAT(网络地址转换)设备后面,服务器可能无法主动连接到客户端,因为防火墙可能会阻止外部的主动连接请求。
- 被动模式:
- 在被动模式下,客户端向服务器发送 PASV 命令,请求服务器进入被动模式。
- 服务器收到 PASV 命令后,随机选择一个端口号,并将该端口号通知客户端。
- 客户端使用服务器通知的端口号与服务器建立数据连接,由客户端主动发起连接。
- 被动模式通常更适用于客户端位于防火墙或 NAT 设备后面的情况,因为客户端可以主动发起连接,而防火墙通常允许内部主机发起的外出连接。
FTP 通过控制连接和数据连接的协作,以及不同的传输模式,实现了文件在客户端和服务器之间的可靠传输。在实际应用中,需要根据网络环境和安全需求选择合适的传输模式。同时,FTP 也存在一些安全风险,如用户名和密码以明文传输等问题,因此在使用 FTP 时需要注意安全措施。
收发邮件时,简单邮件传输协议(SMTP)负责发送邮件,邮局协议版本 3(POP3)负责接收邮件。SMTP 的考点包括邮件的发送过程、命令与响应格式等;POP3 的考点有邮件的接收流程以及状态转换。
一、SMTP(简单邮件传输协议)
- 邮件发送过程:
- 客户端(邮件用户代理,如 Outlook、Thunderbird 等)与邮件服务器建立 TCP 连接,通常连接到邮件服务器的 25 端口。
- 客户端向服务器发送 HELO(或 EHLO)命令,用于向服务器标识自己并启动会话。
- 进行身份验证(如果服务器要求),可以使用诸如 PLAIN、LOGIN 或 CRAM-MD5 等认证方式。
- 客户端发送 MAIL FROM 命令,指定发件人的邮箱地址。
- 接着发送 RCPT TO 命令,指定一个或多个收件人的邮箱地址。
- 使用 DATA 命令开始输入邮件内容,包括邮件头(如收件人、主题、发件人等信息)和邮件正文。邮件内容以 “.” 单独一行表示结束。
- 服务器对每个命令返回相应的响应码,如 250 表示命令成功执行。
- 邮件发送完成后,客户端可以发送 QUIT 命令关闭连接。
- 命令与响应格式:
- SMTP 命令通常由四个字母组成,后面可以跟参数。例如,“HELO example.com”,“MAIL FROM: sender@example.com” 等。
- 服务器的响应码由三位数字组成,后面可能跟着一些文本说明。常见的响应码有 220(服务就绪)、250(请求操作成功完成)、550(邮箱不可用或不存在等错误)等。
二、POP3(邮局协议版本 3)
- 邮件接收流程:
- 客户端与邮件服务器建立 TCP 连接,通常连接到邮件服务器的 110 端口。
- 客户端向服务器发送 USER 命令,提供用户名。
- 服务器返回响应码,通常是要求提供密码的提示。
- 客户端发送 PASS 命令,提供密码进行身份验证。
- 如果身份验证成功,服务器返回欢迎信息。
- 客户端可以使用 STAT 命令查询邮箱中的邮件数量和总大小。
- 使用 LIST 命令可以列出邮箱中的所有邮件及其大小。
- 通过 RETR 命令可以下载指定编号的邮件。
- 下载完成后,可以使用 DELE 命令标记邮件为删除状态(实际删除通常在客户端退出 POP3 会话时进行)。
- 最后,客户端发送 QUIT 命令关闭连接。
- 状态转换:
- 初始状态:客户端未与服务器建立连接。
- 授权状态:客户端与服务器建立连接并进行身份验证。在这个状态下,客户端可以执行查询邮件列表、下载邮件等操作。
- 事务处理状态:客户端正在执行具体的邮件操作,如下载、删除邮件等。
- 更新状态:当客户端发送 QUIT 命令后,服务器执行实际的邮件删除操作(如果有标记为删除的邮件),并更新邮箱状态。然后关闭连接,客户端回到初始状态。
在网络接入时,可能会涉及到多种协议。早期的 ALOHA 协议作为随机接入协议的代表,其纯 ALOHA 和时隙 ALOHA 的原理及性能是考点之一。载波侦听多路访问协议(CSMA)考点包括载波侦听的机制、不同的 CSMA 类型(如 1 - 坚持 CSMA、非坚持 CSMA、p - 坚持 CSMA)。带冲突检测的载波侦听多路访问协议(CSMA/CD)的考点有冲突检测的方法、最小帧长的计算等。
一、ALOHA 协议
- 纯 ALOHA 原理:
- 纯 ALOHA 是一种随机接入协议,用户可以在任意时刻发送数据。
- 当多个用户同时发送数据时,就会发生冲突。如果发生冲突,发送方会等待一段随机时间后重新发送数据。
- 纯 ALOHA 的最大吞吐量只有约 18.4%,即当网络负载较低时,系统性能较好,但随着负载增加,冲突概率增大,性能迅速下降。
- 时隙 ALOHA 原理:
- 把时间分成等长的时隙,用户只能在时隙的开始时刻发送数据。
- 这样减少了冲突的可能性,因为只有在同一时隙内有多个用户发送数据时才会发生冲突。
- 时隙 ALOHA 的最大吞吐量约为 36.8%,比纯 ALOHA 有所提高。
二、CSMA(载波侦听多路访问协议)
- 载波侦听机制:
- 在发送数据之前,先侦听信道是否空闲。如果信道空闲,则立即发送数据;如果信道忙,则等待一段时间后再侦听。
- 通过载波侦听,可以减少冲突的发生概率。
- 不同 CSMA 类型:
- 1 - 坚持 CSMA:当信道空闲时,立即发送数据;当信道忙时,持续侦听信道,一旦信道空闲就立即发送数据。这种方式可能会导致冲突概率较高,因为多个站点可能在信道空闲的瞬间同时发送数据。
- 非坚持 CSMA:当信道空闲时,立即发送数据;当信道忙时,随机等待一段时间后再侦听信道。这种方式减少了冲突的可能性,但可能会导致信道利用率降低,因为站点在等待期间信道可能一直空闲。
- p - 坚持 CSMA:当信道空闲时,以概率 p 发送数据,以概率(1 - p)等待下一个时隙再侦听信道;当信道忙时,持续侦听信道,一旦信道空闲就以概率 p 发送数据。这种方式在冲突概率和信道利用率之间进行了平衡。
三、CSMA/CD(带冲突检测的载波侦听多路访问协议)
- 冲突检测方法:
- 在发送数据的同时,继续侦听信道。如果在发送过程中检测到冲突,立即停止发送,并发送一个冲突信号,通知其他站点发生了冲突。
- 冲突检测可以在短时间内发现冲突,从而减少因冲突而浪费的时间。
- 最小帧长的计算:
- 最小帧长的计算公式为:最小帧长 = 数据传输速率 × 冲突检测时间。
- 冲突检测时间是信号在网络中往返传播的时间。为了确保在发送数据的过程中能够检测到冲突,帧的长度必须足够长,使得在发送完一个帧之前,如果发生冲突,冲突信号能够返回发送方。
- 最小帧长的计算对于网络设计和性能优化非常重要,它可以确保网络在高负载情况下也能正常工作。
此外,还可能涉及到数据链路层的考点,如以太网的帧格式、介质访问控制方法(如 MAC 地址的作用、交换机的工作原理等);网络层的路由协议(如 RIP、OSPF、BGP 等的特点和工作过程);传输层的端口号分配等考点。
一、数据链路层考点
- 以太网的帧格式:
- 以太网帧由多个字段组成。包括前导码(用于同步接收方)、帧起始定界符(标志帧的开始)、目的 MAC 地址和源 MAC 地址(用于标识接收和发送设备)、类型 / 长度字段(指示上层协议类型或帧长度)、数据字段(承载上层协议的数据)以及帧校验序列(用于检测帧在传输过程中是否出现错误)。
- 介质访问控制方法:
- MAC 地址的作用:MAC 地址是物理地址,在全球范围内唯一标识一个网络接口。它用于在局域网中寻址和识别设备。MAC 地址由 48 位二进制数组成,通常表示为 12 个十六进制数字,如 00-11-22-33-44-55。MAC 地址在数据链路层中用于将数据帧从源设备传输到目的设备。
- 交换机的工作原理:交换机是一种多端口的网络设备,工作在数据链路层。它根据 MAC 地址表进行数据转发。当交换机收到一个数据帧时,它会检查帧的目的 MAC 地址,并在 MAC 地址表中查找对应的端口。如果找到目的端口,就将帧转发到该端口;如果没有找到,就将帧广播到所有端口(除了接收端口)。交换机通过学习连接到其端口的设备的 MAC 地址,逐渐建立起 MAC 地址表。
二、网络层路由协议考点
- RIP(路由信息协议):
- 特点:是一种基于距离向量的路由协议。使用跳数作为度量,即到达目标网络经过的路由器数量。RIP 协议简单易实现,但只适用于小型网络。它的收敛速度较慢,可能会出现路由环路问题。
- 工作过程:路由器定期向相邻路由器广播自己的路由表。收到路由信息后,根据距离向量算法更新自己的路由表。如果一个路由器发现到达某个目标网络的跳数减少了,它就更新自己的路由表,并将这个更新信息传播给其他路由器。
- OSPF(开放最短路径优先协议):
- 特点:是一种基于链路状态的路由协议。使用带宽、延迟等作为度量,能够适应大型网络。OSPF 协议具有快速收敛、支持分层路由等优点。它通过建立和维护一个链路状态数据库,计算出到各个目标网络的最短路径。
- 工作过程:路由器通过与相邻路由器交换链路状态信息,了解整个网络的拓扑结构。然后,每个路由器使用 Dijkstra 算法计算出到各个目标网络的最短路径,并将这些路径信息放入路由表中。OSPF 协议还支持区域划分,将大型网络分成多个区域,减少路由计算的复杂度。
- BGP(边界网关协议):
- 特点:是一种用于不同自治系统(AS)之间的路由协议。BGP 协议基于策略进行路由选择,而不仅仅是基于度量。它能够处理大规模的互联网路由,并支持多种路由策略,如流量工程、多宿主等。
- 工作过程:BGP 路由器之间建立 TCP 连接,并交换路由信息。路由信息包括目的网络、下一跳路由器以及相关的路由属性。BGP 路由器根据路由属性和本地策略选择最佳路由,并将这些路由信息传播给其他 BGP 路由器。BGP 协议通过一系列的路径属性和决策过程,确保互联网中的路由选择是稳定和高效的。
三、传输层端口号分配考点
- 端口号的作用:端口号用于标识不同的应用程序或服务在传输层的通信端点。它与 IP 地址一起,构成了一个完整的网络通信地址。
- 端口号的分类:
- 知名端口号(0 - 1023):这些端口号被分配给一些常用的服务,如 HTTP(80 端口)、HTTPS(443 端口)、FTP(21 端口)、SSH(22 端口)等。
- 注册端口号(1024 - 49151):这些端口号可以被用户注册的服务使用,但需要向相关机构进行注册。
- 动态 / 私有端口号(49152 - 65535):这些端口号通常由客户端在发起连接时随机选择,用于临时的通信。
- 端口号的分配方式:
- 服务器通常使用知名端口号或注册端口号,以便客户端能够准确地找到它们提供的服务。
- 客户端在发起连接时,通常从动态 / 私有端口号中选择一个未被使用的端口号作为源端口号。