计算机网络:计算机网络体系结构 —— OSI 模型 与 TCP/IP 模型

时间:2024-10-03 10:19:31

文章目录

    • 计算机网络体系结构
      • OSI 参考模型
      • TCP/IP 参考模型
      • 分层的必要性
        • 物理层的主要问题
        • 数据链路层的主要问题
        • 网络层的主要问题
        • 运输层的主要问题
        • 应用层的主要问题
      • 分层思想的处理方法
        • 发送请求
        • 路由器转发
        • 接受请求
        • 发送响应
        • 接收响应

计算机网络体系结构

计算机网络体系结构是指将计算机网络分为不同的层次和功能模块,以实现可靠的数据传输和通信的架构模型。

由于计算机网络从底层的传输到高层的软件设计十分复杂,要合理地设计计算机网络模型,必须采用分层模型,每一层负责处理自己的操作。

OSI 参考模型

OSI(Open System Interconnect)网络模型是 ISO 组织定义的一个计算机互联的标准模型。它只是一个定义,目的是为了简化网络各层的操作,提供标准接口便于实现和维护。

这个模型从底层到高层依次是:

  1. 物理层(Physical Layer):该层负责传输原始的比特数据流,以及定义传输介质和物理连接的电气特性,如电压、数据传输速率等。

  2. 数据链路层(Data Link Layer):该层负责将数据分割成帧,进行错误检测和纠正,并确保数据在物理介质上的可靠传输。它还处理数据包的寻址和传输控制。

  3. 网络层(Network Layer):该层负责在网络中实现数据包的路由和转发。根据目标地址选择路由来传输数据,确定最佳路径,并能够处理跨越不同网络的数据传输。

  4. 传输层(Transport Layer):该层提供端到端的可靠数据传输服务,确保数据的完整性、排序和可靠性。常见的传输层协议有 TCP(传输控制协议)和 UDP(用户数据报协议)。

  5. 会话层(Session Layer):该层负责建立、管理和终止通信会话,以实现不同计算机之间的交互。

  6. 表示层(Presentation Layer):该层负责数据格式的表示和转换,以确保不同系统之间的数据可以正确解释和处理。常见的任务包括数据加解密、数据压缩和数据格式转换。

  7. 应用层(Application Layer):该层是用户和应用程序直接接触的层,它提供了不同应用程序之间交换数据所需的服务和协议。常见的应用层协议有 HTTP(超文本传输协议)、SMTP(简单邮件传输协议)等。

![[OSI Reference Model.png]]

TCP/IP 参考模型

TCP/IP 协议Transmission Control Protocol/Internet Protocol)是互联网中最常用的协议之一,是网络通信所必须的基本协议。使用其他网络协议(例如 NetBIOS、AppleTalk 协议等)是无法联入互联网的

TCP/IP 协议以层次化的 TCP/IP 参考模型的方式组织起来,分为四个层次:

  1. 应用层(Application Layer):该层是应用程序直接使用的,它规定了不同应用之间的信息交互格式和交互方式。常见的应用层协议包括 [[#HTTP]]、FTPSMTP 等。

  2. 传输层(Transport Layer):该层提供端到端的数据传输服务,为应用层提供可靠的数据传输机制TCP(传输控制协议)和 UDP(用户数据报协议)是传输层协议。

  3. 网络层(Network Layer):该层负责一组数据包从源头到目标地的传输,提供了一种数据传输方式,也就是互联网。IP(互联网协议)是网络层中最主要的协议。

  4. 网络接口(数据链路)层(Link Layer):该层负责将数据帧组装成字节流,送到物理层中作为比特流进行传输。在实际应用中,链路层包含了许多子层,主要子层有以太网、WiFi、蓝牙、DSL 等。

![[TCPIP Referenc Model.png]]

互联网实际使用的 TCP/IP 模型并不是对应到 OSI 的 7 层模型,而是大致对应 OSI 的 5 层模型:

![[OSI Model.png]]

TCP/IP 协议是互联网的基础,支持复杂的网络架构和千变万化的应用,它主要用于传输各种不同形式的数据,如文件、邮件、多媒体等。

分层的必要性

计算机网络是一个非常复杂的系统,“分层”可将庞大复杂的问题转化为若干较小的局部问题

物理层的主要问题
  • 采用什么传输媒介作为传输链路(物理层之下)

  • 用户主机、交换机、路由器等网络设备采用什么物理接口连接传输介质。

  • 采用哪种信号表示比特 0 和 1

数据链路层的主要问题

数据链路层主要解决数据包在一个网络或一段链路上传输的问题

  • 如何标识网络中的各主机(主机编址,如 MAC 地址)

  • 目的主机如何从一连串的比特流中区分出地址和数据(数据封装格式问题

  • 总线型网络中的信号碰撞问题,如何协调各主机争用总线(媒体介入控制)。总线型网络已淘汰,如今常用使用以太网交换机,将多台主机互联而成的交换式以太网,多个主机可以同时通信而不会产生碰撞。

  • 以太网交换机的实现(自学习和转发帧

  • 有线网络很少出现误码,而无线网络容易出现误码问题。需检查数据在传输过程中是否出现误码(差错检测

  • 当检测到数据包出现误码时,如何处理传输差错问题(可靠传输和不可靠传输

  • 接收方控制发送方注入网络的数据量(流量控制

网络层的主要问题

网络层主要解决数据包在多个网络之间传输和路由的问题

  • 标识网络和网络中的各主机(网络和主机共同编址(网络号相同,主机号不同),如 IP 地址)

![[NetWork IP Address.png]]

  • 路由器转发分组(路由选择协议、路由表、转发表
运输层的主要问题
  • 标识与网络通信相关的应用进程,解决进程之间基于网络通信的问题(进程的标识,如端口号)

  • 出现传输差错时如何处理(可靠传输和不可靠传输

应用层的主要问题
  • 制定应用协议,并按协议标准编写相应的应用程序,通过应用进程的交互来完成特定的网络应用

  • 应用进程基于网络通信时的会话管理和数据表示问题

分层思想的处理方法

通过一个实例理解分层思想的处理方法。

如图所示,主机属于 网络N1,Web 服务器属于 网络N2N1N2 通过路由器互连,用户在主机中使用浏览器访问 Web 服务器。

主机会向 Web 服务器发送一个请求报文,Web 服务器收到请求报文后,执行相应的操作,然后给主机发送响应报文,主机收到响应报文后,由浏览器负责解析和渲染解释。

主机和 Web 服务器之间基于网络的通信,实际上是主机中的浏览器应用进程和 Web 服务器中的 Web 服务器应用进程之间基于网络的通信

![[Browser Send Request.png]]

发送请求

发送请求时:

  1. 主机中的应用层根据 HTTP 协议的规定,构建一个 HTTP 请求报文,用于请求 Web 服务器执行相应操作。应用层将构建好的 HTTP 请求报文向下交付给运输层

  2. 运输层给 HTTP 请求报文添加一个 TCP 首部,将其封装成为 TCP 报文段,用于区分应用进程,实现可靠传输。运输层将封装好的 TCP 报文段向下交付给网络层

  3. 网络层给 TCP 报文段添加一个 IP 首部(主要作用是 IP 寻址和路由),将其封装成为 IP 数据报,网络层将封装好的 IP 数据报向下交付给数据链路层

  4. 数据链路层给 IP 数据报 添加一个首部和一个尾部,并将其封装成为,帧的首部和尾部的主要作用是 MAC 寻址和帧校验。数据链路层将封装好的帧向下交付给物理层

  5. 物理层将封装好的帧视为比特流(由二进制组成的数据流),将其转换为电信号进行发送。对于以太网,物理层还会在比特流前添加前导码,使接收方的时钟同步,做好接受准备。

路由器转发
  1. 主机的物理层将电信号发送给路由器后,其物理层将电信号转换为比特流。若为以太网,会将比特流的前导码去掉。物理层将帧向上交付给数据链路层

  2. 数据链路层将帧首部和尾部去掉后,将 IP 数据报向上交付给网络层。

  3. 网络层从 IP 数据报的首部中提取出目的 IP 地址,路由器根据目的 IP 地址查找自己的转发表,确定转发该 IP 数据报的接口,同时,对首部中的某些字段值,如生存时间 TTL 字段的值进行相应的修改。将该 IP 数据报向下交付给数据链路层。

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

  5. 物理层将帧视为比特流(对于以太网会添加前导码),将其转换为电信号后发送出去。

接受请求

Web 服务器接收到数据包后,会按照网络体系结构自下而上的顺序将其进行逐层解封,解封出 HTTP 请求报文。

发送响应

接收到 HTTP 请求报文后,执行相应的操作。然后给主机发送包含有浏览器请求内容的 HTTP 响应报文。

与浏览器发送 HTTP 请求报文的过程类似,HTTP 响应报文需要在 Web 服务器层层封装后才能发送。

接收响应

数据包经过路由器的转发到达主机,主机对收到的数据包按照网络体系结构自下而上的顺序将其进行逐层解封,解封出 HTTP 响应报文。

![[Web Server Send Response.png]]