• 网络基础原理概述


    目录

    认识网络—基础概述

    用户态与内核态

    类似于这种复制

     网卡如何发送数据

     数据在传输介质(网线)上的传播

    网络标准分层

    什么是协议

    协议分层

    物理层

    数据链路层

    网络层

    传输层

    应用层

    数据链路层详解:

    LAN内部的通信

    集线器

     冲突域

    如何解决冲突域问题

    交换机

    广播域

    MAC地址

    广播地址

    网络层详解

    路由器

    IP地址

    传输层详解

    端口(port)

    端口和进程的关系

    端口的特性

    分层总结图

     重要协议

     同LAN内部应用层通信

    发送方

    发送方主要进行封装(必须携带分用和解包信息)

    接收方

    接收方进行解包/分用(根据本层的控制信息)

     跨LAN的应用层通信


    认识网络—基础概述

    用户态与内核态

    直接进入主题,用户态和内核态其实都是一个大类,只是作为抽象概念大体介绍一下两台主机在网络上的连接。

    先看图:

    在这里明确一个概念,用户态也好,内核态也好都只是内存的不同区域

    我们从一台主机的用户态的某个进程A出发,把内存的数据复制给本机的内核态,然后通过网卡,将数字信号转化为物理信号,经过光纤,再通过另一台主机的网卡把物理信号转化为数字信号,一步步到达进程B。

    类似于这种复制

     网卡如何发送数据

    简单来说,三个步骤:

    1.将数据装入网卡:数据复制

    2.扣动扳机发射数据:fire();

    3.发送就要进行数据信号到物理信号的转变

     数据在传输介质(网线)上的传播

     首先,这样传播有可能出现信号衰退和信号差错的问题。

     当我们的数据从网线到达另一张网卡时,网卡需要将数据传递到另一台主机的CPU中,此时我们则需要采取CPU中断操作:

    首先让CPU停止当前循环去执行一段代码,这个过程叫做中断处理流程

    然后,再将数据从网卡对应的位置复制到内核态的内存。

    网络标准分层

    什么是协议

    这里说的是TCP/IP 5层协议

    完成数据通信其实是一个非常复杂的过程,所以为了解决这个复杂的问题,最好的方式就是分层进行,各司其职,完成自己对应的任务,然后交给下一层来处理。

    协议分层

    现在我用一张图来简单表示一下两个进程间的通信:

     那么每一层的具体作用到底是什么捏?

    物理层

    硬件角度保证数据转换/网络介质的传播

    数据链路层

    在同一个LAN(局域网) 中 ,一台主机的任意进程 —— 另一台主机的任意进程间的通信

    网络层

    在实现数据路由的功能基础上,跨LAN的主机到主机的通信。

    传输层

    实现主机上任意进程 —— 另一台主机任意进程的通信  , 每一台主机都可以相互通信

    应用层

    实现应用自己的业务问题(具体协议取决于业务要求)

    数据链路层详解:

    LAN内部的通信

    LAN内部就是带有一定拓扑的局域网,两台主机之间的连接。

    那么拓扑如何进行传递呢,这个时候就需要用到集线器进行组网。

    集线器

    集线器有两个特点:

    1.可以有效解决网络拓扑中的数据传递问题

    2.工作在物理层(复制数据,信号放大)

     

     冲突域

    如上图所示,所有主机都在用同一条线路(信道),但是信道的信号承载量可不是无限的,所以当信号过多时,信号就会在信道发生冲突。

    当我们使用集线器进行组网,那么就会处于一个冲突域中,这是由集线器的工作原理所导致的

    如何解决冲突域问题

    交给数据链路层的冲突避免算法,例如:发现冲突就静默一段时间再发送

    但这样还是无法很好地解决冲突问题。

    解决冲突域问题的根本在于:

    1.冲突域的主机不能太多

    2.尽量减少冲突域的出现

    因此,我们引出交换机的概念来减少冲突域

    交换机

    交换机工作在数据链路层,通过解析数据链路层放入的目标地址,决定把数据直接传递给谁

    也就是说,我们只根据数据的目标地址,把数据发送给对应的目标,所以我们也可以通过交换机组建局域网。

     交换机可以把冲突域划分起来,甚至可以让一个主机自己一个冲突域,那自然永远不会发生冲突。

    广播域

    MAC地址

     

    MAC地址(物理地址)是数据链路层的地址,有48位,通常为12个16进制数,全世界网卡的MAC地址都是不会冲突的,因为网卡生产自带,可以理解为出生的人类DNA肯定不相同 

    广播地址

    这个其实很容易理解,就是把发送数据的目标地址,从一个改成很多个,可以同时广播到不同的主机上。

    网络层详解

    网络层实现跨LAN的主机到主机之间的通信

    路由器

    路由器工作在网络层,至少连接两个局域网,所以至少有两张网卡

    路由就是一个寻址的过程,寻找正确的地址,才能实现跨LAN的主机到主机

    IP地址

    IP地址是网络层地址,是一个32位2进制数,通常分割为4个 “8位二进制数”

    一般用点分十进制表示 如 : 114.114.114.114

    IP地址是软件地址

    IP地址会随时变化,且同一个网络内的IP地址不该重复。

    在命令行使用nslookup 可以查到目标网址的对应IP

    如:

    传输层详解

    经过网络层,主机已经相互连接了

    传输层实现了主机进程到主机进程间的相互通信

    但这里的进程,还可以再深入说,是进程的端口和进程的端口连接。

    端口(port)

    端口和进程的关系

    一个端口对应一个进程,一个进程可以有多个端口。

    我们把主机比作城市,进程比作房屋。

    那每个房子里都有几个人住,这每个人就是一个端口。

    这几个人都属于这个房子,而这个房子对应这些人。

    端口的特性

    一个进程可以有多个端口,不会发生冲突。

    一个端口只能分配给一个人,不可以重复。

    分层总结图

    Sir,这里我就直接导图了

     重要协议

     同LAN内部应用层通信

     数据传输一定是从应用层 到 应用层的。

     

    发送方

    发送方主要进行封装(必须携带分用和解包信息)

     

    我们先将应用层数据打包好,然后一层层进行数据的封装,具体步骤是:

    从应用层到传输层 放入 payload(负荷),也就是内容信息。

    然后从传输层开始,每层都需要打包该层协议相关的控制信息,如端口,IP地址,MAC地址等,自身的和目标的都要打包好,放入header(首部)。

    当我们走到物理层,数据已经封装好了,发送方的任务完成。

    接收方

    接收方进行解包/分用(根据本层的控制信息)

     

    接收方将物理层传输过来的信息一步步解包,分用。

    根据一层层解包,我们可以得到最终要传输的数据。

    通过分用,我们可以从header中得到控制信息,数据从何而来,要传递给上层的谁,因此进行分用操作。

     跨LAN的应用层通信

    跨LAN的通信和同LAN差不多,但要注意长期目标和短期目标的区别。

    一般,我们先寻找到短期目标,然后重新根据长期目标计算短期目标。

    这里的短期目标指:同LAN内的目标

    长期目标也就是最终目标

    在这个过程中,我们会不断拆开数据链路层看一看,是不是我们要寻找的目标,如果是短期目标我们肯定是重新计算下一个短期目标,把数据再装回去发送,如果不是,我们就直接装回去寻找我们的目标。

    其实这些数据通过路由器传达,因为路由器看得懂长期目标,而且可以动态计算下一个短期目标。

     我觉得老师举的例子很好,我就直接套用了

     

  • 相关阅读:
    PCL 生成空间圆点云
    7.动态变量与JSON处理
    K8S集群中Coredns域名解析故障排查思路
    助力东数西算,科士达多维节碳打造低碳数据中心
    数据集成产品分析
    数据结构 --- 回溯算法
    代码随想录算法训练营19期第58天
    本地GPT-window平台 搭建ChatGLM3-6B
    对Excel表中归类的文件夹进行自动分类
    1.R语言介绍
  • 原文地址:https://blog.csdn.net/weixin_65278827/article/details/125860819