• 1.7.2、计算机网络体系结构分层的必要性


    • 计 算 机 网 络 是 个 非 常 复 杂 的 系 统 \color{red}计算机网络是个非常复杂的系统 。早在最初的ARPANET设计时就提出了分层的设计理念。

    • " 分 层 \color{red}分层 "可将庞大而复杂的问题,转化为若干较小的局部问题,而这些较小的局部问题就比较易于研究和处理。

    • 下面,我们按照由简单到复杂的顺序,来看看实现计算机网络要面临哪些主要的问题,以及如何将这些问题划分到相应的层次,层层处理。


    1、物理层问题

    1.采用怎样的传输媒体(介质)

    • 常见的双绞线网线

    image-20221111201305463

    2. 采用怎样的物理接口

    • 例如,RJ45以太网接口

      image-20221111201401918

    3. 使用怎样的信号表示比特0和1

    • 例如,这样的方波信号。低电平表示0,高电平表示1

      image-20221111201525908

    说明

    • 严格来说,传输媒体并不属于物理层,它并不包含在体系结构之中
    • 计算机网络中传输的信号,并不是我们举例的方波信号(这里只是容易理解)

    2、数据链路层问题

    使用的计算机网络,一般都有多台主机构成。

    例如:主机ABCDE通过总线互连,构成了一个总线型网络(早已淘汰

    假设已经解决的物理层的问题(主机间可以发送信号来传输比特01了)

    image-20221111202732543

    若主机A要给主机C发送数据。但是,表示数据的信号会通过总线传播到总线上的每一个主机。

    image-20221111202810842

    那么主机C如何知道该数据是发送给自己的,自己要接受?

    而主机B,D,E又如何知道该数据并不是发送给自己的,自己应该如何拒绝呢?

    1. 如何标识网络中的各主机主机编制问题,例如MAC地址)

      • 主机在发送数据时,应该给数据附加上目的地址。
      • 在其他主机收到后,根据目的地址和自身地址,来决定是否接受数据
    2. 如何从信号所表示的一连串比特流中区分出地址和数据

      • 也就是需要解决分组的封装格式问题
    3. 如何协调各主机争用总线

      • 例如,某个时刻总线是空闲的,也就是没有主机使用总线来发送数据。

        片刻之后,主机BD同时向总线发送数据,这必然会造成信号碰撞


    现在常用的是使用以太网交换机将多台主机互连形成的交换式以太网

    • 那么以太网交换机是如何实现的呢?

    image-20221111203651477

    3、网络层问题

    我们发现,只要解决了物理层和数据链路层各自所面临的问题,我们就可以实现分组在一个网络上传输了。

    但是

    • 我们每天都在使用的因特网是由非常多的网络和路由器互连起来的
    • 仅解决物理层和数据链路层的问题还是不能正常工作

    例如:一个由3个路由器。4个网络互连起来的小型互连网。(因特网中的很小一部分)

    image-20221111204651582

    很显然。我们面临着如何标识各网络以及网络中各主机的问题。

    1. 如何标识各网络以及网络中的各主机(网络和主机共同编址的问题,例如IP地址)
      • 例如:网络N1中各设备的IP地址。
        • 该类IP地址的前三个十进制数用来表示网络,第四个十进制数用来表示主机(C类IP地址)
        • 在本例中,网络N1的网络号为192,168,1
        • 该网络上的笔记本电脑,服务器,以及路由器接口
          • IP地址的前三个数应该都是192,168,1(因为它们都在网络N1上)。
          • 而第四个十进制数为1,2,254,各不相同,用来表示它们自己
      • 同理网络N2中各设备的IP地址

    image-20221111205108592

    1. 路由器如何转发分组,如何进行路由选择

      • 源主机与目的主机之间的传输路径往往不止一条

      • 分组从源主机到目地主机可走不同的路径地址

    img

    4、运输层问题

    若我们解决了物理层、数据链路层及网络层各自的问题,则可以实现分组网络间传输的间题。

    但是

    • 对于计算机网络应用而言,这仍然不够

    例如:假设这台主机中运行着两个与网络通信相关的应用进程(QQ进程,游览器进程)

    ​ 这台服务器运行着与网络通信相关的服务器进程。

    1. 如何解决进程之间基于网络的通信问题
      • 某个时刻。主机收到了来自服务器的分组,那么这些分组应应该交给览器进程处理呢。还是应该交给回Q进程处理?

    image-20221111210147755

    1. 出现传输错误时,如何处理
      • 如果某个分组在传输过程中出现了误码
      • 或者由路由器繁忙。导致路由器丢弃分组。

    5、应用层问题

    若以上都解决了,则可以实现进程之间基于网络的通信

    在此基础上,只需制定各种应用层协议

    1. 通过应用进程间的交互来完成特定的网络应用
      • 支持万维网应用的HTTP协议
      • 支持电子邮件的SMTP协议
      • 支持文件传送的FTP协议

    image-20221111210854661

    6、统一解决

    我们将实现讨算机网络就需要解泱的各种主要问题,分别归到了物理层、数据链路层、网络层运输层和应用层。

    进而构成了五层协议体系的原理体系结构。

    image-20221111211320299

    作为一名程序员,将这些问题将它们划分到不同的模块中,逐模块编程实现

  • 相关阅读:
    我今天拆了个炸弹
    heap堆结构以及堆排序
    开源代码分享(22)-基于拉格朗日松弛的电动汽车分布式充放电调度
    齐鲁大地市省学馆《乡村振兴战略下传统村落文化旅游设计》山东图书香
    SPDK中常用的性能测试工具
    JavaScript的map方法
    MySQL 服务正在启动.MySQL 服务无法启动.服务没有报告任何错误。请键入 NET HELPMSG 3534 以获得更多的帮助。总结较全 (已解决)
    什么牌子蓝牙耳机通话质量好?通话质量好的蓝牙耳机推荐
    【我的第一千篇文章】
    I2C接口及时序
  • 原文地址:https://blog.csdn.net/qq_67720621/article/details/127813654