目录
一. 计算机网络的发展
二. 网络协议的认识
2.1 对于协议分层的理解
2.2 TCP/IP五层协议模型
2.3 OSI七层模型
三. 网络传输的流程
3.1 同一网段中计算机通信的流程
3.2 不同网段中计算机设备的通信
3.3 对于IP地址和MAC地址的理解
3.4 数据的封装和解包
四. 总结
独立模式:每一台计算机之间都是相互独立的,如果几台计算机要协同工作,需要相互之间传输数据,那么就需要人工将数据从一台计算机拷贝到另一台计算机。
网络互联:将多台计算机连接在一起实现数据共享。
局域网:随机互联网技术的发展,计算机数量的增多,通过交换机和路由器,将一定区域内的所有计算机连接起来,让他们可以相互通信。
广域网:随着计算机数量的增多,将更大范围、更多计算机连接起来的网络,可称为广域网。广域网和局域网是相对的概念,在中国境内,我们可以认为,每个省的网络属于局域网,而全国范围的网络是广域网,而在全球范围内,又可以认为中国的网络属于局域网。
软件的设计是分层的,分为前端和后端,前端就是给用户的界面,后端进行数据处理、数据运算等工作,用户要通过前端将信息交付给后端进行处理,后端也要将处理结果反馈给前端,前端和后端,就可以被视为软件的两层。网络协议的设计也是分层的。
分层设计的好处在于:(1). 更好的适应复杂的场景。 (2).实现不同功能之间的解。
以图2.1所示的用户通信场景为例,上层用户遵循语言协定(汉语、英语等),下层的通信设备也遵守各自的协议,如:采用电脑发微信,不同电脑之间就要遵守特定的电脑协议。此时,如果两名老外要通过英语发送信息,那么就只需要改变上层的用户协议,而底层通信设备的协议不用修改,再比如通信设备变为了卫星电话,那么只需改变通信设备之间的协议即可,用户层协议无需修改。这就是协议的分层设计,能够实现不同功能间的解耦。
TCP/IP是一组协议的代名词,TCP表示传输层协议,IP表示网络层协议。TCP/IP协议可分为以下五层,每一层都呼叫下一层网络来实现自身需求。
TCP/IP的5层协议在计算机体系中的实现如图2.2所示,操作系统至少要实现从数据传输层到物理层、路由器至少要实现从网络层到物理层、交换机至少要实现从数据链路层到物理层、而集线器则是仅仅实现在物理层。
OSI七层模型从逻辑上将网络通信分为了七层,每一层都有对应的功能、硬件设施以及协议。
综上我们发现,OSI七层模型和TCP/IP五层模型的低四层几乎是相同的,差别在于上层,OSI在操作系统之上的用户层面,划分出了会话层、表示层和应用层,而TCP/IP则直接归一化成应用层,OSI是一种非常理想的理论指导模型,TCP/IP是一种已经在网络工程中被成熟应用的设计模型,这是因为在操作系统之上的用户软件,场景非常复杂,难以同一制定协议,因此上层协议的维护便交给了用户来实现,就有了TCP/IP五层协议模型。
图2.3展示了OSI七层模型每层对应的TCP/IP模型及在计算机体系中的位置。
在我们的一般性认识中,同一网段的计算机能够实现直接通信,如电视机投屏,只要手机和电视连接在同一网络下,就可以直接投屏,从手机向电视投屏,本质就是同一网段中的计算机通信。
图3.1展示了统计网段中计算机设备通信的具体流程,可见,两台设备的通信并不是一台设备直接将数据发送给另一台设备,而是要经过层层传输才能够到达。根据TCP/IP五层模型,发送数据的设备,数据压从上层传递至下层,通过以太网将数据发送至另一台设备,另一台设备也要从下层到上层逐步获取数据。
如图3.2所示的常见,同一网段中,可能存在多台计算机设备,那么如何确保同一网段中两台设备之间通信,其余的计算机设备不受干扰呢?
这就要涉及到主机的地址了,在局域网中,每台主机都有唯一的Mac地址,用于标识主机的唯一性,可用于识别数据链路层中相连的节点, 假设图3.2中的设备A要给设备C发送信息,设备B由于处于同一网段中,也会看到设备A发送的信息,但是设备A在传送信息的时候,会带上目标设备的Mac地址,设备B在检测到信息不是发送给它的时候,就会将信息自动屏蔽。
如果某个网络中两台设备一同发生数据,导致数据信号在网络传输中发生碰撞,就会出现数据冲突问题,数据传输层要负责进行冲突检测,如果发生冲突,数据就要重发。如果向某个网络中传入大量垃圾数据,就会不断造成数据冲突,这就是网络攻击的一种方式。
结论:在局域网中,通过Mac地址可以标识主机的唯一性,可用于识别数据链路层中相连的节点。
在广域网中,每台计算机设备都与其专属的IP地址,用于确定不同网段中发送数据的源主机和接收数据的目标主机。如图3.3所示,不同网段中计算机设备的通信,需要由路由器充当连接各个网段的桥梁,实现跨网段的数据传输。
对于IP地址的理解:
对于Mac地址的理解:
以图3.4的模型,解释IP地址和MAC地址的区别,在广域网中,我们希望将数据从主机A发送到主机B,那么,主机A和主机B的地址,就是在通信中所讲的IP地址。在数据链路层,主机A发送的数据要依次经过路由器1、2、3才能到达主机B,假设现在数据处于路由器1,那么路由器1的地址就称为当前的MAC地址,而接下来要经过的路由器2的地址,就称为下一个MAC地址。
源主机向下传输数据的时候,每一层都要添加一些属性信息,在每一层添加的信息被称为报头,自顶向下添加报头的过程,就是数据封装的过程。目标主机在自底向下接受数据的时候,在每一层都要去掉对应的报头,去掉报头的过程过程就是数据的解包过程。
如:源主机数据在经过网络层的时候,要添加对应的IP地址信息,用于查找目标主机,而数据链路层需要添加下一个MAC地址,以便于找到数据传输过程中下一个路由器的位置。