⭐️ 本篇博客开始要给大家介绍网络相关的内容了,本篇博客介绍的是网络中比较基础的一些知识,能够帮助大家认识网络
网络的发展有下面几个阶段:
广域网(WAN): 多个局域网通过路由器连接起来,构成一个广域网,也可以说是一个更大的局域网
“广域网”和“局域网”是一个相对的概念,例如:一座城市的网络的网络布局可以说是城域网,从大的方面讲,城市里面有许许多多的局域网,构成了这个大的广域网,对于一个国家的网络而言,整个国家的网络可以看作是由许许多多的城市的局域网构成的一个更大的广域网,而每一个城市的网络就看作是一个局域网。同样地,这个国家的网络也可以看作是一个更大的局域网。
协议就是一种 “约定”。它是多方协商出来的一种通信方案,达成一种“共识”。双方想要进行通信,就需要按照双方事先都知道的约定进行通信。例如:两方之间发送电报,事先约定了0代表收到,1代表发起进攻等,这个约定是两方都知道的。
协议的好处:
计算机之间想要传递各种不同的信息,就需要约定好双方的数据格式。
整个网络协议栈被分成层状结构的一个个的小模块,具体到实例有OSI七层参考模型
和TCP/IP五层模型
协议分层的好处:
举例: 两个人在打电话,都是用汉语进行交流,表面上看是两人直接进行通信。仔细思考会发现,在人通信层的下一层在为两人通信提供服务,电话层与对端的电话层通过电话协议进行通信,电话层需要将人说话的声音进行处理,转为电信号,然后发送给对端的电话层,对端的电话层收到电信号之后进行处理,转为人的声音,这样,对端的人就听到的是人的声音。两个人通信的时候是不会关心下一层服务细节,就可以直接进行通信。
协议分层的本质: 实现了软件工程上的解耦
,层与层直接只有接口相互接口调用关系
OSI(Open System Interconnection,开放系统互连)七层网络模型称为开放式系统互联参考模型,
是一个逻辑上的定义和规范
OSI七层模型既复杂又不使用,所以就有了TCP/IP五层(或四层)模型。TCP/IP是一组协议的代名词,它还包括许多协议,组成了TCP/IP协议簇。TCP/IP通讯协议采用了5层的层级结构,每一层都呼叫它的下一层所提供的网络来完成自己的需求。物理层有时候不做讨论,所以有时候也叫四层模型。
图解:
可以看出的是,OS贯穿整个网络协议栈,协议栈是网络标准组织定义的,所有的OS(Windows.Linux和MacOs等)都是支持的。数据通信的本质就是两个协议栈之间进行通信
。
总结:
通信细节
,应用层处理的是业务细节
一般而言
段(segment)
,在网络层叫做数据报 (datagram)
,在链路层叫做帧(frame)
,应用层叫做请求和响应
思考几个问题:
数据包=报头+有效载荷
几乎所有的协议都需要解决两个问题:
1.如何将数据包中的报头和有效载荷分离的问题,这个过程叫做解包。
2.自底向上,要确认自己的有效载荷交付给上层的那个协议,这个过程叫做分用。
通常有两种方法:
1.定长报头。报头的长度是确定的,这样就可以实现二者分离。
2.自定义描述符字段。报头中添加一个字段,表示报头的长度。
局域网内的主机是通过路由器和交换机连接在一起的,局域网内的两台主机通信本质就是两个协议栈之间在进行通信,下面是两台主机通过TCP/IP协议进行文件传输的过程:
数据在自身协议栈自顶向下进行封装:
数据在对端协议栈自底向上进行分用:
思考几个问题:
在数据链路层,有一个MAC地址(48位),网卡硬件地址或者序列号,是全球唯一的,用来标识主机的唯一性。每一台主机都要一个MAC地址,且都知道,发送方将数据发出去,这个数据里面包含目标主机的MAC地址信息,每个主机都可以收到这一份数据,且用自己的MAC地址与数据中的目标主机MAC地址进行比较,如果不同,表明该数据不是发给自己的,就将数据丢掉,相同就表明该数据是发给自己的,就收下。
主机发送数据是,将MAC地址设置为一个广播地址,这样所有的主机都认为这个数据是发给自己的
局域网中,有多台主机直接通信,有可能会发生数据
碰撞
,这样就会影响其它主机间的通信,所以一个局域网可以看作是一个碰撞域
。
碰撞后的数据就是垃圾数据量,局域网中的所有主机都可以收到发出去的数据,包括发数据的主机本身也是如此,该主机会将收到的数据和此前发出去的数据进行对比,如果不同,代表此前发出去的数据发生了碰撞,这就是碰撞检测
数据发生碰撞后,发送方不会立即将数据进行重写发送,而是等一段数据,在重新发生,这就是碰撞避免算法
,也是碰撞避免
的一种机制
所以说,局域网的数据通信时在一个碰撞域中不断地碰撞,然后进行碰撞检测,碰撞避免。
局域网通信的本质就是基于碰撞域、碰撞检测和碰见避免实现通信,局域网内主机越多,碰撞几率越多,交换机在局域网中的作用就是划分碰撞域
,解决碰撞问题,降低碰撞几率
跨网络通信就是分别处于不同局域网的两台主机之间进行通信,根据前面的知识我们可以知道,两个局域网之间是通过路由器进行通信的,所以这两台主机进行通信要经过至少一台路由器,更多的时候是多台路由器,下面是跨网段的两台主机的文件传输,中间会经过很多台路由器,下面的过程只经过一台路由器:
可以看到的是,这里的通信比局域网内通信多了一个封装和分用的过程,数据封装完毕不是把数据包直接通过网络交付给对端的数据链路层,而是交付给路由器,这是为什么呢?
路由器横跨两个局域网,两个局域网负责设备之间的数据帧传送的网络协议可能是不同的,有以太网、令牌环网和无限LAN等通信协议标准。在上面的图片中显示,一个局域网使用的是
以太网
协议标准,两一个局域网使用的是令牌环网
,双方的标准有差异不能够直接通信,所以就需要有中间媒介处理进行处理,这个媒介就是路由器
。前面说过了,路由器是从网络层到物理层,所以数据封装完毕会把数据包交付给路由器,最后一次封装会添加路由器的mac帧(这样局域网内的主机就可以找到对应的那一台路由器,局域网的主机都认为路由器是自己所在局域网的一台主机
)。
路由器处于数据链路层的以太网驱动
会把数据包中的以太网协议(路由器mac帧)报头去掉,将剩下的有效载荷交付给路由器的网络层,路由器根据目的IP地址,查询路由表进行路由转发,然后将数据包进行向下交付给令牌环网的驱动程序
,它会给数据添加上对端的令牌环网协议报头信息,最后将数据包传送给对端协议栈的数据链路层
数据包在路由器中不断调整mac帧协议报头,也就是,数据包的源mac地址和目的mac地址是在不断变化的,但是源IP和目的IP是不变的。可以看到的是IP层往上的数据报头信息是不变的,变的是IP层往下的协议报头信息,这就体现了IP层协议的好处:
通过IP地址虚拟化了底层协议的差异,这样就不需要关心底层使用的是那种通信协议,只要有源IP地址和目的IP地址就可以将数据转发出去
IP协议有两个版本, IPv4和IPv6. 我们整个的课程, 凡是提到IP协议, 没有特殊说明的, 默认都是指IPv4
网络基础的部分就先介绍到这里了,这里都是点到为止,没有过多地介绍细节,更多协议的细节后面还会逐一介绍,喜欢的话欢迎点赞、收藏和关注~