网络基础认知(上)

        如今使用过计算机的人们都接触过网络,但是网络究竟是什么,计算机又是怎样通过网络来进行互相之间通信的,这还需要我们深入了解。

目录

网络发展

 初识协议

什么是协议

为什么需要协议?

网络协议初识

协议分层

  为什么网络协议要分层呢?

OSI七层模型

TCP/IP五层(四层)模型

网络传输基本流程

协议报头

局域网

局域网通信过程

跨网络通信

数据包的封装和分用

数据包封装和分用的过程

封装过程

分用过程

网络中的地址管理 


网络发展

        最开始的时候,每一台计算机相互之间都是独立的,若是想互相通信或者共享数据,需要有人参与,通过一些二进制纸条,或者光盘,磁带之类的物品,将数据录入到上面,然后才能让另一个计算机读取上面的信息。

二进制纸条

                                                                                                                         二进制纸条

         但是有人参与的活动导致计算机通信很慢,而且远程通信成本很高,因而出现了网络

        比如这样,通过一个服务器使得多台计算机可以数据共享。

        

       局域网LAN: 或者通过交换机和路由器,使得计算机可以远距离通信。

 

       广域网LAN:可以将远隔千里的计算机都链接在一起:

     这里的局域网和广域网实际上都差不多,广域网相当于一个更大的局域网。

        

 初识协议

      

什么是协议

        协议在日常生活中有许多,用一句话概括就是:协议是一种约定

为什么需要协议?

        想象一个场景,当两个人面对面说话时,可以很轻松的进行通信。

        但是当两个人距离拉开的时候,就会有各种各样的问题导致难以通信。 

 

         若是相隔距离过远,再想通信就只能跑过去重新面对面才能通信,这样成本就太高了。

        于是这两个人就可以互相之间约定好用其他方式来进行通信,比如打电话,写信,做暗号。

 这样就约定好一个协议了。

                                        而协议,就是为了减少通信的成本而存在的

        而计算机之间是通过使用光信号或者电信号来通信的,想要使得计算机之间成功通信,就必须约定好不同的信息应该使用怎样的格式来表达,于是协议就产生了。

                        但是,两台主机只要约定好协议就可以成功通信了吗? 

        这不尽然,我们知道,计算机的生厂商有很多,计算机操作系统有很多,而厂商内部的计算机可以只用一个协议就能通信,但是厂商与厂商之间的计算机就不能成功通信了。 

       于是就需要有一个标准,让大家都遵守,这就是网络协议

网络协议初识

协议分层

        网络协议是分层的,那么什么是分层呢?举一个列子:

        像我们打电话,我们和电话对面的人都是默认使用汉语说话,这就是一层语言层。

        而电话机则是另一层,通信设备层。

      

  为什么网络协议要分层呢?
 

网络协议分层的原因:

a. 软件层面的优势——低耦合

b.有些模块功能比较集中,耦合度比较高,这些模块放一层——高内聚

c.每一层都有需要解决的特定问题

   

而网络协议分层的原因就在其中,首先就是低耦合问题

每一层都有自己特定的功能,最需要低耦合的就是其中应用层了。

应用层管理着针对不同应用的协议,如果没有分层,那么若是有新的应用协议出世,就要更新整个计算机,而有分层则只用针对应用层进行更新。

分层的依据就是看哪些模块功能是否集中了,将功能集中的模块放在同一层。

其中每一层都要解决特定的问题。

特定问题

a.如何交付数据给下一台主机

b.如何选择去往下一台主机的路径

c.出现了错误应该如何纠错

d.解决应用方面的能力

OSI七层模型

当我们明白为什么网络需要进行分层后,我们就可以了解网络协议的标准模型了,其中一个就是OSI七层模型。

OSI(Open System Interconnection,开放系统互连)七层网络模型;

称为开放式系统互联参考模型, 是一个逻辑上的定义和规范;

是一种框架性的设计方法,其最主要的功能使就是帮助不同类型的主机实现数据传输;         

顾名思义,OSI七层模型将网络协议定为了七层,每一层都有对应的物理硬件,如交换机,路由器。 

它的最大优点是将服务、接口和协议这三个概念明确地区分开来,概念清楚,理论也比较完整. 通过七 个层次化的结构模型使不同的系统不同的网络之间实现可靠的通讯;

那么这七层是哪七层呢?

 OSI将网络协议分为这七层,每一层都有不同的功能。

不过OSI七层模型虽然十分精细,但是它在实际的工程实践中并不常用。

接下来我们了解另外一个模型——TCP/IP五层(四层)模型

TCP/IP五层(四层)模型

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

TCP/IP通讯协议采用了5层的层级结构,每一层都呼叫它的下一层所提供的网络来完成自己的需求

物理层:负责光/电信号的传送

数据链路层:负责设备之间数据帧的传送和识别

网络层:负责地址管理和路由选择

传输层:负责两台主机之间的数据传输

应用层:负责应用程序之间的沟通

对于一台主机而言,它的操作系统内核实现了从传输层到物理层

对于路由器而言,它实现了从网络层到物理层

对于一台交换机而言,它实现了从链路层到物理层

对于一台集线器而言,它只实现了物理层

网络传输基本流程

想要了解网络传输的基本流程,先得明白一个概念——协议报头。

协议报头

每一层都有协议,而每一层协议的最终表现就是报头,每一层协议都是通过协议报头进行表达的。

就好比网购,我们不仅会收到产品,也会收到快递单等一些我们并没有购买的东西。

虽然这些快递单对我们没有用,但是对于快递公司来说,却是十分重要的,若是没有快递单,那么快递公司送快递的工作就会十分麻烦。

而报头则在网络传输中起着快递单的作用,不同的协议报头都需要对应的协议才能识别

局域网

我们都知道,在局域网中的两台主机可以直接通信,而局域网通信是通过什么来辨别不同主机的呢?

实际上,局域网通信是通过网卡上的MAC地址来辨别不同主机的。

 那么局域网内部通信过程是怎样的呢?

局域网通信过程

假设局域网内有多台主机,其中主机A要对主机B发送数据。

当主机A在局域网中发送一条信息后,实际上在局域网内部的所有主机都会收到这条信息。

但是所有主机都会根据MAC地址识别这条信息是发给哪台主机的,又是从哪里发出来的,因而只有B能成功收到这条信息

但是B只要收到了信息就能够直接读取吗?其实并非如此。

 当主机A发送数据时,计算机会从上往下根据每一层的协议给数据添加报头,然后放在以太网上。

然后通过MAC地址找到对应主机后,对应主机再一层层由下往上将报头去掉,最后获得数据。

在上图中,我们可以发现,同层协议所拥有的数据包都是相同的,于是我们可以这样理解:

                               同层协议在直接通信,也可以理解为向下交付。

讲完过程后,我们还要说一下协议的共性。

协议的共性

a.如何判断报头的位置和有效载荷的位置

b.如何判断自己的有效载荷要交给上层的哪一个协议

        在上图中,我用几个图形来有效的表示报头和有效载荷的位置,但是实际上的报头和有效载荷的位置并没有这么明显的区别,都是需要协议自身内部来区分位置

        此外,在计算机内部每一层可能会有好几个协议,如何找到对应的协议也需要协议自身来控制。

跨网络通信

        现实生活中肯定不会只有局域网通信,还有跨网络通信,其中局域网又分为以太网,令牌环网和无线LAN

        那么跨网络通信就需要解决不同局域网通信的问题。

        其中路由器就是用来解决该问题的——屏蔽底层协议的差异

         实际上跨网络通信和局域网通信类似,只是在最后并不是将数据包传给对应主机,而是传给路由器

        当路由器收到数据包的时候,会根据数据包中的IP地址来选择对应主机,然后根据这个主机的局域网类型来选择对应的协议。

        剩下的就由目标主机一层层解包。

数据包的封装和分用

不同的协议层对数据包有不同的称谓,在传输层叫做段(segment),在网络层叫做数据报 (datagram),在链路层叫做帧(frame).

应用层数据通过协议栈发到网络上时,每层协议都要加上一个数据首部,称为封装

首部信息中包含了一些类似于首部有多长, 载荷(payload)有多长, 上层协议是什么等信息.

数据封装成帧后发到传输介质上,到达目的主机后每层协议再剥掉相应的首部, 根据首部中的 "上层协议字段" 将数据交给对应的上层协议处理.

数据包封装和分用的过程

封装过程

        我们可以看到,每一层给数据加完首部后,就会向下到下一层协议;

        此外在最后的链路层会给数据包添加首部和尾部,需要注意。

分用过程

当主机接收到进入的帧后,会按上图来一层一层的解包,最终找到正确的协议。

网络中的地址管理 

IP地址

IP地址是在IP协议中, 用来标识网络中不同主机的地址;

对于IPv4来说, IP地址是一个4字节, 32位的整数;

我们通常也使用 "点分十进制" 的字符串表示IP地址, 例如 192.168.0.1 ; 用点分割的每一个数字表示一个字节, 范围是 0 - 255;

MAC地址

MAC地址用来识别数据链路层中相连的节点;

长度为48位, 及6个字节. 一般用16进制数字加上冒号的形式来表示(例如: 08:00:27:03:fb:19)

在网卡出厂时就确定了, 不能修改. mac地址通常是唯一的(虚拟机中的mac地址不是真实的mac地址, 可能会冲突; 也有些网卡支持用户配置mac地址).

那么这两个有什么区别呢?

在网络通信中,IP地址可以认为是一个指导大概方向的。

它告诉主机该数据源自哪里目标又是哪里

而MAC地址可以认为是细化了路径。

它告诉主机该数据从哪一台主机来,该去的下一台主机在哪里。

因此我们可以简单的认为,在网络的数据包中,IP地址应该是不变的,而MAC地址则是随时变化的。

其中,IP地址和MAC地址又都被细分为源IP地址和源MAC地址,目标IP地址和目标MAC地址。

源IP:从哪台主机来;

目的IP:到哪台主机去;

源MAC:上台主机的地址

目的MAC:需要去的下一台主机是哪个;

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值