本文讲述了互联网OSI模型、数据包封包拆包、路由器的概念、还有IP协议和TCP协议的关系。
互联网模型:
要谈数据通信,就不得不先讲述分层模型的概念
OS I RM:开放系统互连参考模型(Open System Interconnection Reference Model)
如下图一
图一
上图一左边是OSI模型,右边是TCPIP协议栈分层模型,可以看得出,两个模型有很清晰的对应关系。
两个模型的下四层是一一对应的,而OSI模型的上三层对应到TCPIP协议的应用层,所以在谈论“应用层”概念的时候,要注意讨论的是哪个模型。
图二
如图二,依据标准的OSI术语,每层间对应的“协议数据单元”(Protocol Data Unit,简称PDU)的名称都是不同的
物理层为“位”(bit),即平常讲的二进制数位流,在物理传输介质上以二进制数字信号传输(简单的如高电平代表“1”,底电平代表“0”)。
物理层的传输介质包括:
- 同轴电缆(coaxical cable):细缆和粗缆,目前已经不常用;
- 双绞线(twisted pair):UTP(Unshielded Twisted Paired , 非屏蔽双绞线),这种即平时常用的网线;STP (Shielded Twisted Pair,屏蔽双绞线),这种线适用于电磁干扰恶劣的工业环境;(这两种线使用铜线做介质,到用户家虽然看起来就一两根,但在运营商的管线里是几千条几百条线在一起的大对线缆,经常是偷铜者的目标)
- 光纤(Optical Fiber):使用光信号来传播数字信号的介质,坐火车到处看到路边写的大标语:“光纤没铜,挖了没用”就是指这个;
- 无线电波(wireless radio);
数据链路层PDU名称叫数据帧“Frame”,例如帧中继技术名称叫Frame Relay ,其数据单元名字叫“帧”,对以太网来说是以太帧。
网络层PDU的名称叫数据包Packet, 因为IP协议在这一层,所以互联网上的数据一般被称为IP数据包。
传输层PDU的名称叫数据段Segment ,这个层面最著名的是传输控制协议TCP和用户数据报协议UDP。
会话层Session 的PDU叫SPDU;
表示层Presentation的PDU叫PPDU;
应用层Application的PDU叫APDU;
数据包封包和传送过程:
图三
如上图图三,用户数据报文的一个封装过程,应用程序的数据使用TCP协议进行传输,用户数据被切割成合适的数据片段后,被加上网络层协议IP的首部字节,成为IP数据包,然后被加上数据链路层的以太网首部,成为以太网数据帧,再由以太网驱动程序将帧转化为二进制位流,在物理层面传送。
数据包经路由器传输的过程,下图图四:
图四
上图图四是两个主机通过一台交换机和一台路由器通信的示意图。二层交换机仅跨越OSI模型的物理层和数据链路层,所以称为二层交换机,仅为所有连接的主机提供数据链路层间的互通功能。
路由器是跨越物理层、数据链路层、网络层的设备。正像主机和服务器有自己的操作系统windows、unix等一样,路由器也有自己的操作系统(OS)。目前业界最大的路由器提供商为CISCO 思科,由美国斯坦福大学两个都是计算机主任的一对夫妇创立,自1984年生产第一台路由器来,如今此公司生产的路由器等设备承载了互联网80%左右的数据流量。其设备操作系统为IOS网际操作系统。Cisco的名字取自Francisco,那里有座闻名于世界的金门大桥,此公司一直认为自己是软件公司,主要提供IOS操作系统,而不是硬件设备提供商。
最简单的路由器的概念是一台装有两块网卡的主机,主机内部安装的路由软件可以根据IP地址在两块网卡间转发IP数据包,两块网卡各有一个IP地址,具有两个物理接口的路由器同这个道理是类似的。
由上图图四可以看到,IP地址的概念是属于IP协议,IP协议是属于OSI模型第三层网络层的,所有跨越网络层的设备都需要有IP地址。最左边的主机同路由器的左侧接口各有一个IP地址,使用IP协议通信;最右边的服务器和路由器右侧接口各有一个IP地址,使用IP协议通信;路由器的不同接口的IP地址是属于不同的IP子网的,路由器就是在不同IP子网间传送IP数据包的设备,路由是根据IP数据包里的地址选择正确传递路径的过程。
IP
协议和TCP协议:
图五
上图图五是两个主机通过多个路由器通信的过程,这是当今互联网的基本组成的场景。抽象一下上图的拓扑:主机和中间的多个路由器是拓扑图上的点,各个点之间是线,所以,互联网的拓扑就是由无数点和线组成的网络,从这里深究下去,互联网拓扑的设计可以说就是“图论”。点和点之间是不同的IP子网,上图两台主机间相互通信的过程是由无数个IP数据包(packet)在之间传送的过程构成。
在中间的A到E的路由器会分析由主机发出的每个数据包的IP包头(网络层信息),根据里面的IP地址决定下一个接收的路由器,最终到达目的主机。决定的过程叫IP数据包选路的过程,即路由过程。许多路由器在一起为数据包选择路径所依赖的法则叫做路由协议。
上图可以看到,从一侧到另一侧有不同的路径:
假设从一侧发往另一侧一封email,email的数据类被拆分为很多IP数据包,并逐层加上每层头数据字节,根据A到E这些路由器的路由协议和网络状况,这些IP数据包会走不同的路径到达另一侧,到达的顺序不同于发送的顺序,在另一侧的主机会按数据包的发送顺序重新排列,并一层层剥离PDU的包头数据,提取出里面的应用数据,重构为一封email。
在上面这个过程中,有些数据包甚至会损坏或者丢失,需要重传这些数据包。这样,为了保障IP数据包传送的正确顺序和不被丢失,需要其它的协议跟IP协议一起工作,这就是OSI模型中第四层的传输控制协议(TCP)的由来,如下图图六。TCP协议包括重传数据包和在接收端按数据包的发送顺序重新排列的机制,可以保障发送的每个数据包都可以被正确接收。email,www等互联网数据业务都是使用TCP传输的,互联网最初是为数据业务所设计的,所以大家都将互联网称为TCP/IP网络。
图六
TCP确保每个数据包都可以被接受到的机制使之被归为“有连接的传输协议”,可以看到在图六中,还有一个跟TCP并列的传输层协议:用户数据报协议(UDP),这个协议同TCP不同的是,并不能保障每个发送的数据包都被接收到,所以,UDP被归为“无连接的传输协议”,UDP更适合不追求数据的准确性,而关注时延、抖动的音频和视频应用,以后会谈到。