开放系统互联模型

开放系统互连模型(OSI)是由国际标准化组织(ISO)提供给网络架构师、软件工程师及设备制造商的一个用于开发互连系统的模块化的灵活框架。当需要通过网络传输数据的时候,每一层的输出都会把数据封装成能被下一层处理的形式。反过来,当数据被目标主机接收到之后,每一层的输入都是将数据解包成能被上一层处理的形式。

  1. 应用层 Application
  2. 表示层 Presentation
  3. 会话层 Session
  4. 传输层 Transport
  5. 网络层 Network
  6. 数据链路层 Data Link
  7. 物理层 Physical

例子:

用OSI模型来分析一个简单的上网冲浪的场景。假设你是个美国人,面前有一台MacOSX笔记本电脑,而你正坐在盐湖城的一个机场里。这时屏幕上弹出了个小窗,告诉你现在可以通过一个T-Mobile无线“热点”上网。你不知道那是个什么东西,但是窗口弹出的声音很好听,所以你就点了“Yes”。好了,你的笔记本电脑现在已经连上互联网了。

你打开了火狐程序——你的Web浏览器,然后告诉它你想要访问谷歌中文网页(www.google.cn)。然后,就弹出了一个中文界面的页面,你在这个(中文版的)谷歌上输入“蒙大拿州波茨曼的中国菜”,随后你就会得到一个从某个旮旯里返回的新页面,告诉你如果你去一个名叫“Grille亚洲竹园”的地方就会有中国菜,页面里还有一个电话号码和一张地图。

分析:

现在,让我们用OSI模型分析一下这次Web冲浪的场景。我们一步步地分析这个简化了的(因为这个例子中只涉及模型中的几个层,而不是所有的7层)场景中的每一个步骤。

你的Web浏览器——一个应用程序,运行在OSI模型的第七层。当你在地址栏中输入一个URI然后敲击回车键后,它就会向本地DNS服务器发送一个DNS请求,以便把搜索引擎的URI(http://www.google.cn)转化成一个IP地址。本地DNS服务器将会返回与所请求的主机名相对应的IP地址。

一旦得知了远端IP地址,你的本地计算机就会向指定的远程Web服务器的IP地址发送一个HTTP“GET”请求(第七层)。为了把这个请求发送给目标Web服务器,你的Web服务器需要把第七层的请求传递给操作系统。操作系统会把这些数据分别放在几个数据包里,并加上TCP头(第四层)。在TCP头上包含了Web客户端必须提供的源端口、服务器监听的目标端口(TCP 80),以及其他一些实现第四层连接所必需的信息。

接下来,操作系统再要加上一个IP头(第三层),其中描述了源和目标端点的IP地址,这样流量才能在互联网各子网间被合理地路由和传递。之后,每个数据包都会被编为携带802.11信息的帧,以便在无线局域网中传输(第二层)。最后,整个帧都会被调制成无线电射频信号(RF)(第一层)发送出去。

本地无线接入点(WAP)接收到RF传递的信息后,会去掉802.11头,把它换成一个新的第二层头,然后WAP将会通过线缆(第一层),把整个帧传送给下一个站点。这下一个站点将是一个路由器,它还会替换第二层信息,然后继续通过线缆把帧发送给它的下一跳。这一过程将一直重复下去,直到数据包到达它的终点一一远端wb服务器为止。

在目的端,处理的过程正好反过来:目标服务器是通过线缆(第一层)连上网的,它接收到的是一系列的电压变化。服务器上的网卡会把电压变化解析成以太网帧(第二层),在去掉第二层的头部之后,把它发送给操作系统。操作系统看到的是含有它自身IP地址(“啊哈,这是给我的!”)的IP包(第三层)。操作系统将会去掉IP包的包头,并解析TCP包头中的信息(第四层)。TCP包头中的信息当然包含了目标端口,以及其他一些信息。然后,操作系统将会寻找是哪个进程监听了这个目标端口,当它发现那是web服务器时,它就会去掉TCP包头,并把载荷提交给目标Web服务进程(第七层)。

用这个方法,OSI模型就可以通过检查各个层之间的协议交互行为,来描述通过互联网发送个Web页面请求的过程。

来源:《黑客大追踪》