概述
计算机网络的核心是一系列协议,总称为"网络协议"(Internet Protocol Suite)。它们对计算机如何连接和组网,做出了详尽的规定。理解了这些协议,就理解了互联网的原理。
五层模型
计算机网络的实现,分成好几层。每一层都有自己的功能,就像建筑物一样,每一层都靠下一层支持。用户接触到的,只是最上面的一层,根本没有感觉到下面的层。要理解计算机网络,必须从最下层开始,自下而上理解每一层的功能。
如何分层有不同的模型,有的模型分七层,有的分四层。我觉得,把互联网分成五层,比较容易解释。
网络五层如上图所示,最底下的一层叫做"实体层"(Physical Layer),最上面的一层叫做"应用层"(Application Layer),中间的三层(自下而上)分别是"链接层"(Link Layer)、"网络层"(Network Layer)和"传输层"(Transport Layer)。越下面的层,越靠近硬件;越上面的层,越靠近用户。每一层都是为了完成一种功能。为了实现这些功能,就需要大家都遵守共同的规则。大家都遵守的规则,就叫做"协议"(protocol)。
实体层
电脑要组网,第一件事要干什么?当然是先把电脑连起来,可以用光缆、电缆、双绞线、无线电波等方式。这一层的主要功能就是把比特位转换位电信号,为链路层提供在真实介质上数据传输功能。
链接层
使用物理层的数据传输功能,为网络层提供点对点的数据通信服务。链路层有很多协议,如以太网协议,SLIP协议、PPP协议等等。下面以常用的以太网协议举例说明链路层的功能:
以太网规定,一组电信号构成一个数据包,叫做"帧"(Frame)。每一帧分成两个部分:标头(Head)和数据(Data)。
数据帧"标头"包含数据包的一些说明项,比如发送者、接受者、数据类型等等;"数据"则是数据包的具体内容。"标头"的长度,固定为18字节。"数据"的长度,最短为46字节,最长为1500字节。因此,整个"帧"最短为64字节,最长为1518字节。如果数据很长,就必须分割成多个帧进行发送。
上面提到,以太网数据包的"标头",包含了发送者和接受者的信息。那么,发送者和接受者是如何标识呢?以太网规定,连入网络的所有设备,都必须具有"网卡"接口。数据包必须是从一块网卡,传送到另一块网卡。网卡的地址,就是数据包的发送地址和接收地址,这叫做MAC地址。每块网卡出厂的时候,都有一个全世界独一无二的MAC地址,长度是48个二进制位,通常用12个十六进制数表示。前6个十六进制数是厂商编号,后6个是该厂商的网卡流水号。有了MAC地址,就可以定位网卡和数据包的路径了。
网卡 Mac地址网络层
以太网协议,依靠MAC地址发送数据。理论上,单单依靠MAC地址,上海的网卡就可以找到北京的网卡了,技术上是可以实现的。但是Mac地址不具有定位功能,单单从48位的二进制Mac地址看不出来该网卡是上海的还是北京的。就好比只知道一个人的身份证号码,想找到这个人,很费劲。但是如果能从身份证上找到这个人的归属地,那就可以大大缩小查找范围,这就就产生了网络层。
规定网络地址的协议,叫做IP协议。它所定义的地址,就被称为IP地址。目前,广泛采用的是IP协议第四版,简称IPv4。这个版本规定,网络地址由32个二进制位组成。以后IPv6应该会越来越普及。
习惯上,我们用分成四段的十进制数表示IP地址,从0.0.0.0一直到255.255.255.255。互联网上的每一台计算机,都会分配到一个IP地址。这个地址分成两个部分,前一部分代表网络,后一部分代表主机。用过网络部分可以找到一个IP地址具体属于哪个网络,通过主机部分可以在一个IP地址所属的网络中定位到该IP地址所在的计算机。所以网络层的功能就是寻找目的主机的位置。
网络层的数据叫做IP数据报。具体来说,IP数据报也分为"标头"和"数据"两个部分,"标头"部分主要包括版本、长度、IP地址等信息,"数据"部分则是IP数据包的具体内容。
IP数据包把IP数据报放进以太网数据包后,以太网数据包就变成了下面这样:
包含有IP数据报的数据帧IP数据报的"标头"部分的长度为20到60字节,整个数据报的总长度最大为65,535字节。因此,理论上,一个IP数据报的"数据"部分,最长为65,515字节。前面说过,以太网数据包的"数据"部分,最长只有1500字节。因此,如果IP数据包超过了1500字节,它就需要分割成几个以太网数据包,分开发送了。
传输层
传输层的主要作用是使用端口号将网络层主机对主机的通信转换成进程对进程的通信。也就是说,我们还需要一个参数,表示这个数据包到底供哪个程序(进程)使用。这个参数就叫做"端口"(port),它其实是每一个使用网卡的程序的编号。每个数据包都发到主机的特定端口,所以不同的程序就能取到自己所需要的数据。
端口是0到65535之间的一个整数,正好16个二进制位。0到1023的端口被系统占用,用户只能选用大于1023的端口。不管是浏览网页还是在线聊天,应用程序会随机选用一个端口,然后与服务器的相应端口联系。
传输层的数据叫做数据段,也是由"标头"和"数据"两部分组成,如下图所示:
数据段"标头"部分主要定义了发出端口和接收端口,"数据"部分就是具体的内容。然后,把整个数据段可以放入IP数据报的"数据"里面,而前面说过,IP数据报又是放在以太网数据帧之中的,所以整个以太网数据包现在变成了下面这样:
包含有数据段的以太网帧应用层
应用层就是具体的应用程序了,收发传输层的数据,并进行解析。这是最高的一层了,直接面对用户。应用层的主要功能是封装或者解析具体应用的数据。
现在的以太网的数据包就变成下面这样:
具体的帧数据
网友评论