概述

这里提出两个问题。

为什么分层?

早在最初的ARPANET设计时就提出了分层的设计理念。官方一点可以定义"分层"可将庞大而复杂的问题,转化为若干较小的比较易于研究和处理局部问题。

分层的原因

  1. 简化设计与实现:将复杂的网络功能分解为多个层次,每一层专注于特定的功能。这种分层结构使得设计、实现和维护变得更加简单。

  2. 模块化:分层模型允许不同层之间相对独立的开发和修改。改变某一层的实现不会影响到其他层,从而促进了技术的演进和兼容性。

  3. 标准化:分层模型为协议的设计提供了标准框架,便于不同厂商和技术之间的互操作性。各层协议可以由不同的团队或公司开发,符合标准化接口。

  4. 便于调试和维护:分层结构使得问题的定位和解决更加直观。可以逐层测试和调试,缩小故障排查的范围。

  5. 促进协议的开发与创新:由于各层之间的解耦,可以在不影响其他层的情况下,引入新的协议或技术。这鼓励了网络协议的创新与发展。

  6. 提高可扩展性:随着网络需求的增长,可以在特定层中添加新功能或协议,而无需重构整个系统。

  7. 支持不同网络技术:分层模型使得不同类型的网络技术(如无线、光纤、以太网等)能够在同一架构下共存,提升了网络的灵活性。

利用分层设计,网络模型可以更好地应对复杂性,同时提高了灵活性、可维护性和标准化水平。这些优点使得网络技术能够不断发展和适应新的需求。

为什么OSI模型是理论上的网络模型,实际上Liunx系统用的是TCP/IP模型?

OSI 模型是一个理论框架,提供了一个标准化的七层模型,用于理解网络协议的不同功能和相互作用。然而,TCP/IP 模型更符合实际网络的实现,且广泛应用于互联网中。

  1. 层数不同:OSI 模型有七层,而 TCP/IP 模型通常被简化为四层(应用层、传输层、网络层和链路层),更简洁,易于实现。

  2. 开发历史:TCP/IP 模型是为了应对实际网络需求而发展起来的,符合互联网的设计原则,经过实践检验。OSI 模型更多是为了理论讨论而设计,实际应用较少。

  3. 协议实际使用:在 Linux 系统和大多数现代网络中,使用的是 TCP/IP 协议族(如 TCP、UDP、IP),而 OSI 模型的协议没有得到广泛采用。

  4. 灵活性与扩展性:TCP/IP 模型更灵活,支持多种网络技术和协议,能够适应快速变化的网络环境。

因此,虽然 OSI 模型在教学和理论研究中具有重要意义,实际应用中,TCP/IP 模型更具实用性和广泛性。

常见体系结构

OSI体系结构+(五层原理结构)

应用层

解决通过应用进程的交互来实现特定网络应用的问题

表示层

接收信息,数据格式转换

会话层

通信管理,连接管理

传输层

解决进程之间基于网络的通信问题

网络层

解决分组在多个网络上传输(路由)的问题

数据链路层

解决分组在一个网络(或一段链路)上传输的问题

物理层

解决使用何种信号来传输比特的问题

TCP/IP体系结构

应用层

HTTPS HTTP SMTP DNS RTP

传输层

TCP UDP

网际层

IP

网络接口层

网络接口1 网络接口2 网络接口3

应用程序通信

流程图

浏览器流程

  1. 应用层按照 HTTP 协议规定,构建 HTTP请求报文。应用层将 HTTP 请求报文交给运输层处理。

  2. 运输层给 HTTP 请求报文添加 TCP 首部(区分应用进程,实现可靠传输),生成 TCP 报文段。运输层将TCP报应段交付给网络层处理。

  3. 网络层给 TCP 报文添加 IP 首部(IP数据报可以传输,被路由器转发),网络层将 IP 数据报交付给数据链路层处理。

  4. 数据链路层给 IP 数据报添加首部(让帧在链路或网络上传输,被目的主机接受)和尾部(让目的主机检查接收的帧是否有误码)封装成帧。数据链路层将帧交付给物理层。

  5. 物理层将帧看作比特流,给比特流添加前导码(让目的主机做好接收帧准备)。物理层将含有前导码比特流转换成信号发送给传输媒体。

路由器流程

  1. 物理层将信号转换为比特流,去除前导码,交付给数据链路层。实际上交付的是帧。

  2. 数据链路层将帧的首部尾部去掉,交付给网络层。实际上交付的是 IP 数据报。

  3. 网络层解析 IP 数据报首部,提取目的网络地址,查找自身路由表,确定转发端口。交付数据给数据链路层。

  4. 数据链路层将 IP 数据报添加一个首部,尾部封装成帧,将帧交付给物理层。

  5. 物理层给比特流添加前导码,转换成信号发送给传输媒体。

Web服务器又是对比特流的层层解码。等应用层对 HTTP 请求报文进行解析,然后发送 HTTP 响应报文,之后的流程和上述流程类似,HTTP 响应报文需要在Web服务器层层封装。