0
点赞
收藏
分享

微信扫一扫

android 识别设备是否为模拟器

文章目录

局域网通信原理

OSI七层网络模型和网络协议

局域网(LAN)只能进行短距离的通信,长距离通信时,不同主机之间会面临以下几个问题:
  1、如何定位目标主机?
  2、如何保证数据传输的可靠性?
  3、收到数据后如何处理数据?

  协议就是为了处理以上问题而诞生的,起初各个实验室定下的的网络协议不同,需要将它们统一起来提高通信效率。在1977年国际标准化组织提出了 OSI 七层网络模型,为什么要进行分层呢?因为在网络数据传输的过程中,问题是层状的,各层都有各自需要解决的网络传输问题,而分层其实就是进行解耦,每一层都是功能比较集中,用于处理该层面临的网络传输问题,达到高内聚低耦合的效果。
  该OSI七层网络模型也可以称为 TCP/IP 四层模型,正是因为TCPIP这两层太重要了,才以它们的名字命名。工程中我们常把567三层合为一层,这三层可以被个性化设计,提供业务性功能,而物理层我们编程时不过多关心。我们的网络编程主要就是针对应用层,必须要调用操作系统给我们提供的系统调用接口来访问底层的硬件,因为操作系统是硬件的管理者。

数据包的封装和分用

  当一个主机要向另一个主机发送信息的时候,信息会从应用层向下一直传递。由于问题是分层的,每一层都有自己要解决的问题,此时,数据在实际发送的时候都会多发一部分数据,这部分数据称为协议报头。除了报头,剩下的叫做有效载荷,即报文 = 报头 + 有效载荷。 封装完自己的有效数据后,依次向下推送,最后通过网卡传输到另一个主机中。当另一个主机接收到之后,因为同层使用的是相同的协议,所以它具有把报头和有效载荷分离的能力,即解包能力。解包后依次向上传递,到达应用层后进行数据处理。
  这样的每一层封包,然后在每一层的解包,其实很像入栈和出栈,所以就有了网络协议栈的由来。在每一层中,将数据报文分为报头和有效载荷,只有本层的数据报头才为报头,上层的报头和数据共同组成有效载荷。 不同的协议层对报文有不同的称谓,在传输层叫做数据段,在网络层叫做数据报,在数据链路层叫做数据帧。
   在接收方,在对数据解包后,还会面临一个问题:就是把数据交付给上层的哪一个协议?(因为每层中都会有很多的协议,且封装的时候也是不同的协议进行封装的),这就涉及数据的分用了,分用就是将数据拆包之后将数据向上层对应的协议递交。

跨网络通信

  前面我们用Mac地址来标识一张网卡,而IP地址主要用于标识网络主机、其他网络设备(如路由器)的网络地址。简单来说,IP地址用于定位主机的网络地址。IP地址分为IPv4和IPv6(16字节)两种版本,其中IPv4是目前最广泛使用的,而IPv6则设计用于解决IPv4地址耗尽的问题。对于 IPv4 来说,IP 地址是一个 4 字节,32 位的整数。我们通常也使用 “点分十进制” 的字符串表示 IP 地址(例如 192.168.0.1),用点分割的每一个数字表示一个字节,范围是 0 - 255。
  当主机A需要向主机B发送数据时,如果B不在A的局域网内,数据包会先发送到连接A的路由器。在这个过程中,数据包的MAC地址会被设置为路由器的Mac地址,以便路由器接收。路由器收到数据后,根据数据包中的IP地址,通过其路由表确定最佳的传输路径。传输过程中,路由器通过不断更新数据包的Mac地址并利用IP路由,最终使其指向B的Mac地址。这样,数据就可以跨越多个网络,到达目的地B。
  在数据传输过程中,目的IP地址作为路由选择的关键,始终保持不变,而Mac地址则随着数据在不同局域网间的转发而变化,作为局域网内设备通信的依据。路由器负责解封装、处理数据包,并重新封装,确保数据包能够跨越多种底层网络技术,如以太网或令牌环网。IP网络层的作用就是创建一个统一的网络虚拟层,使得所有底层网络的差异对上层应用透明化,上层无需关心底层网络的具体实现细节或技术差异,即可进行通信和数据传输,从而构建了一个全球统一的IP网络环境

对此网络通信的宏观流程如下:

举报

相关推荐

0 条评论