闫志伟的网络日志 » 首页 » 关于 » 归档

关于互联网协议的模型问题,有很多分层方法。

OSI参考模型是国际标准化组织(ISO)和国际电报电话咨询委员会(CCITT)联合制定的开放系统互连参考模型。这个模型把网络通信的工作分为7层,自下而上分别是物理层、数据链路层、网络层、传输层、会话层、表示层和应用层。

这种分法显得过于复杂。TCP/IP协议将其简化为4层,自下而上分别是,网络接口层、网络互连层、传输层和应用层,常被视为简化的七层OSI模型。两种分法的对应关系如下:

还有一种分法,将TCP/IP模型的最底层网络接口层分为物理层和链接层,整个模型分为5层。阮一峰在这里这里分别从系统和用户的角度对整个互联网的五层进行了专业的介绍。

今天,我在网上看到一篇文章,它抛开很多抽象难懂的专业术语,直观和通俗的介绍了网络通信的五层模型。


作者:Vamei Z 来源:十五言

http://www.15yan.com/story/iVwHkHJcyJm/

万花筒一样的互联网,是如何通信的呢?Skype的视频电话,如何从中国播往美国?Twitter的蓝色小鸟,如何从巴西飞往西伯利亚?黑客们又是如何窃取五角大楼的秘密?所有的一切,都有赖于一套网络协议。

协议是通信的双方约定好的通信法则。长城上放狼烟,通过火光远距离通信。人们将火光这一物理信息向上翻译为更容易解读的信息,比如闪烁的狼烟代表骑兵入侵。发电报的摩尔斯码也同样利用了不同层次的协议。摩尔斯码底层是长短信号。通过组合短信号和长信号,摩尔斯码向上翻译为英文字母。比如三个短信号为S,三个长信号为O,SOS就是***—*** (*代表短信号,-代表长信号)。”***= S, —=O”就是摩尔斯码层的协议。然而更进一层,人们约定SOS代表求助。当我们发出信息时,按照求救、SOS、***—***的顺序,求救被翻译成摩尔斯信号。接收到信号的人会按照反向的顺序,重构出求助信息。

计算机也要遵循协议,来实现计算机的通信。计算机的协议从低到高分为多个层次。在底层,两台计算机只能通过0或1的二进制信号通话。信息在向高层协议翻译的过程,信息越来越容易被人解读。

物理层

所谓的物理层,是指光纤、电缆或者电磁波等真实存在的物理媒介中的通信。这些媒介可以传送物理信号,比如亮度、电压或者振幅。对于数字应用来说,我们只需要两种物理信号来分别表示0和1,比如用高电压表示1,低电压表示0,就构成了简单的物理层协议。针对某种媒介,电脑可以有相应的接口,用来接收物理信号,比如用无线网卡接受无线信号、网口接受光纤信号。这些物理信号会解读成0/1序列。

由于缺乏地址指向,物理层的通信不具有方向性。所有连入同一媒介的设备都可以发送或者接收0/1信息。

链接层

在链接层,信息以帧为单位传输。所谓的帧,是符合特定规则的一段0/1序列。链接层协议能识别物理层的0/1序列中所包含的帧,比如说根据一定的0/1组合识别出帧的起始和结束。

在帧中,有收信地址和送信地址。信息可以定向的传播给某个接收者。帧中还有能够检验传输错误的校验序列。帧中最重要的是传输的数据。与数据相配套,帧中也有数据的类型信息。帧就像是一个信封,把数据包裹起来。

以太网和WiFi是现在最常见的链接层协议。通过链接层协议,我们可以建立局域的以太网或者WiFi局域网,让同一局域网络中的两台计算机通信。连接层就像一个社区的邮差,社区中的人可以将一封信(帧)交给他,让他送给同一社区的另一户人家。

社区小邮差

网络层

链接层是一个社区小邮差,那么不同的社区之间该如何通信呢?我们需要一个“中间人”。这个“中间人”需要能同时理解两种局域网的帧。路由器就是为此而产生的中间人。

一个路由器有多个网络接口,每个接口接入一个局域网络。这样,路由器就成为了跨越局域网的桥梁。网络A的帧经过路由前往另一个网络B时,路由器通过网络A的接口接收帧。路由器的处理器读取帧的信息,根据网络B的格式改写帧,再经网络B的接口发送。路由器就像是在两个社区都有分支的邮局。一个社区的邮差将信送到本社区的邮局分支,而邮局会通过自己在另一个地区的分支将信转交给另一个社区的邮差。

链接层的帧中只包含了局域网内的地址。跨网通信时,我们需要增加一个全球通用的邮编,也就是IP地址。我们在连接层的数据部分下功夫,让连接层的数据符合IP协议。根据IP协议,写信时,要在信纸上(IP协议,即帧的数据部分)写这封信的出发地址和最终到达地址,而在信封上(帧的地址)写上本地邮局分支的地址。在邮局信被打开,邮局工作人员看到目的地的IP地址,根据邮局的记录,找到该目的地在新的网络中的本地地址,重新封装为帧发送。

转交邮局

如果目的地并没有在该路由器可以直接通信的网络中,路由器会把它转交给下一个邮局。有时候一封信要通过多个邮局转交,才能最终到达目的地。邮局将分离的局域网络连接,构成了覆盖全球的互联网。

传输层

互联网上的两台计算机可经由上面的三层协议通信。但一台计算机中可以有多个运行的程序,即多个进程。每个进程都可能有通信的需求。这就好像一所房子里住了好几个人,如何让信息精确的送到某个人手里呢?遵照之前相同的逻辑,我们需要在信纸上写上新的信息——收信人的姓名,才可能让信送到。传输层就在信纸上增加“收信人”信息。传输层协议就像是房子的管理员。管理员从邮差手中接过信,会根据“收信人”,将信送给房子中的某个人。

管理员

传输层协议,比如TCP和UDP,使用端口号来识别收信人。在写信的时候,我们写上目的地的端口。当信到达目的地的管理员手中,他会根据传输层协议,识别端口号,将信送给不同的人。

TCP和UDP协议是两种不同的传输层协议。UDP协议类似日常的信件交流,一封信中包含了尽可能完整的信息。TCP协议则好像两个情人间的频繁通信。一个小情人要表达的感情太多,以致于连续写了好几封信。而另一方必须将这些信按顺序排列起来,才能看明白全部的意思。TCP协议还有控制网络交通等功能。

应用层

通过上面的协议,我们已经可以在任意两个进程之间通信。然而,不同行业的人会有不同的写信规范。比如说律师之间的通信,会用严格的律师术语,以免产生纠纷。再比如外交官之间的通信,必须符合一定的外交格式,以免发生外交误会。再比如间谍通过暗号来传递加密信息。

应用层协议是对信件内容进一步的用语规范。应用层的协议包括用于Web浏览的HTTP协议,用于传输文件的FTP协议,用于Email的IMAP等等。

外交通信

通过多个层次的网络协议,我们从原始的0/1序列出发,最终允许互联网上的分布于两台计算机的两个进程以规范的格式相互通信,创造出一个五彩斑斓的网络世界。

(完)