目录
1、网络通信的本质
2、网络的发展
3、网络协议(TCP\IP协议)
3.1 协议实现通信的原理
3.2 协议的具体概念
3.3 协议的模型
4、数据链路层
5、网络协议栈和操作系统的关系
6、网络协议通信过程
6.1 通信过程的封装与解包
7、以太网通信
7.1 数据碰撞
结语
前言:
计算机网络通信是当代最重要的技术之一,它使得纵使相隔千里的两台计算机也能进行彼此通信,通信的本质是数据传递,网络通信即数据以网络为媒介传递给各个计算机。网络通信可以让全球计算机进行交流,全球计算机的硬件种类之多且操作系统各有所类,能够让这些彼此之间存在差异的计算机相互通信,最根本的原因就是让他们都遵守一个规则-网络协议。
1、网络通信的本质
网络通信虽说是计算机与计算机之间的“交流”,但是计算机要想理解通信的内容,就必须通过程序来实现,因为只有程序才可以对传递的数据做进一步分析(因为通信的数据实际上就是一堆二进制),简单来说,即发送方和接收方都要对通信数据(二进制)做同样的规划,即发送方和接收方都要用程序实现对通信数据的把控,因此在源头上可以将网络通信理解为进程间通信,只不过双方进程不在同一个机器上,而在不同的主机上。
2、网络的发展
①最初的计算机与计算机之间是相互独立的,就好比原始社会中各个大陆是不知道彼此的存在的,示意图如下:
②当出现网络后,原本独立的计算机就可以通过网络实现相互通信,就好比在原始社会中人们发明了船只等交通工具,让相邻的岛屿知道了彼此的存在,但是所能通信的范围很小,示意图如下:
③对上述通信条件进行范围扩大,即局域网(LAN)通信,局域网使得内部计算机可以相互通信,并且可以通过路由器与外部的计算机进行通信,就好比在一群岛屿中设置了一个飞机场,让相邻岛屿的人可以通过飞机去到外面的世界,示意图如下:
交换机是一种设备,他的作用是让局域网内部通信效率更高。
④在上述局域网通信的基础上,再次将范围扩大至广域网通信(WAN),他可以将远隔千里的计算机都连在一起进行相互通信,就好比世界各地都有飞机场,可以通过飞机飞往世界各地,示意图如下:
3、网络协议(TCP\IP协议)
计算机网络通信的传输媒介是依靠光信号,电信号,电磁波信号。 通过 "频率" 和 "强弱" 来表示表示二进制的0或1。上文提到,计算机与计算机之间是存在差异的,要让个体上存在差异的计算机进行彼此通信,则需要让他们共同遵循同一个协议,该协议就是网络通信协议,又称网络协议,从抽象层面上来看,协议就是一种规定好的数据格式。
3.1 协议实现通信的原理
1、网络通信是可以被该局域网中所有计算机看到的,比如主机A给主机B通过网络发送消息,那么其他主机也可以看到这个消息,这样一来彼此之间就不存在安全性和隐私性了,而协议可以保证只让接收方看到该消息,保证了安全性和隐私性。并且协议还提供加密。
2、协议可以保证发送方发送的数据可以被接收方精准的拿到。
3、当传输的数据在途中发生丢失或传输失败时,协议可以对此次数据进行重发,确保数据的完整性。
4、协议规定了数据在通信过程中如何被解释,比如数据在传递时如何进行编码、格式化,发送方该采用什么规则发送数据,接收方该采用什么规则接收数据,保证了数据的有效性。
3.2 协议的具体概念
协议是数据传输的额外附带品,比如发送和接收快递的时候,快递单子就是发送方和接收方共同遵守的协议,快递员依据快递单上的信息,就可以得知该物品的下一站是何处,当接收方拿到快递时,也会核实快递单上的信息,确认是否是自己的快递,待信息都核实完毕且正确后,才会拆开快递拿到里面的物品件(对应网络协议的数据内容),因此协议的目的只是为了让双方更好的拿到这个数据。
3.3 协议的模型
网络协议模型分为两种模型:1、OSI七层模型,2、TCP/IP五层模型。
OSI模型示意图如下:
OSI模型把网络通信在逻辑上分为了7层.,每一层都有对应的功能。不管是何种设备或者计算机,在进行网络通信时必须要经过上面7层逻辑才能保证正常通信。该模型的优点是将各个功能明确地区分开来,概念清楚,当某一层出问题时,我们只需要对该层进行排查即可,无需涉及其他层,方便维护。
但是此模型过于复杂,而TCP/IP五层模型较简易且更加贴近通信逻辑,因此网络通信协议中常常用TCP/IP五层模型来举例子。
TCP/IP五层模型示意图如下:
TCP/IP将网络通信分成了五层结构,每层结构的功能如下:
1、物理层: 用于以太网通信的网线、光纤等物理设备的工作在该层。
2、数据链路层: 负责物理层设备之间的通信,比如WiFi,交换机的工作就在该层。3、网络层: 通过ip地址定位源主机和目标主机,完成主机之间的通信(数据报传递),路由器工作在网路层。4、传输层: 分为TCP协议和UDP协议,负责将网络层的协议进行进一步分解,然后将分解出来的数据传递给下一层,能够精准的发送给具体进程。5、应用层: 通过代码的实现对将要通信的数据做处理,程序员的工作就是在应用层编写代码实现网络通信。
站在操作系统层面(除了应用层其他层面都是站在操作系统上的),整个网络协议栈最重要的是网络层和传输层,所以把整个网络协议叫做TCP\IP协议。
4、数据链路层
数据链路层只能让相邻的两个设备进行直接通信,而面对不相邻的设备,数据链路层采用“跳一跳”的方式进行通信,方法就是将路由器当作“跳板”,不断的跳转最后找到目标主机,示意图如下:
具体“跳跃”细节:在局域网内,每一台设备都有自己的唯一的标识符,该标识符就是mac地址,因为局域网通信就是根据mac地址的唯一性来定位主机的。主机A给主机B发消息,由于主机B不在主机A的局域网中,所以主机A会拿到路由器A的mac地址,然后跳到路由器A,如此逻辑,直至拿到主机B的mac地址,最后跳到主机B完成通信。
5、网络协议栈和操作系统的关系
网络协议栈实际上是操作系统里的一部分,他属于操作系统。示意图如下:
传输层和网络层实际上是操作系统内核的模块,他们属于操作系统的一部分。网络协议结构和操作系统的种类没有直接关系,即操作系统可以各不相同,但是网络协议栈必须全部人都要按照这个结构来遵守,这也是为什么不同的操作系统之间可以进行网络通信。
6、网络协议通信过程
从网络协议栈观看通信过程,示意图如下:
当主机A和主机B进行网络通信时,数据从主机A的应用层开始往下走,然后通过以太网协议(该协议用于实现链路层的数据传输)找到主机B,并从主机B的链路层一步一步往上走,最终达到主机B的应用层完成一次通信。
6.1 通信过程的封装与解包
从上图中可以得知数据的传输路径是从上到下,然后再从下到上,实际上数据传输到每一层时,该层都会对数据做相关处理,具体示意图如下:
一般把传输层的报文叫做数据段,网络层的报文叫做数据报,链路层的报文叫做数据帧。每一层会给上层传递下来的报文添加报头,报文=报头+有效载荷,把这种操作叫做封装。添加报头的目的是为了接收方拿到整个报文时,也可以从下往上的分析报头然后拿到有效载荷继续向上传递,最终接收方拿到信息-“你好”。
紧接着报文通过以太网协议传输给接收方,接收方对报文的解包过程如下:
接收方接收到报文后会依次向上交付,最后把信息内容呈现给用户,将封装与解包放在一起来看,发现是一个对称的过程,因此从逻辑上来观察,同层的协议在与对方的同层协议进行直接通信。最后总结得出:网络通信的过程就是不断的封装与解包。
7、以太网通信
在局域网中,每台主机都有自己唯一的标识符:mac地址,接收方之所以可以拿到发送方的数据,就是因为发送方知道接收方的mac地址,但是数据之所以可以精准发送至目标主机,不是根据目标主机的mac地址从而制定一条唯一的“路径”发送给目标主机,而是将数据发送给当前局域网内的每一个主机,只是其他主机会对比mac地址看看是不是发送给自己的,如果不是则会在链路层就丢弃这些数据,不会让数据继续向上传递。
以太网通信原理就好比上课点名:
以太网通信实际上是可以被所有人看到的,因此数据其实不是很安全,所以才有网络安全性质的工作。
7.1 数据碰撞
当以太网内多个主机相互发送数据,就会导致数据碰撞,因为路线只有一条,比如一个班里如果老师说话的同时学生也在说话,就导致每个人都听不清对方在讲什么,解决碰撞的方法是错峰运行。当然一个发送者的数据如果被碰撞了,发送者自己是知道的,所以这时候发送者就会运用碰撞避免的算法实现错峰运行。
使用交换机减少碰撞的概率:
结语
以上就是关于计算机网络通信基础概念的讲解,了解网络通信的基础框架是学习网络编程的基础,后续使用网络套接字实现网络通信时离不开网络通信的原理。
最后如果本文有遗漏或者有误的地方欢迎大家在评论区补充,谢谢大家!!