网络基础——网络大致框架

Posted 两片空白

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了网络基础——网络大致框架相关的知识,希望对你有一定的参考价值。

目录

一.网络背景

        1.1 网络的发展

二.协议

        2.1 概念

        2.2 协议的分层

       2.2.1 OSI七层模型

        2.2.2 TCP/IP五层(四层)模型

三. 网络传输基本流程

        3.1 网络传输流程图

        3.1.1 对封装和分用的理解

        3.1.2 局域网通讯原理

        3.1.2 同一网段两主机进行数据传输

        3.1.3 跨网段的主机的传输

 四.认识IP地址和MAC地址

        4.1 认识IP地址

        4.2 认识MAC地址


一.网络背景

        有人可能会说,网络背景为什么要了解?了解网络背景可以帮助你更好的理解后面的知识。

        1.1 网络的发展

        计算机出现在网络网络之前,一开始是用来计算和核导弹的轨迹的。但是由于计算可能是由多台计算机计算,它们之间数据要相互传递,如果通过人来传递,第一效率会很低,第二可能会出错。

        人们就想着如何可以让计算机和计算机之间产生通信,可以传输数据。

        1.独立模式:计算机之间相互独立,通过人来传输数据

        2.网络互联:多台计算机通过集线器和线连接在一起。

这些主机的距离还不是很远,比如都在一个教室里。

         3.局域网LAN:主机通过交换机和路由器连接在一起。

主机之间有点距离,比如教室和教室之间。

         4.广域网WAN:将远隔千里的主机连接在一起。

比如地区和地区之间,国家和国家之间。

        我们发现网络的发展都是根据人的需求,距离是在不断的变长。

        注意:局域网和广域网只是一种相对的概念。比如:地区和地区之间,可以看作是广域网,但是相比较于国家,它也可以看作是局域网。

        不仅主机和主机之间由网络,一台主机的内部,硬件和硬件之间也要传输数据,他们之间也有网络。

二.协议

        2.1 概念

        一台主机发送数据给另外一台主机会有很多问题。比如:怎么定位你要发送的主机?怎么保证数据不会丢失并且正确?怎么保证效率问题?

        协议就是用来解决这样的问题的。

        协议其实是一种约定。代表了某些信息。

 简要概括数据的发送和接收:

        在操作系统中有各种各样的协议,操作系统需要将它们管理起来。在操作系统底层,将协议描述成一个一个结构体,在主机发送数据给另外一个主机时,需要将数据和协议进行合并,合并成一份后,再一起发送出去。所以发送的数据会比想接收的数据多,多出来的是协议。收到数据的主机还需要将协议分离,得到真正的数据。

        计算机内数据是以二进制的形式保存,计算机之间传输的介质是光信号和电信号,比如:计算机可以通过"频率"或者"强弱"或者"疏密"来表示0和1的信息。想要传递各种不同的信息,就要约定好双方的数据格式。

        注意:不是主机之间约定好协议就可以通信了,如果两主机之间协议不同,注意发送数据时按照一种协议发的,收到数据的数据,按照另外一种协议分离,就会导致数据不一致。所以必须约定一个共同的网络协议。

        网络里的协议就是一种数据格式,规定的相同的数据格式就是网络协议。

        同一网段源主机和目标主机的协议要相同。

        2.2 协议的分层

          为什么需要分层?

        由下图: 由于每一层都会需要进行交互,协议分层后有利于层与层之间解耦,不会互相影响。 

       2.2.1 OSI七层模型

        OSI(Open System Interconnection,开放系统互连)七层网络模型称为开放式系统互联参考模型,是一个逻辑上的定义和规范;把网络从逻辑上分为了7层。 每一层都有相关、相对应的物理设备,比如路由器,交换机。

        但是在实际生活中,它即复杂又不实用。

        2.2.2 TCP/IP五层(四层)模型

        五层模型:是去掉OSI的表示层和会话层

        四层模型:是去掉OSI的表示层,会话层和物理层。

TCP/UP是一组协议的代名词,还包括许多协议,组成了TCP/IP协议簇。

三. 网络传输基本流程

        发送的数据一定会由数据和协议组成,协议就是报头,数据称做有效载荷。发送数据,每一层都需要对数据进行添加报头叫做封装,接收数据,每一层都需要对报头和数据进行分离,再法总给对应的协议叫做分用。

数据报 = 报头 + 有效载荷

        3.1 网络传输流程图

        3.1.1 对封装和分用的理解

  • 封装:从应用层到物理层,每一层协议都要再用户数据上加上一个数据报头。
  • 数据报头中包含了报头有多长,载荷有多长,上层协议是什么等信息。方便解包。

  • 分用:封装的逆过程,从物理层到应用层,按照协议解包后,再发给上层对应的协议。上层协议很多,要用对应的协议进行解包。。

        注意:局域网中一台主机发送数据,每台主机都能收到。 

        3.1.2 局域网通讯原理

.局域网中所有主机都可以通讯,一个主机发数据,所有主机都能收到。在链路层,有一个mac地址,用来唯一标识一个网卡。

怎么实现定位?

        在链路层会将目标主机的mac地址添加在报头中。

        发送的数据每一台主机都能收到,当主机收到数据,会进行解包,在链路层会分析报头的mac地址,是否与当前主机的mac地址匹配。不匹配的主机将数据丢弃,匹配的主机会继续往上解包数据。

局域网通讯原理

        数据发送应用层发送请求,需要通过硬件层发送,于是要往下层走。每经过一层,都会要给数据加上报头,最终发送出数据。在局域网中的数据都能收到数据,收到数据的主机会在链路层分析报头是否与当前主机mac地址匹配,不匹配将数据丢弃,匹配继续向上解包,每次向上发送数据要确定是发送给哪个协议。最终会在应用层收到最终的数据。

        如果多台主机同时往局域网中发送数据时,会发生数据碰撞,会导致数据变成垃圾数据,导致没法进行通信。在链路层会检测数据碰撞的垃圾数据,然后会让源主机重发数据。在计算机中有一种算法可以避免冲突。

        广播:mac地址设为全1,所有主机都匹配。

        3.1.2 同一网段两主机进行数据传输

将用户数据传输和接收过程:

        3.1.3 跨网段的主机的传输

数据从一台计算机到另外一台计算机传输过程中需要经过一个或者多个路由器。

        路由器横跨两个局域网,是两个局域网的主机。 于是路由器可以收到一个局域网的数据,再向另外一个局域网发送数据。

 四.认识IP地址和MAC地址

        通过跨网段主机传输,如果网段之间路由器很多,我们可以知道,MAC地址是在不断变化的,但是IP地址是不变的。

        MAC地址有两个:

                原mac地址:当前局域网中发送数据的主机的mac地址。

                目标mac地址:当前局域网中要收数据的主机的mac地址。

        IP地址也有两个:

                原IP地址:一开始发数据的主机IP地址

                目标IP地址:最后接收数据的主机IP地址。

        4.1 认识IP地址

        IP协议有两个版本,IPv4和IPv6,IPv4一共有32位,IPv6一共有128位。由于现在计算机太多,IPv4已经标识不了这么多主机,所以出现了IPv6。但是现在普遍还是IPv4。

  • IP地址是IP协议中的,用来标识主机的。
  • 通常使用"点分十进制"的字符串标识IP地址。例如:"192.168.0.1";用点分割每一个数字,一个数字一个字节,范围0~255。

        4.2 认识MAC地址

  • MAC地址用来标识数据链路层中相连的结点。
  • 长度48位,6字节。一般用16进制数加上冒号的形式表示。例如:08:00:27:03:fb:16。
  • mac地址在网卡出厂时就已经确定,不能修改。mac地址通常是唯一的。 

 

以上是关于网络基础——网络大致框架的主要内容,如果未能解决你的问题,请参考以下文章

手写个Tomcat雏型

Python都有哪些常见的,好用的爬虫框架

鸿蒙网络请求

鸿蒙网络请求(上):网络请求的使用

一篇文章教会你理解Scrapy网络爬虫框架的工作原理和数据采集过程

# yyds干货盘点 # 一篇文章教会你理解Scrapy网络爬虫框架的工作原理和数据采集过程