计算机网络之补充篇

大家好,这里是编程Cookbook。本文是计算机网络的补充内容,包括网络模型、DNS和从输入URL到网页呈现的过程等。



网络模型

计算机网络中常见的网络模型包括 TCP/IP 四层模型OSI 七层模型计算机网络五层模型。它们用于描述网络通信的不同层次及其职责。

TCP/IP 模型与 OSI 参考模型的层次对应关系

  • TCP/IP 四层模型:是最常用的实际网络通信模型。
  • OSI 七层模型:是理论上的标准模型,提供更详细的划分。
  • 五层模型:是对 TCP/IP 模型的改进版,加入物理层,使其更贴合实际。

1. TCP/IP 四层模型

TCP/IP 是实际应用最广泛的网络模型,分为 4 层

层次作用常见协议
应用层负责进程间通信,提供特定应用的网络服务HTTP、HTTPS、FTP、SMTP、POP3、DNS、Telnet、SSH、SNMP
传输层端到端数据传输,提供可靠(TCP)或不可靠(UDP)传输TCP、UDP
网络层负责寻址和路由,决定数据包如何到达目标地址IP(IPv4、IPv6)、ICMP、ARP、RARP、NAT、BGP、OSPF
网络接口层负责数据帧的封装、传输和物理介质访问以太网(Ethernet)、Wi-Fi(802.11)、PPP、HDLC、MAC

2. OSI 七层模型

OSI 模型是理论上的标准模型,分为 7 层

层次作用常见协议
应用层直接面向用户,提供应用服务HTTP、HTTPS、FTP、SMTP、POP3、DNS
表示层负责数据格式转换、加密、解密JPEG、GIF、MP3、TLS、ASCII、SSL
会话层负责建立、管理和终止会话NetBIOS、RPC、PPTP、SQL 会话管理
传输层提供端到端通信、流量控制、可靠传输TCP、UDP
网络层负责 IP 地址寻址和路由选择IP(IPv4、IPv6)、ICMP、ARP、NAT、BGP
数据链路层负责数据帧的传输、介质访问控制Ethernet(以太网)、PPP、HDLC、MAC
物理层负责物理介质传输比特流光纤、双绞线、电缆、无线电波

3. 计算机网络五层模型

计算机网络通常使用 五层协议栈,是 TCP/IP 四层模型的改进版(加入物理层):

层次作用常见协议
应用层提供网络应用服务HTTP、FTP、SMTP、DNS
传输层端到端数据传输,提供可靠/不可靠传输TCP、UDP
网络层负责寻址和路由IP、ICMP、ARP
网络接口层负责数据帧的封装、传输以太网、Wi-Fi、PPP、MAC
物理层负责物理信号传输光纤、双绞线、电缆、无线信号

其他

从输入URL到网页呈现的过程

当用户在浏览器地址栏输入网址(如 https://www.example.com),到网页完全显示,整个过程大致经历如下步骤:

第一阶段:建立连接

  1. DNS 解析:浏览器向 DNS 服务器请求解析域名,获取服务器的 IP 地址。
  2. 建立 TCP 连接:浏览器与服务器建立 TCP 连接(默认 HTTP 端口 80,HTTPS 端口 443)。

第二阶段:请求与响应

  1. 发送 HTTP 请求:浏览器向服务器发送 HTTP 请求(如 GET /index.html)。
  2. 服务器处理请求:服务器解析请求,查找所需资源。
  3. 服务器响应请求:服务器返回 HTML 文件给浏览器。

第三阶段:页面渲染

  1. 浏览器展示 HTML:浏览器解析 HTML,构建 DOM 树并渲染页面。
  2. 加载其他资源:浏览器发送额外请求获取 CSS、JS、图片等资源,完成页面渲染。

例子:用户访问清华大学网站的具体过程

  1. 浏览器向 DNS 请求解析 www.tsinghua.edu.cn 的 IP 地址。
  2. DNS 解析出清华大学服务器的 IP 地址。
  3. 浏览器与服务器建立 TCP 连接(默认端口 80)。
  4. 浏览器发送 HTTP 请求:GET /chn/index.html
  5. 服务器返回 index.html 文件给浏览器。
  6. 释放 TCP 连接。
  7. 浏览器解析 index.html,并显示网页内容。

DNS(域名系统)

DNS(Domain Name System,域名系统)用于将 域名(如www.example.com)解析为 IP 地址(如 192.168.1.1),使用户无需记住复杂的 IP 地址即可访问网站。域名解析:指把 域名映射成为IP地址或把IP地址映射成域名 的过程。前者称为正向解析,后者称为反向解析。

域名服务器分类

域名服务器分为四类:

  • 本地域名服务器
  • 根域名服务器
  • 顶级域名服务器
  • 权限域名服务器

域名解析方式

域名解析有两种方式,递归查询递归与迭代相结合的查询

两种域名解析方式工作原理

递归查询(几乎不用)
  • 特点:本地域名服务器(LDNS)只向根域名服务器查询一次,后续查询由其他服务器递归完成。
  • 过程
    1. 本地主机向本地域名服务器(LDNS)发起查询。
    2. 本地域名服务器向根域名服务器查询。
    3. 根域名服务器递归查询其他服务器,直到获取最终 IP 地址。
    4. 根域名服务器返回解析结果给本地域名服务器。
    5. 本地域名服务器返回结果给本地主机。
  • 缺点:根域名服务器负载过大,几乎不使用。

递归与迭代相结合的查询(常用)
  • 特点

    • 主机 → 本地域名服务器:递归查询
    • 本地域名服务器 → 其他服务器:迭代查询
  • 过程

    1. 递归查询
      • 本地主机向本地域名服务器(LDNS)查询域名 IP。
      • 如果本地域名服务器没有缓存该 IP,则继续向根域名服务器查询,而不是让本地主机自己查询。
    2. 迭代查询
      • 根域名服务器返回可查询的顶级域名服务器(TLD 服务器)地址,而不是直接返回 IP。
      • 本地域名服务器继续向 TLD 服务器查询。
      • TLD 服务器返回权限域名服务器的地址,本地域名服务器继续查询。
      • 权限域名服务器最终返回所查询域名的 IP 地址。
    3. 返回结果
      • 本地域名服务器获得 IP 后,返回给本地主机,完成解析。

对比
查询方式过程优缺点
递归查询LDNS 只查一次,剩下的查询由其他服务器完成负载大,几乎不用
递归 + 迭代主机 → LDNS 递归,LDNS → 其他服务器 迭代负载分散,实际使用

常用方式是递归与迭代结合的查询,既减少了客户端查询负担,又分散了服务器压力。

传输层协议

DNS 解析默认使用 UDP,因为速度快、消耗低、支持高并发。但在某些特殊情况下,会自动切换到 TCP 以保证数据完整性。

传输协议特点适用场景
UDP快速,无连接,低资源消耗绝大多数 DNS 查询
TCP可靠,保证数据完整解析数据过大、区域传输、UDP 受限时
UDP 不可靠为什么 DNS 仍然使用 UDP?

1. UDP 的丢包率低,DNS 自带容错机制

  • DNS 查询的数据包很小(通常 ≤ 512 字节),数据量小的 UDP 包 丢失率很低,且不容易被网络拥塞影响。
  • 本地域名服务器会重试查询,如果没有收到响应,会自动 重新发送查询请求,直到获得正确的 IP 地址(通常是 2~3 次重试,超时则返回错误)。

2. 可靠性由应用层保证,而不是传输层

  • 即使 UDP 可能丢包,DNS 也有重试机制,相当于在应用层实现了可靠性。
  • 如果 DNS 解析失败(超时或未解析到 IP),浏览器或操作系统会重新请求另一个 DNS 服务器

3. DNS 解析速度优先,不要求 100% 可靠

  • DNS 查询是读多写少的操作,大部分查询都能在本地域名服务器的缓存中命中,减少外部查询次数。
  • 即使丢失一次查询,也可以迅速重试,不影响用户体验。相比 TCP 建立连接的开销,UDP 仍然更高效。

CDN(内容分发网络)

CDN(Content Delivery Network,内容分发网络)是一种通过分布在多个地理位置的服务器集群来加速内容传输的网络架构。CDN的目的是通过将内容(如网页、图片、视频等)缓存到距离用户更近的服务器上,从而提高用户的访问速度,减轻源服务器的压力,降低延迟,提升网站的可靠性和可扩展性。

CDN的工作原理通常包括以下几个步骤:

  1. 缓存内容:CDN会将常用的内容缓存到多个边缘节点(即分布式的服务器)上,这些节点通常会部署在离用户地理位置较近的地方
  2. 请求路由:当用户请求某个内容时,CDN会根据用户的地理位置、网络状况等因素,自动选择离用户最近的缓存节点来提供内容,从而减少数据传输的延迟。
  3. 源站回源:如果用户请求的内容在CDN的边缘节点中不存在或已过期,CDN会向源服务器请求内容并缓存下来,以备后续使用。

CDN广泛应用于网站加速、视频流媒体、电子商务、在线游戏等领域,能够有效提升网站的性能,尤其在全球范围内的内容分发和大流量的情况下,具有显著的优势。

IP 地址 VS MAC 地址

特性IP 地址MAC 地址
层次网络层数据链路层
作用定位和识别设备,确保数据能在不同网络之间传输唯一标识网络设备,在局域网内进行通信
格式IPv4:四个十进制数,IPv6:八组十六进制数六组十六进制数,通常以冒号分隔
是否可更改可更改(静态或动态分配)不可更改,除非伪造
作用域跨越多个网络(如广域网、局域网)仅限局域网
分配方式静态或动态分配硬件制造时分配

解释:

  • 局域网(LAN):范围小、速度快、延迟低,适用于单一地点的设备连接,如家庭或办公室。
  • 广域网(WAN):范围广、速度较慢、延迟高,适用于连接地理位置不同的局域网,如跨城市、跨国的企业网络或互联网。

IPv4 vs IPv6

特性IPv4IPv6
地址长度32位(约43亿个地址)128位(约340万亿个地址)
地址表示四个十进制数,格式为x.x.x.x八组16进制数,格式为xxxx:xxxx:xxxx:xxxx
地址类型单播、广播、多播单播、任播、组播
路由表需要较多的路由表项,复杂更简化的路由机制
自动配置依赖DHCP无状态自动配置(SLAAC)
NAT需要NAT(地址转换)不需要NAT,使用公网地址
安全性依赖IPsec内建IPsec,支持更好的安全功能
传输效率由于头部复杂,相对较低简化的头部结构,传输效率较高

IPv4和IPv6在功能上存在明显差异,IPv6的设计更加现代化,支持更大的地址空间、自动配置和更高效的路由管理。虽然IPv6可以解决IPv4的一些问题,但由于过渡期的存在,许多网络仍然同时运行IPv4和IPv6。

ARP VS RARP

特性ARP(地址解析协议)RARP(反向地址解析协议)
功能将IP地址映射为MAC地址将MAC地址映射为IP地址
作用用于设备在局域网中根据IP地址查找目标设备的MAC地址用于设备根据MAC地址获取其IP地址
使用场景设备通过ARP查询目标设备的MAC地址,以便进行数据通信设备通过RARP获取自己的IP地址(传统上使用在无操作系统的设备上)
协议类型网络层(Layer 3)与数据链路层(Layer 2)之间的协议数据链路层(Layer 2)与网络层(Layer 3)之间的协议
应用实例局域网内计算机通过ARP发送数据包给其他设备传统的无操作系统设备(如硬件路由器)通过RARP获得IP
当前使用情况广泛使用,作为TCP/IP协议栈的重要组成部分现在已经被DHCP协议所取代,几乎不再使用
  • ARP主要用于通过IP地址获取对应的MAC地址,广泛应用于局域网内设备间的通信。
  • RARP则是通过MAC地址来查找对应的IP地址,最初用于一些无操作系统设备的自动配置,但由于它的局限性,现在已经基本被DHCP(动态主机配置协议)取代,后者提供了更灵活和更强大的自动配置功能。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值