OSI 和 TCP/IP 网络分层模型详解(基础)
OSI 七层模型
OSI 七层模型是国际标准化组织提出的网络分层模型,每一层都承担着特定的功能,层与层之间有明确的职责分工。模型包括以下七层:
- 物理层(Physical Layer):负责传输原始的比特流,定义了硬件设备的传输介质和信号特性。
- 数据链路层(Data Link Layer):负责在物理链路上可靠地传输数据帧,并处理物理地址(MAC 地址)和错误检测。
- 网络层(Network Layer):负责数据包的路由和寻址,确保数据能在不同网络之间传输。主要协议有 IP 协议。
- 传输层(Transport Layer):负责端到端的可靠数据传输,常见协议有 TCP 和 UDP。
- 会话层(Session Layer):管理和控制应用程序之间的会话,确保会话的正确建立、维护和终止。
- 表示层(Presentation Layer):负责数据的格式化、加密和解密,以便应用层理解。
- 应用层(Application Layer):为用户提供直接的应用服务,如 HTTP、FTP、SMTP 等。
OSI 模型与 TCP/IP 模型
虽然 OSI 七层模型理论上提供了清晰的分层结构,但它在实际应用中存在一些问题:
- 复杂性:协议实现过于复杂且效率较低。
- 缺乏实际经验:标准制定者缺乏实际应用经验,导致标准与市场需求脱节。
- 发展缓慢:OSI 标准的制定周期较长,未能及时满足技术和市场的需求。
- 层次划分不合理:有些功能重复出现在多个层次,增加了实现的复杂度。
由于这些原因,OSI 模型未能超越 TCP/IP 四层模型,后者更简单且高效,最终成为了实际应用中广泛使用的模型。尽管如此,OSI 模型为网络通信提供了重要的理论基础,仍然值得学习和研究。
TCP/IP 四层模型
TCP/IP 四层模型是简化版的网络分层模型,是实际互联网通信的基础。它由以下四个层次组成:
- 应用层:对应 OSI 模型的应用层、表示层和会话层,负责应用程序的通信协议,如 HTTP、FTP、SMTP 等。
- 传输层:对应 OSI 模型的传输层,负责端到端的可靠数据传输,主要协议有 TCP 和 UDP。
- 网络层:对应 OSI 模型的网络层,负责数据包的路由和寻址,主要协议为 IP。
- 网络接口层:对应 OSI 模型的物理层和数据链路层,负责数据的物理传输和链路管理,涉及 MAC 地址和物理硬件的操作。
TCP/IP 与 OSI 的对应关系
尽管 TCP/IP 四层模型和 OSI 七层模型有不同的划分,但可以大致进行对应:
- 应用层:包含 OSI 的应用层、表示层和会话层的功能。
- 传输层:对应 OSI 的传输层。
- 网络层:对应 OSI 的网络层。
- 网络接口层:包含了 OSI 的物理层和数据链路层的功能。
TCP/IP 四层模型的优势
与 OSI 七层模型相比,TCP/IP 模型结构简单且高效,适用于现代互联网的实际需求。
应用层(Application Layer)
应用层位于传输层之上,负责提供终端设备之间信息交换的服务。它定义了信息交换的格式,并将消息交给传输层进行实际传输。应用层交互的数据单元被称为“报文”。
应用层协议
应用层协议定义了网络通信规则,并针对不同的网络应用有不同的协议。常见的应用层协议包括:
HTTP(Hypertext Transfer Protocol,超文本传输协议):基于 TCP 协议,用于 Web 浏览器与 Web 服务器之间的通信,传输超文本和多媒体内容。
SMTP(Simple Mail Transfer Protocol,简单邮件发送协议):基于 TCP 协议,专门用于发送电子邮件,但不用于接收邮件,接收邮件使用 POP3 或 IMAP 协议。
POP3/IMAP(邮件接收协议):基于 TCP 协议,用于接收电子邮件。IMAP 协议功能和性能优于 POP3,支持多个设备间同步邮件状态和更多高级功能。
FTP(File Transfer Protocol,文件传输协议):基于 TCP 协议,用于在计算机间传输文件。FTP 不加密数据,存在安全风险,建议使用 SFTP 进行敏感数据的传输。
Telnet(远程登陆协议):基于 TCP 协议,用于远程登录到其他服务器,但由于数据明文传输,存在安全隐患。现在通常使用 SSH 协议替代。
SSH(Secure Shell Protocol,安全外壳协议):基于 TCP 协议,通过加密和认证机制提供安全的远程访问和文件传输服务。
RTP(Real-time Transport Protocol,实时传输协议):通常基于 UDP 协议,提供端到端的实时数据传输功能,主要用于音频、视频流等实时应用。
DNS(Domain Name System,域名系统):基于 UDP 协议,解决域名到 IP 地址的映射问题。
这些协议共同支持着现代互联网的各种服务,从网页浏览到邮件传输,再到文件共享和远程登录等。
关于这些协议的详细介绍请看 应用层常见协议总结(应用层) 这篇文章。
传输层(Transport Layer)
传输层的主要任务是为两台终端设备之间的进程提供通用的数据传输服务。应用进程可以通过传输层的服务传送应用层的报文。传输层的服务是通用的,即可以支持多种应用,而不仅仅是针对某一个特定的网络应用。
传输层常见协议
- TCP(Transmission Control Protocol,传输控制协议):
- 提供 面向连接 的、可靠 的数据传输服务。
- 在数据传输前需要建立连接,并确保数据的完整性和顺序性。丢失的数据会被重新传输,确保接收方能够按正确的顺序接收到所有数据。
- UDP(User Datagram Protocol,用户数据协议):
- 提供 无连接 的、尽最大努力 的数据传输服务。
- 不保证数据传输的可靠性,也不保证数据的顺序或丢失重传。适用于对速度要求高、对可靠性要求低的场景,例如视频流和语音通信。
这些协议根据不同应用的需求提供了不同的传输方式,TCP 适合需要高可靠性的场景,而 UDP 适合对速度要求高的场景。
网络层(Network Layer)
网络层负责为不同主机提供通信服务,尤其是跨越不同网络之间的通信。它将传输层传来的报文段封装成数据包进行传输,并负责选择适当的路由确保数据包能够到达目的地。
在 TCP/IP 模型中,网络层使用 IP 协议,因此这些数据包也称为 IP 数据报。
网络层的主要任务:
- 分组封装与传输:网络层将来自传输层的报文段封装成数据包进行传送。
- 路由选择:网络层通过路由器(Router)选择最合适的路径,确保数据从源主机到达目的主机。
需要特别注意的是,“用户数据报 UDP” 属于传输层,而 “IP 数据报” 属于网络层,它们是不同层次的概念。
网络层常见协议
IP(Internet Protocol,网际协议):
- 定义数据包的格式、对数据包进行路由和寻址,确保数据能够跨越网络到达目的地。
- 目前主要有 IPv4 和 IPv6 两种版本,其中 IPv6 被提议取代 IPv4。
ARP(Address Resolution Protocol,地址解析协议):
- 解决 IP 地址到 MAC 地址的转换问题,确保 IP 数据报能够通过物理网络传输到正确的设备。
ICMP(Internet Control Message Protocol,互联网控制报文协议):
- 用于传输网络状态和错误消息,常用于网络诊断和故障排除。例如,Ping 命令使用 ICMP 协议测试网络连通性。
NAT(Network Address Translation,网络地址转换协议):
- 用于将私有网络(LAN)内部的多个 IP 地址转换为公网 IP 地址,或进行反向转换,常见于家庭路由器和企业网络中的上网共享。
OSPF(Open Shortest Path First,开放式最短路径优先):
- 一种内部网关协议,广泛使用的动态路由协议,通过链路状态算法选择最佳路径,考虑带宽、延迟等因素。
RIP(Routing Information Protocol,路由信息协议):
- 一种基于距离向量算法的动态路由协议,通过跳数作为度量标准选择最佳路径,适用于小型和简单的网络。
BGP(Border Gateway Protocol,边界网关协议):
- 用于在不同自治系统之间交换网络层的可达性信息,常用于互联网的核心路由选择,具有很高的灵活性和扩展性。
网络层的这些协议共同确保了数据在不同网络之间能够顺利传递,并且能够选择最优的路径进行传输。
网络接口层(Network Interface Layer)
网络接口层可以看作是 数据链路层 和 物理层 的结合,它负责在物理网络中传输数据,同时为网络层提供必要的支持。
功能组成
数据链路层(Data Link Layer):
- 负责将网络层交下来的 IP 数据报封装成帧,并在两个相邻节点间传输。
- 每一帧包括数据部分和必要的控制信息(如同步信息、地址信息和差错控制)。
- 数据链路层确保在一个链路上传输数据的可靠性。
物理层(Physical Layer):
- 实现相邻计算机节点之间比特流的透明传输。
- 物理层屏蔽了具体的传输介质和物理设备差异,使上层协议不必关心硬件细节。
网络接口层的主要协议和功能
以太网(Ethernet):
- 一种广泛使用的局域网协议,定义了物理层和数据链路层的标准。
Wi-Fi(无线局域网协议):
- 无线网络中的常用协议,支持设备在无线环境中的数据传输。
PPP(Point-to-Point Protocol,点对点协议):
- 一种面向串行链路的通信协议,主要用于两点之间的直接连接,例如拨号网络。
MAC(Media Access Control,介质访问控制):
- 定义了如何在共享网络介质上访问和发送数据,通常用在以太网和 Wi-Fi 等技术中。
总结
网络接口层是整个网络通信的基础层,确保数据在物理网络中的可靠传输。它通过封装和透明传输,为上层协议提供了稳定的通信接口,同时支持不同的物理介质和硬件设备。
简单总结一下每一层包含的协议和核心技术:
应用层协议 :
- HTTP(Hypertext Transfer Protocol,超文本传输协议)
- SMTP(Simple Mail Transfer Protocol,简单邮件发送协议)
- POP3/IMAP(邮件接收协议)
- FTP(File Transfer Protocol,文件传输协议)
- Telnet(远程登陆协议)
- SSH(Secure Shell Protocol,安全的网络传输协议)
- RTP(Real-time Transport Protocol,实时传输协议)
- DNS(Domain Name System,域名管理系统)
- ……
传输层协议 :
- TCP 协议
- 报文段结构
- 可靠数据传输
- 流量控制
- 拥塞控制
- UDP 协议
- 报文段结构
- RDT(可靠数据传输协议)
网络层协议 :
- IP(Internet Protocol,网际协议)
- ARP(Address Resolution Protocol,地址解析协议)
- ICMP 协议(控制报文协议,用于发送控制消息)
- NAT(Network Address Translation,网络地址转换协议)
- OSPF(Open Shortest Path First,开放式最短路径优先)
- RIP(Routing Information Protocol,路由信息协议)
- BGP(Border Gateway Protocol,边界网关协议)
- ……
网络接口层 :
- 差错检测技术
- 多路访问协议(信道复用技术)
- CSMA/CD 协议
- MAC 协议
- 以太网技术
- ……
网络分层的原因
网络分层的主要目的是简化网络设计、实现和管理,同时增强灵活性和可扩展性。具体原因包括:
1. 简化网络设计和实现
- 模块化:通过将网络通信功能划分为不同的层,每一层都负责特定的功能,减少了设计的复杂度。每一层的实现可以独立于其他层进行改进和优化。
- 层次清晰:每一层都只关心自己的一部分功能,使得整个网络体系结构更加清晰,便于理解和实现。
2. 灵活性和可扩展性
- 独立性:不同层之间通过接口进行交互,改变某一层的实现不会影响其他层。例如,物理层的变化(如从铜缆换成光纤)不会影响到网络层和传输层的工作。
- 协议独立性:每一层可以独立选择不同的协议实现。例如,在传输层可以使用 TCP 协议,也可以使用 UDP 协议,这样就能根据应用需求选择最合适的协议。
3. 易于故障诊断与管理
- 分层管理:不同层次的功能清晰,便于网络管理员定位问题。例如,遇到网络连接问题时,可以先检查物理层,再检查数据链路层,逐层排查问题源头。
- 分层调试:开发和测试可以在每一层上独立进行,层间接口清晰,调试和排查更容易。
4. 标准化与互操作性
- 统一接口:分层的结构使得每一层之间的接口标准化,这样不同厂商的设备可以在相同的标准协议下互相工作,确保网络中不同设备之间的兼容性。
- 不同技术的融合:不同层次的协议可以支持不同的技术,保证了网络的兼容性和扩展性。例如,可以在网络层使用 IPv4 和 IPv6,在链路层使用以太网或 Wi-Fi。
5. 增强安全性
- 分层防护:网络分层使得不同的安全机制可以在不同的层次实施。例如,可以在传输层使用 SSL/TLS 协议加密数据,在数据链路层使用 MAC 地址过滤来提高网络安全。
6. 支持多种应用
- 多样化应用支持:通过定义不同的层级,网络可以支持各种不同的应用和服务,如网页浏览、电子邮件、视频会议等。每个应用只需关注应用层的功能,其它层次的工作由网络协议自动处理。
7. 简化网络的演进
- 协议演进:随着技术发展,某些层的协议可以独立演进而不会影响整个网络系统。例如,随着互联网的普及,IPv6 在网络层逐渐取代了 IPv4,但应用层和传输层协议保持不变。
总结
网络分层的设计提供了高度的灵活性、可扩展性和简化的管理,允许协议独立演进并增强了不同设备和技术间的互操作性。通过分层,网络变得更加清晰、易于维护,并能够更好地应对复杂的网络需求。