zoukankan      html  css  js  c++  java
  • 网络分层结构

    身为开发人员懂得网络结构层次划分是必须的,但是由于工作中不太经常用到所以在学校学的通信网络相关的知识全部还给老师了

    刚刚在公众号上看了一下网络分成结构的通俗解释,感觉更加便于理解和记忆,下面就本人的理解简单的记录一下

    原文地址 https://mp.weixin.qq.com/s/JCYp96Advw3zGa0cc9VMpg

    学习任何东西都要“知其然知其所以然“”才能真正的理解和应用——下面就几个问题去理解网络分层

    1、为什么需要网络分层

    2、如何进行网络分层

    3、怎样使用网络分层

    假如多台机器交流进行通信,我们需要定义一套规范,否则根本无法确定数据从哪里来,到哪里去,如何使用,那么我们如何定义一套规范呢。

    假如有多台机器要进行通讯,我们需要做哪些准备,才能完整的进行通讯

    a、四台机器之间要有网线进行数据传输

    b、由于传输的数据都是0,1 所以要对该数据进行解析,识别,知道数据对应要传输的机器(MAC地址、广播)

    c、由于计算机网络通信发展,所以划分了不同的子网络,所以我们要识别是否为同一个子网络,以方便数据传输(为什么要识别子网络是因为同一个子网络之间,和不同子网络之间的MAC地址获取方式是不同的)

    d、由于每个计算都可以同时运行多个应用程序,所以需要区分数据到底是传给该机器的那个应用的——不同应用对应了不同端口

    e、该机器的某一个应用接受数据后,需要对数据进行使用,所以传输的数据需要符合该应用的解析规范

    下面先将网络层次划分说明一下,然后与我们的问题对应

    最初的IOS 为了解决通信问题划分的7层模型(参考模型是国际标准化组织(ISO)制定的一个用于计算机或通信系统间互联的标准体系,一般称为OSI参考模型或七层模型。)

    后来根据7层结构衍生出了 TCP/IP 四层模型和 TCP/IP 五层模型

     (四层对应图片来源:https://blog.csdn.net/woalss/article/details/79054524

     图中已经划分的很清晰了

    5层结构化分将7层中的应用层、表示层、会话层——统一成了网络层

    4层结构的划分在5层的基础上,将数据链路成和物理层——统一成了网络接口层

    由于7层的网络层次划分既复杂又不实用,而5层的TCPIP 5层和4层没有什么区别,所以就针对5层的结构与我们的问题对应一下

    物理层:

      用于解决a中数据传输问题,通过物理手段将机器连接起来进行数据传输

    数据链路层:

      用于解决b中识别数据中0,1对应的机器问题;具体应用到了“以太网协议”对数据中的0,1进行分组映射,其中涉及到了MAC地址和广播的含义

      MAC地址——机器的物理地址,唯一标识

      广播——获取机器的MAC地址

      广播中还存在两种情况,一种是,在同一子网络下(同一局域网下)的计算机是通过 ARP 协议获取到对方 MAC地址的。不同自网络中(不同局域网)中是交给两个局域网的网关(路由器)去处理的

    网络层:

      用于解决c中 在数据链路层中我们说说两台计算机之间的通信是否为同一子网络,

      应用协议:IP协议等

      IP是计算机的动态网络地址,与MAC地址对应,

      MAC地址:不变的,唯一的

      IP地址:可变的,随着加入网络的不同IPd地址随之变化

      如何通过IP判断是否为同一个子网络

      两台计算机IP地址与其子网掩码进行AND操作,得到的结果一致,则证明两台计算机在同一个子网络(具体IP和子网掩码的详细定义请自行百度)

    传输层:

      用于解决d中能够实现“端口到端口”的通信;计算机上运行的不同程序都会分配不同的端口,所以才能使得数据能够正确的传送给不同的应用程序。

        应用协议:UDP,TCP(具体含义请自行百度)等

    应用层(整合了会话层、表示层):

      解决e中应用之间传输接口和数据格式等问题

      应用层协议:Telnet、FTP、HTTP、SNMP等

    注:这里只是根据参考文章通俗的理解记录一下(实际上每层都解决了很复杂的问题,并且应用了许多协议),仅供参考

    另外查询了一下其他两层的定义

    会话层(Session Layer)

      会话层管理主机之间的会话进程,即负责建立、管理、终止进程之间的会话。会话层还利用在数据中插入校验点来实现数据的同步。

      会话层协议的代表包括:NetBIOS、ZIP(AppleTalk区域信息协议)等。

    表示层(Presentation Layer)

      表示层对上层数据或信息进行变换以保证一个主机应用层信息可以被另一个主机的应用程序理解。表示层的数据转换包括数据的加密、压缩、格式转换等。

      表示层协议的代表包括:ASCII、ASN.1、JPEG、MPEG等。

  • 相关阅读:
    模拟赛总结
    2018.04.06学习总结
    2018.04.06学习总结
    Java实现 LeetCode 672 灯泡开关 Ⅱ(数学思路问题)
    Java实现 LeetCode 671 二叉树中第二小的节点(遍历树)
    Java实现 LeetCode 671 二叉树中第二小的节点(遍历树)
    Java实现 LeetCode 671 二叉树中第二小的节点(遍历树)
    Java实现 LeetCode 670 最大交换(暴力)
    Java实现 LeetCode 670 最大交换(暴力)
    Java实现 LeetCode 670 最大交换(暴力)
  • 原文地址:https://www.cnblogs.com/yutf/p/11457763.html
Copyright © 2011-2022 走看看