2、OSI参考模型与TCP/IP模型
一、标准化组织
为了实现厂商之间的互操作,就需要标准化组织制订相应的通信标准,让各个厂商按照标准去执行,常见的标准化组织如下。
- IETF:负责开发和推广互联网协议(特别是构成TCP/IP协议族的协议)的志愿组织,通过RFC发布新的或者取代老的协议标准。
- IEEE:IEEE制定了全世界电子、电气和计算机科学领域30%左右的标准,比较知名的有IEEE 802.3、IEEE 802.11等。
- ISO:在制定计算机网络标准方面,ISO是起着重大作用的国际组织,如OSI模型,定义于ISO/IEC 7498-1。
二、网络参考模型
1、OSI模型
OSI模型,由国际化标准组织ISO收录在ISO7489标准中并于1984年发布。OSI参考模型又被称为七层模型,由下至上依次为。
- 物理层:在设备之间传输比特流,规定了电平、速度和电缆针脚等物理特性。
- 数据链路层:将比特组合成字节,再将字节组合成帧,使用链路层地址(以太网使用MAC地址)来访问介质,并进行差错检测。
- 网络层:定义逻辑地址,供路由器确定路径,负责将数据从源网络传输到目的网络。
- 传输层:提供面向连接或非面向连接的数据传递以及进行重传前的差错检测。
- 会话层:负责建立、管理和终止表示层实体之间的通信会话。该层的通信由不同设备中的应用程序之间的服务请求和响应组成。
- 表示层:提供各种用于应用层数据的编码和转换功能,确保一个系统的应用层发送的数据能被另一个系统的应用层识别。
- 应用层:OSI参考模型中最靠近用户的一层,为应用程序提供网络服务。
2、TCP/IP参考模型
因为OSI协议栈比较复杂,且TCP和IP两大协议在业界被广泛使用,所以TCP/IP参考模型成为了互联网的主流参考模型。
三、TCP/IP参考模型简介
1、物理层
数据到达物理层之后,物理层会根据物理介质的不同,将数字信号转换成光信号、电信号或者是电磁波信号。物理层的PDU被称为比特流,物理层位于模型的最底层,负责比特流在介质上的传输,规范了线缆、针脚、电压、接口等物理特性规范。常见的传输介质有:双绞线、光纤、电磁波等。
- 双绞线,当今以太网最常见的传输介质,按照抗电磁干扰能力还可以分为,STP屏蔽双绞线和UTP非屏蔽双绞线。
- 光纤传输,按照功能部件可分为光纤和光模块。光纤:光传输介质,简单的说,就是一根玻璃纤维,用于约束光传输的通道。光模块:将电信号与光信号互转的器件,产生光信号。
- 串口电缆在WAN中大规模使用,根据WAN线路类型不同,串口电缆在设备上连接的接口类型也不同:异/同步串口、ATM接口、POS接口、CE1/PRI接口等。
- 无线信号的传输可以通过电磁波进行,例如:无线路由器将数据通过调制以电磁波发送出去,移动终端的无线网卡将电磁波解调,得到数据,完成从无线路由器到移动终端的数据传输。
2、数据链路层
数据链路层位于网络层和物理层之间,可以向网络层的IP、IPv6等协议提供服务。数据链路层的PDU被称为Frame(帧),以太网是最常见的数据链路层协议。数据链路层位于网络层和物理层之间,向网络层提供“段内通信”。负责组帧、物理编址、差错控制等功能。常见的数据链路层协议有:以太网、PPPoE、PPP等。如图,A和B通过串行链路互联,此时组成了一个P2P网络,在一条链路上只有两台设备,所以A发送的数据B一定可以收到,P2P网络接入能力不强。
如图,为了确保四台PC能够互相通信,对于PC1来讲就需要有三个网口跟其他PC互联,PC的网口不能无限增加,如果新加一台PC5,PC5还需要拉四根线到其他的四台PC上,不利于扩展布线难度很大。为了解决这个问题,就可以将四台PC都拉一根网线到交换机上,交换机上的网口数量非常多,提供了超强的接入能力,接到同一台交换机上的PC就可以互相通信了,同时也解决了P2P网络接入能力弱的问题,此时PC和交换机组成的网络就是以太网。
如图,四台PC都接到了一台交换机上组成一个二层网络,为了实现PC1发送的数据包仅被PC2收到,不被PC3/PC4收到,可以通过mac地址实现。每台PC的网卡都有一个唯一的mac地址,mac地址用于二层网络通信,对于交换机来讲,会形成一张mac地址表用于报文的转发。mac地址由48比特(6个字节)长,12位的16进制数字组成。例如:48-A4-72-1C-8F-4F。如图,当PC1访问PC2时,PC1发送的报文会封装二层头部,二层头部有两部分组成,一个是源mac,标识数据是谁发的,一个是目的mac,标识数据是发给谁的。报文的smac A-A-A dmac B-B-B,当报文到了交换机上,交换机根据目的mac查mac地址表进行报文的转发,确保报文只让PC2收到,其他PC是收不到的。
3、网络层
网络层则负责数据从一台主机到另外一台主机之间的传递,网络层的PDU被称为Packet(包)。网络层为网络中的设备提供逻辑地址、负责数据包的寻径和转发,常见协议如IPv4,IPv6、ICMP,IGMP等。对于交换机来讲,mac地址表的形成需要流量的触发,比如PC1访问PC2,交换机会学习数据包的smac,将PC1的mac关联在1口上,然后根据dmac查mac地址表,因为交换机还没有学习到PC2的mac,交换机针对未知mac地址泛洪处理,此时PC2/PC3/PC4都会收到,但是只有PC2才会给PC1回复,因为dmac是发给PC2的,又不是发给PC3/PC4的,这时交换机才会从2口学习到PC2的mac地址。根据交换机的工作机制,如果让所有的PC都接到交换机上,通过mac地址进行通信的话,会造成资源的浪费。为了避免这种情况,就通过路由器进行隔离,将一个大的二层网络划分成多个小的二层网络,二层网络和二层网络之间的通信使用IP地址。
如图,当PC1访问PC3时,如果只封装数据链路层头部smac A-A-A dmac C-C-C,AR1收到数据包,因为dmac不是我,AR1直接将数据包丢弃。此时就需要额外封装网络层头部data | smac A-A-A dmac E-E-E | sip 192.168.1.1 dip 192.168.2.1,SW1根据dmac将报文发给AR1。AR1发现dmac是发给我的,就继续解封装看网络层头部,发现dip为192.168.2.1不是发给我的,根据dip查路由表从1口发出并重新封装二层,data | smac F-F-F dmac C-C-C | sip 192.168.1.1 dip 192.168.2.1。SW2根据dmac将报文发给PC3,PC3发现dmac是发给我的,就继续解封装看网络层头部,发现dip为192.168.2.1是发给我的,就继续解封装看到具体的数据。数据包在传递的过程中sip和dip是不会变的,但是每经过一个二层网络都会重写二层,因为mac地址只在二层网络内部生效。交换机转发数据包的依据就是mac地址表,路由器转发数据包的依据就是路由表,路由表的生成方式后续讨论。
4、传输层
传输层协议定义了通信两端之间是否需要建立可靠的连接关系,如果需要那么传输层就需要封装TCP的头部,如果不需要就封装UDP的头部。
对于PC1来讲,我怎么保证发出的数据包PC3一定收到了,此时额外封装一个TCP的头部,通过TCP的三次握手机制建立端到端的可靠连接,通过TCP头部中的Sequence number和Acknowledgement number,确保可靠性和有序性。
5、应用层
当PC3收到数据包之后,为了判断交给自己哪个应用程序去处理,PC1发出的数据包还需要额外封装一个应用层头部,如果封装的应用层头部是HTTP,那么PC3就交给自己的WEB浏览器去处理,如果封装的应用层头部是DNS,那么PC3就交给自己的DNS程序去处理。
四、数据通信的过程
1、发送方数据封装
假设你正在通过网页浏览器访问华为官网,当你输入完网址,敲下回车后,计算机内部会发生下列事情。
- 发送方为数据添加HTTP的应用层头部,此处省略。
- 再添加TCP的传输层头部提供可靠性。
- 再添加IP网络层头部,用于三层转发。
- 再添加数据链路层头部,用于二层转发。还会添加一个FCS字段,用于完整性的校验。
- 封装完毕之后,会将数据传递到物理层。
- 根据物理介质的不同,物理层负责将数字信号转换成电信号,光信号,电磁波(无线)信号等。
- 转换完成的信号在网络中开始传递。
2、中间网络数据传输
封装好的完整数据,将会在网络中被传递。网络中的二层设备(如以太网交换机)只会解封装数据的二层头部,根据二层头部的信息进行相应的“交换”操作。网络中的三层设备(如路由器)只会解封装到三层头部,并且根据三层头部的信息进行相应的“路由”操作。
3、接收方数据解封装
经过中间网络传递之后,数据最终到达目的服务器。根据不同的协议头部的信息,数据将被一层层的解封装并做相应的处理和传递,最终交由WEB服务器上的应用程序进行处理。