计算机网络是指将位于不同地理位置,但具有独立功能的多台设备,通过通信设备和线路连接起来,在网络操作系统,网络管理软件、网络通信协议的协调管理下,实现资源共享和信息传递的计算机系统。
简单来说就类似于国内的普通话,因为不同省份的方言不同,导致不同地方的人交流起来并不方便,因此定义了“普通话”这一标准,所有人都遵循该标准进行交流沟通。
PS:国际标准化组织提出的模型未得到广泛应用的原因:①制定时太过理想化,未考虑实际的应用场景。②拆分过于精细化,实现起来过于复杂,运行效率并不高。③体系的制定周期过长,导致按其标准生产的设备无法及时投入市场抢占份额。④体系因为分层过多,设计也不合理,有些相同的功能在多个层次重复出现。
在组织定义的国际标准模型中,是七层网络模型。在实际应用最广泛的模型中,是四层网络模型。当然,在计算机网络教学中,也提出了五层网络模型。
但无论多少层网络模型,其实本质上都是在叙述相同的内容,只不过拆分的精细度不同而已,三种网络模型对应如下:
注意点:在最初因为技术问题,因此数据传输必须建立在物理实体介质的基础之上,但如今无线电的电磁波技术也可以做到利用空气作为介质,从而达到传输数据的目的。
2.1.1、OSI模型的通信的封装与解析过程
竹子想发微信信息给熊猫,喊熊猫出来玩,但双方之间的通信基础必须对等,也就是说,熊猫的手机上也必须要安装了微信,否则竹子无法通过微信与熊猫出来玩。但如果竹子说的是汉语,熊猫只能懂汉语,双方并未遵守相同的“协议”,那两者之间自然也无法进行通信。因此,通信的另一要素则是:通信双方都必须遵守相同的协议。
而在计算机网络中,当两台机器进行通信时,其过程主要包含数据的封装与解封:
除开最常见的TCP/IP协议簇外,还有一些其他的协议组,如等协议组。
2.2.1、通信协议的基本概念
2.2.2、协议数据单元(PDU)
2.3.1、物理层
先来看最简单的通信模型:
对于如上问题,我们可以将其全部归纳到“物理层”来解决,在该层中定义标准规范。
2.3.2、数据链路层
但一般现在不会存在直连型网络,常用的计算机网络都是由多台机器共同组成的,如下:
对于上述中的这些问题,可以全部划归到链路层处理。
PS:对于这种总线型网络早已淘汰,目前常用的则是以太网的交换式通信模型:
2.3.3、网络层
到目前为止,解决了物理层及链路层中的问题后,就可以实现数据在一个局域网络中的传输了。但实际每天都接触的因特网是由无数个小网络和路由器互连组成的,如下:
而对于这些问题我们都可以划归到网络层处理。
路由选择:路由主要包括路由表和路由算法两个方面,网络层会根据速度、距离(步跳数)、价格及网络拥塞程度等因素,在路由表的多条通信路径中找一条最佳路径。
2.3.4、传输层
主机A上安装了QQ、微信、谷歌浏览器,当另一台主机向主机A发送数据时,那这些数据到底应该交给主机上的哪个进程处理呢?
这些问题可以被划归到传输层加以解决。
2.3.5、应用层
体系中将资源子网都合并为了应用层,但在模型中,资源子网是分为应用层、表示层、会话层三个层次的,也就是拆分粒度更精细化,服务也更为精细化。
2.3.5.1、OSI-表示层
2.3.5.2、OSI-会话层
简单而言,应用层主要是为用户与网络之间,提供各类可“接触”的窗口。
2.3.6、TCP/IP体系中数据的通信过程
举例:IP地址就如同是物流线路上的驿站地址,而MAC地址就是具体货架上货物的位置。
3.1.1、IP地址的组成与分类
A类IP
PS:为什么类网络的地址范围是呢?因为类中用表示网络标识,首位需要保留为,因此剩下的能够表示的最大数字为,末位也需保留,因此类网络地址的取值范围为。
示意图如下:
B类IP
C类IP
D类IP
E类IP
IP分类小结
3.1.2、子网掩码
修改子网掩码为局域网扩容
最终可用范围为:,可用地址共计个。嗯?是什么东东?其实这个值是子网掩码的简写方式,之前算出来的子网掩码为,转换为二进制,一共存在个,因此可以简写为。
如何判断两个处于同一个网段
网络地址 = 地址 “位与” 子网掩码。
,转换为十进制为。
,转换为十进制为。
子网掩码小结
3.1.3、IP协议核心流程
但在实际的网络通信过程中,可能有时数据发送的链路非常遥远,如你从中国向日本网友发送一条数据,那么由于一些网络抖动、物理介质损坏都会导致数据丢失。但此时又该如何确保数据“安稳”到达目的地呢?
正因为路由控制的存在,所以即使网络复杂多变,也能够通过路由器的控制将数据“安稳”送达至目的主机。
跳:数据包经过一台路由器就是一跳。好比一个网络中存在四个路由器:,如果局域网中的主机要给局域网中的主机发送数据,从理论上来说就会经过三台路由器,也就是会经过三跳。
3.1.4、IPv4与IPv6
3.2.1、TCP协议简介
当数据接收完成后,会用校验和函数来检验数据是否正确,在发送方和接收方都需要计算该值,发送方计算后会将该值放在头中携带发送,接收方接收到数据后,也会再次计算该值,再与报文头中的值进行比对,确认数据的正确性。
3.2.2、连接管理机制 - 三次握手与四次挥手
想要了解清楚这个问题的答案,那么得先了解建立与关闭连接的过程。
TCP的三次握手
当然,这个过程略微有些难理解,换个日常生活的例子来快速理解一遍!
TCP的四次挥手
当“三次握手”完成后,客户端和服务端之间会成功建立连接,从此开启双方端到端之间的数据传输,当一方数据传输完成后,会尝试中断连接,因此又会经历“四次挥手”的过程,如下:
本质上“三次握手与四次挥手”就是在指建立与关闭连接的过程,搞明白建立和关闭连接的过程后再来看看最开始的问题:“为什么是三次握手,四次挥手!”
为什么TCP是三次握手,四次挥手
3.2.3、TCP中的沾包问题
沾包问题:多个数据包在一块儿,无法确定每个数据包之间的分割边界,因此从应用层的角度看来,就好像多个数据包“沾”在了一起。
沾包问题解决方案
3.2.4、TCP协议中的其他核心概念
3.3.1、UDP的报文头
3.3.2、UDP核心流程
正因为如上特性,因此的传输速度仅受到数据生成的速度、计算机算力和传输带宽的限制。
因为由于高效的传输性能,因此常备应用在广播通知、音频通话、视频传输等多媒体数据流业务,而且这类业务中,如果有一个数据包丢失,在很短的时间内就会有另一个新的数据就会替换它,因此就算数据传输不可靠也无关紧要。
3.3.3、UDP中的丢包问题
丢包问题解决方案
3.3.4、TCP与UDP之间的区别
这里面牵扯到很多原因,有历史原因,也综合考虑了服务器负载、网络复杂度、服务器数量/网络带宽成本问题、实现难度等多方面因素导致的。
不过有时候之所以会看到“消息发送失败的红色感叹号”,但对方又收到了这个消息的情况,就是因为客户端发出的消息,服务器已经收到并转发成功,但客户端由于网络原因没有收到服务器的应答包引起的。也包括网络比较差的情况下,信息发送之后,对方接收到的顺序跟你发出的不一致,这个也是由于无序导致的。
如果无法穿透,那则无法进行通信,无法穿透的原因也可能由于地理位置、网络类型限制等多方面因素导致。
通信翻译过来也就是端到端通信,在模型中,服务器只作为客户端地址的中转站存在,不需要承担高昂的流量成本。