Contents
Open Contents
网络分层模型
网络分层模型是一种将复杂网络通信过程划分为多个更小、更易于管理层次的框架。其中,最为著名和广泛引用的便是开放式系统互连(Open Systems Interconnection, OSI)参考模型。该模型由国际标准化组织(ISO)于1984年提出,旨在为不同计算机系统之间的通信提供一个标准的、通用的框架。
OSI 七层模型是什么?每一层的作用是什么?
- 物理层 (Physical Layer):作为OSI模型的最底层,物理层负责在物理媒介上传输原始的比特流(0和1)。它定义了与传输介质相关的物理和电气规范。
- 数据链路层 (Data Link Layer):数据链路层负责在相邻网络节点之间可靠地传输数据。它将来自网络层的分组(Packet)封装成帧(Frame),并处理物理寻址(MAC地址)。
- 网络层 (Network Layer):网络层负责在不同网络之间进行数据包的路由和转发,实现端到端的逻辑地址寻址和最佳路径选择。
- 传输层 (Transport Layer):传输层为不同主机上的应用程序之间提供端到端的通信服务。它负责数据的分段、传输、重组,并提供可靠或不可靠的数据传输。
- 会话层 (Session Layer):会话层负责建立、管理和终止不同主机上应用程序之间的会话(Session)。
- 表示层 (Presentation Layer):表示层确保一个系统的应用层所发送的信息可以被另一个系统的应用层理解。它主要处理数据的格式和表示问题。
- 应用层 (Application Layer):作为OSI模型的最高层,应用层为用户和应用程序提供网络服务。它直接与用户交互,提供常见的网络应用功能。
TCP/IP 五层模型是什么?每一层的作用是什么?
TCP/IP 五层模型是在传统四层模型基础上,将网络接口层进一步细分为数据链路层和物理层,使其更接近OSI七层模型的结构,便于学习和理解。
- 应用层 (Application Layer):TCP/IP五层模型的最高层,负责处理特定的应用程序细节,为用户提供网络服务。这一层对应于OSI模型的应用层、表示层和会话层。
- 传输层 (Transport Layer):传输层负责在源主机和目标主机的应用程序之间提供端到端的通信。它确保数据的可靠传输或快速传输。这一层对应于OSI模型的传输层。
- 网络层 (Internet Layer):主要任务是在源主机和目标主机之间进行数据包的路由和转发。它负责处理数据包的寻址,使其能够在不同网络之间传输。这一层对应于OSI模型的网络层。
- 数据链路层 (Data Link Layer):数据链路层负责在相邻网络节点之间可靠地传输数据。它将来自网络层的分组封装成帧,并处理物理寻址(MAC地址)。这一层对应于OSI模型的数据链路层。
- 物理层 (Physical Layer):物理层负责在物理媒介上传输原始的比特流(0和1)。它定义了与传输介质相关的物理和电气规范。这一层对应于OSI模型的物理层。
TCP/IP 四层模型是什么?每一层的作用是什么?
TCP/IP 四层模型是目前被广泛采用的一种模型,它比OSI七层模型更为简化和实用。
- 应用层 (Application Layer): TCP/IP模型的最高层,它负责处理特定的应用程序细节,为用户提供网络服务。这一层对应于OSI模型的应用层、表示层和会话层。
- 传输层 (Transport Layer):传输层负责在源主机和目标主机的应用程序之间提供端到端的通信。它确保数据的可靠传输或快速传输。这一层对应于OSI模型的传输层。
- 网络层 (Internet Layer):主要任务是在源主机和目标主机之间进行数据包的路由和转发。它负责处理数据包的寻址,使其能够在不同网络之间传输。这一层对应于OSI模型的网络层。
- 网络接口层 (Network Interface Layer):网络接口层是TCP/IP模型的最低层,它负责处理与物理网络相关的所有事务,包括在物理介质上发送和接收数据。这一层对应于OSI模型的数据链路层和物理层。
为什么要把网络分层?
- 各层之间相互独立:各层之间相互独立,各层之间不需要关心其他层是如何实现的,只需要知道自己如何调用下层提供好的功能就可以了(可以简单理解为接口调用)。这个和我们对开发时系统进行分层是一个道理。
- 提高了灵活性和可替换性:每一层都可以使用最适合的技术来实现,你只需要保证你提供的功能以及暴露的接口的规则没有改变就行了。并且,每一层都可以根据需要进行修改或替换,而不会影响到整个网络的结构。这个和我们平时开发系统的时候要求的高内聚、低耦合的原则也是可以对应上的。
- 大问题化小:分层可以将复杂的网络问题分解为许多比较小的、界线比较清晰简单的小问题来处理和解决。这样使得复杂的计算机网络系统变得易于设计,实现和标准化。 这个和我们平时开发的时候,一般会将系统功能分解,然后将复杂的问题分解为容易理解的更小的问题是相对应的,这些较小的问题具有更好的边界(目标和接口)定义。
常见网络协议
应用层有哪些常见协议?
| 协议 | 英文全称 | 主要作用 | 默认端口 | 传输层协议 |
|---|---|---|---|---|
| HTTP | HyperText Transfer Protocol | 网页浏览 | 80 | TCP |
| HTTPS | HTTP Secure | 加密的网页浏览 | 443 | TCP |
| FTP | File Transfer Protocol | 文件传输 | 20, 21 | TCP |
| SFTP | SSH File Transfer Protocol | 安全的文件传输 | 22 | TCP |
| SMTP | Simple Mail Transfer Protocol | 发送邮件 | 25, 587, 465 | TCP |
| POP3 | Post Office Protocol v3 | 接收邮件(下载模式) | 110, 995 | TCP |
| IMAP | Internet Message Access Protocol | 接收邮件(同步模式) | 143, 993 | TCP |
| DNS | Domain Name System | 域名到IP地址解析 | 53 | UDP / TCP |
| SSH | Secure Shell | 安全的远程命令行访问 | 22 | TCP |
| Telnet | Teletype Network | 远程命令行访问(不安全) | 23 | TCP |
| RDP | Remote Desktop Protocol | 远程桌面连接 | 3389 | TCP |
| DHCP | Dynamic Host Configuration Protocol | 自动分配IP地址 | 67, 68 | UDP |
| SNMP | Simple Network Management Protocol | 网络设备管理 | 161, 162 | UDP |
| NTP | Network Time Protocol | 网络时间同步 | 123 | UDP |
传输层有哪些常见协议?
| 协议 | 英文全称 | 主要特性 | 常见场景 |
|---|---|---|---|
| TCP | Transmission Control Protocol | 可靠、面向连接;字节流、拥塞控制、流量控制、重传 | Web、邮件、文件传输等需要可靠性的场景 |
| UDP | User Datagram Protocol | 不可靠、无连接;面向报文、低时延、无拥塞控制 | 音视频、实时通信、DNS 等对时延敏感场景 |
网络层有哪些常见协议?
| 协议 | 英文全称 | 主要作用 | 关键特性 |
|---|---|---|---|
| IPv4 | Internet Protocol version 4 | 逻辑寻址与路由转发 | 32 位地址、分片、广泛部署 |
| IPv6 | Internet Protocol version 6 | 逻辑寻址与路由转发 | 128 位地址、更大地址空间、无状态自动配置、简化首部 |
| ICMP | Internet Control Message Protocol | 差错报告与网络诊断 | ping、traceroute 所依赖 |
| IGMP | Internet Group Management Protocol | IPv4 组播成员管理 | 与路由器协作进行组播 |
| MLD | Multicast Listener Discovery | IPv6 组播成员管理 | IGMP 的 IPv6 等价物 |
| IPsec | Internet Protocol Security | 在 IP 层提供认证与加密 | AH/ESP,站点到站点或远程访问 VPN |
| RIP | Routing Information Protocol | 动态路由协议(IGP) | 距离矢量,度量为跳数,收敛慢,适用于小型网络 |
| OSPF | Open Shortest Path First | 动态路由协议(IGP) | 链路状态,Dijkstra,区域化设计,企业网常用 |
| BGP | Border Gateway Protocol | 域间路由协议(EGP) | 路径矢量,互联网骨干的关键协议 |
访问网页的全流程
简单的完整流程:
- 在浏览器中输入指定网页的 URL。
- 浏览器通过 DNS 协议,获取域名对应的 IP 地址。
- 浏览器根据 IP 地址和端口号,向目标服务器发起一个 TCP 连接请求。
- 浏览器在 TCP 连接上,向服务器发送一个 HTTP 请求报文,请求获取网页的内容。
- 服务器收到 HTTP 请求报文后,处理请求,并返回 HTTP 响应报文给浏览器。
- 浏览器收到 HTTP 响应报文后,解析响应体中的 HTML 代码,渲染网页的结构和样式,同时根据 HTML 中的其他资源的 URL(如图片、CSS、JS 等),再次发起 HTTP 请求,获取这些资源的内容,直到网页完全加载显示。
- 浏览器在不需要和服务器通信时,可以主动关闭 TCP 连接,或者等待服务器的关闭请求。