首页 新闻 论坛 群组 Blog 文档 下载 读书 Tag 网摘 搜索 开源 FAQ 第二书店 博文视点 程序员
频道: 研发 数据库 中间件 信息化 视频 .NET Java 游戏 移动 服务: 人才 外包 培训
    图书品种:235680
       
热门搜索: ASP.NET Ajax Spring Hibernate Java

1.3  IP的基本原理和分层体系结构

IP包发送后并不能确保接收方收到包。当发送一个IP包时,绝对不知道对方是否收到它。更糟糕的是,甚至不知道包是否到达了目的地。

那么,设计网络听起来是不是一个非常愚蠢的方法呢?也许是这样,但请思索片刻再下结论。让我们想象一下路由选择硬件必须确保每一个IP包都完整无损地到达正确的目的地会有多复杂。一开始路由器并不介意,它们保留数据,并重新发送,直到数据已到达目的地,或者是像垃圾一样将包丢弃。构建简单的硬件设备并不算贵,而且速度也很快。

如此说来,这种并不可靠的通信还有什么意义呢?采用数字数据,即使文件中只丢失了一个字节,也可能会使整个文件毫无用处,因此,不可靠的通信看起来似乎与我们真正所期望的大相径庭。

我们并没有采用硬件来控制数据的完整性和有效性,而是由软件来控制。讨论这一主题之前,先介绍一下因特网通信的分层体系结构。

设计因特网协议时实际将其分为4个不同的层:

  ●       网络层。

  ●       因特网层。

  ●       传输层。

  ●       应用层。

每次在因特网上发送一个数据包,在每一层都要用一个新的首部将数据包封装起来。例如,如果采用超文本传输协议(Hyper Text Transfer Protocol,HTTP)发送数据(一般情况下是网页数据),则首先在应用层将发送的数据封装到HTTP首部中。然后,HTTP应用将包发送到操作系统,操作系统会添加一个传输层包首部,并为因特网层添加一个IP包首部。(HTTP采用TCP作为传输层协议,稍后会介绍TCP协议)。最后,根据所使用的因特网访问设备,向包中添加一个网络层包首部,并沿着路径最终发送出去。图1.10绘制了因特网包的分层体系结构。在这一标准的4层包结构中,每一个数据包的前面都冠以它所使用的各种协议的首部。这一范例演示说明了通过以太网连接来浏览万维网。

图1.10 因特网包的分层体系结构

前面已经详细介绍过IP协议。这一协议属于第二层协议,即因特网层。之所以先从第二层讲起,是因为它确实是讨论因特网通信时最重要的一层。现在将要更深入地讨论这       些层。