因特网的传输协议(因特网是如何传输数据的)(1)

接上文:网络的相关概念介绍:以太网、局域网、互联网

互联网络重要的特性是能由采用完全不同和不兼容技术的各种局域网和广域网组成。如何让某台源主机跨过所有这些不兼容的网络发送数据到另一台目标主机呢 ?

解决办法是一层运行在每台主机和路由器上的协议软件,这个软件实现一种协议,这种协议控制主机和路由器协同工作来实现数据传输,从而消除不同网络之间的差异。这种协议必须提供两种基本能力:

因特网的传输协议(因特网是如何传输数据的)(2)

上图展示了主机和路由器如何使用互联网络协议在不兼容的局域网间传送数据的一个示例。这个互联网络示例由两个局域网通过一台路由器连接而成,一个客户端运行在主机A上,主机A与LAN1相连,它发送一串数据字节到运行在主机B上的服务器端,主机B连接在LAN2上。这个过程有8个基本步骤:

  1. 运行在主机A上的客户端进行一个系统调用,从客户端的虚拟地址空间复制数据到内核缓冲区中;
  2. 主机A上的协议软件通过在数据前附加互联网络包头和LAN1帧头,创建了一个LAN1的帧。互联网络包头寻址到互联网络主机B,LAN1帧头寻址到路由器,然后它传送此帧到适配器。注意LAN1帧的有效载荷是一个互联网络包,而互联网络包的有效载荷是实际的用户数据,这种封装是基本的网络互连方法之一;
  3. LAN1适配器复制该帧到网络上;
  4. 当此帧到达路由器时,路由器的LAN1适配器从电缆上读取它,并把它传送到协议软件;
  5. 路由器从互联网络包头中提取出目标互联网络地址,并用它作为路由表的索引,确定向哪里转发这个包,本例中是LAN2。路由器剥落旧的LAN1的帧头,加上寻址到主机B的新的LAN2帧头,并把得到的帧传送到适配器;
  6. 路由器的LAN2适配器复制该帧到网络上;
  7. 此帧到达主机B时,它的适配器从电缆上读到此帧,并将它传送到协议软件;
  8. 最后主机B上的协议软件剥落包头和帧头。当服务器进行一个读取这些数据的系统调用时,协议软件最终将得到的数据复制到服务器的虚拟地址空间。

因特网的传输协议(因特网是如何传输数据的)(3)

全球IP因特网

全球IP因特网是最著名和最成功的互联网络实现。从1969年开始出现,因特网内部体系结构不断发展变化。但从20世纪80年代早期开始,客户端-服务器应用的组织就一直保持着相当的稳定。

因特网的传输协议(因特网是如何传输数据的)(4)

每台因特网主机都运行实现TCP/IP协议(Transmission Control Protocol / Internet Protocol,传输控制协议/互联网络协议)的软件,几乎每个现代计算机系统都支持这个协议。

TCP/IP实际是一个协议族,每一个都提供不同的功能。如IP协议提供基本的命名方法和递送机制,这种递送机制能够从一台因特网主机往其他主机发送包,也叫做数据报(datagram)。IP机制从某种意义上而言是不可靠的,因为数据报在网络中丢失或重复,它并不会试图恢复。UDP(unreliable datagram Protocol,不可靠数据报协议)稍微扩展了IP协议,这样一来,包可以在进程间而不是在主机间传送。TCP是一个构建在IP之上的复杂协议,提供了进程间可靠的全双工连接。

从程序员的角度,可以把因特网看做一个世界范围的主机集合,满足以下特性:

因特网的传输协议(因特网是如何传输数据的)(5)

扩展阅读

网络编程模型:客户端-服务器

TCP的3次握手,4次挥手

计算机系统的硬件组织:总线、IO、主存、CPU

,