TCP/IP详解 -奠基篇

2020-08-26 11:20:18 浏览数 (1)

TCP/IP协议起源

T C P / I P起源于6 0年代末美国政府资助的一个分组交换网络研究项目,到 9 0年代已发展成为计算机之间最常应用的组网形式。它是一真正的开放系统,因为协议族的定义及其多种实现可以不用花钱或花很少的钱就可以公开地得到。它成为被称作“全球互联网”或“因特网 ( I n t e r n e t )”的基础,该广域网(WA N)已包含超过1 0 0万台遍布世界各地的计算机。

这一点让人感到大大的吃惊,因为它的作用已经远远超出了当初的设想。

协议分层

具体分层

网络协议通常分不同层次进行开发,每一层分别负责不同的通信功能。一个协议族,比如 T C P / I P,是一组不同层次上的多个协议的组合。 T C P / I P通常被认为是一个四层协议系统。

每一层负责不同层次的功能。

  • 链路层 有时也称作数据链路层或网络接口层, 通常包括操作系统中的设备驱动程序和计算机 中对应的网络接口卡。它们一起处理与电缆(或其他任何传输媒介)的物理接口细节。
  • 网络层 有时也称作互联网层,处理分组在网络中的活动,例如分组的选路。在 T C P / I P协议族中,网络层协议包括== I P协议(网际协议)==,I C M P协议(I n t e r n e t互联网控 制报文协议),以及I G M P协议(I n t e r n e t组管理协议)。
  • 运输层 主要为两台主机上的应用程序提供端到端的通信。在 T C P / I P协议族中,有两个互不相同的传输协议:T C P(传输控制协议)和U D P(用户数据报协议)。

T C P为两台主机提供高可靠性的数据通信。它所做的工作包括把应用程序交给它的数据分成合适的小块交给下面的网络层,确认接收到的分组,设置发送最后确认分组的超时时钟等。由于运输层提供了高可靠性的端到端的通信,因此应用层可以忽略所有这些细节。

而另一方面,U D P则为应用层提供一种非常简单的服务。它只是把称作数据报的分组从一台主机发送到另一台主机,但并不保证该数据报能到达另一端。任何必需的可靠性必须由应用层来提供。

这两种运输层协议分别在不同的应用程序中有不同的用途。

  • 应用层 应用层负责处理特定的应用程序细节。几乎各种不同的 T C P / I P实现都会提供下面这些通用的应用程序:
代码语言:javascript复制
• Telnet 远程登录。
• FTP 文件传输协议。
• SMTP 简单邮件传送协议。
• SNMP 简单网络管理协议。
协议传输示例

假设在一个局域网( L A N)如以太网中有两台主机,二者都运行 F T P协议,图1 - 2列出了该过程所涉及到的所有协议。

下面对这个图进行一个更深层次的分析: 图1 - 3是一个包含两个网络的互连网:一个以太网和一个令牌环网,通过一个路由器互相连接。尽管这里是两台主机通过路由器进行通信,实际上以太网中的任何主机都可以与令牌环网中的任何主机进行通信。

在图 1 - 3中,我们可以划分出端系统( End system )(两边的两台主机)和中间系统(Intermediate system)(中间的路由器)。应用层和运输层使用端到端( En d - t o - e n d)协议。在图中,只有端系统需要这两层协议。但是,网络层提供的却是逐跳( Ho p - b y - h o p)协议,两个端系统和每个中间系统都要使用它。

TCP为何可靠

在T C P / I P协议族中,网络层 I P提供的是一种不可靠的服务。也就是说,它只是尽可能快地把分组从源结点送到目的结点,但是并不提供任何可靠性保证。而另一方面, T C P在不可靠的I P层上提供了一个可靠的运输层。为了提供这种可靠的服务, T C P采用了超时重传、发送和接收端到端的确认分组等机制。由此可见,运输层和网络层分别负责不同的功能。

TCP/IP的分层

在T C P / I P协议族中,有很多种协议。

I P是网络层上的主要协议,同时被 T C P和U D P使用。T C P和U D P的每组数据都通过端系统和每个中间路由器中的I P层在互联网中进行传输。

I C M P是I P协议的附属协议。I P层用它来与其他主机或路由器交换错误报文和其他重要信息。

I G M P是I n t e r n e t组管理协议。它用来把一个 U D P数据报多播到多个主机。

A R P(地址解析协议)和R A R P(逆地址解析协议)是某些网络接口(如以太网和令牌环网)使用的特殊协议,用来转换 I P层和网络接口层使用的地址。

网络地址

互联网上的每个接口必须有一个唯一的 I n t e r n e t地址(也称作 I P地址)。I P地址长32 bit。 I n t e r n e t地址并不采用平面形式的地址空间,如 1、2、3等。I P地址具有一定的结构,五类不同的互联网地址格式如图1 - 5所示。

这些3 2位的地址通常写成四个十进制的数,其中每个整数对应一个字节。这种表示方法称作“点分十进制表示法(Dotted decimal notation)”。

区分各类地址的最简单方法是看它的第一个十进制整数。图 1 - 6列出了各类地址的起止范围,其中第一个十进制整数用加黑字体表示。

域名系统:在 T C P / I P领域中,域名系统( D N S)是一个分布的数据库,由它来提供 I P地址和主机名之间的映射信息。

封装数据

当应用程序用 T C P传送数据时,数据被送入协议栈中,然后逐个通过每一层直到被当作一串比特流送入网络。其中每一层对收到的数据都要增加一些首部信息(有时还要增加尾部信息),该过程如图 1 - 7所示。T C P传给I P的数据单元称作 T C P报文段或简称为 T C P段(T C P s e g m e n t)。I P传给网络接口层的数据单元称作 I P数据报(IP datagram)。通过以太网传输的比特流称作帧(Fr a m e )。

U D P数据与T C P数据基本一致。唯一的不同是 U D P传给I P的信息单元称作 U D P数据报(UDP datagram),而且U D P的首部长为8字节。

数据分用

当目的主机收到一个以太网数据帧时,数据就开始从协议栈中由底向上升,同时去掉各层协议加上的报文首部。每层协议盒都要去检查报文首部中的协议标识,以确定接收数据的上层协议。这个过程称作分用( D e m u l t i p l e x i n g),图1 - 8显示了该过程是如何发生的。

端口号

服务器一般都是通过知名端口号来识别的。 例如,对于每个 T C P / I P实现来说,F T P服务器的T C P端口号都是2 1,每个Te l n e t服务器的T C P端口号都是2 3,每个T F T P (简单文件传送协议)服务器的U D P端口号都是6 9。任何T C P / I P实现所提供的服务都用知名的 1~1 0 2 3之间的端口号。这些知名端口号由 I n t e r n e t号分配机构(Internet Assigned Numbers Authority, IANA)来管理。

到1 9 9 2年为止,知名端口号介于1~2 5 5之间。2 5 6~1 0 2 3之间的端口号通常都是由U n i x系统占用,以提供一些特定的U n i x服务—也就是说,提供一些只有U n i x系统才有的、而其他操作系统可能不提供的服务。现在IANA管理1~1023之间所有的端口号。I n t e r n e t扩展服务与U n i x特定服务之间的一个差别就是Te l n e t和R l o g i n。它们二者都允许通过计算机网络登录到其他主机上。Te l n e t是采用端口号为2 3的T C P / I P标准且几乎可以在所有操作系统上进行实现。相反,R l o g i n最开始时只是为U n i x系统设计的(尽管许多非Unix系统现在也提供该服务),因此在80年代初,它的有名端口号为513。 客户端通常对它所使用的端口号并不关心,只需保证该端口号在本机上是唯一的就可以了。客户端口号又称作临时端口号(即存在时间很短暂)。这是因为它通常只是在用户运行该客户程序时才存在,而服务器则只要主机开着的,其服务就运行。

大多数T C P / I P实现给临时端口分配 1 0 2 4~5 0 0 0之间的端口号。大于 5 0 0 0的端口号是为其他服务器预留的(I n t e r n e t上并不常用的服务)。

小结

T C P / I P协议族分为四层:链路层、网络层、运输层和应用层,每一层各有不同的责任。在T C P / I P中,网络层和运输层之间的区别是最为关键的:网络层( I P)提供点到点的服务,而运输层(T C P和U D P)提供端到端的服务。

一个互联网是网络的网络。构造互联网的共同基石是路由器,它们在 I P层把网络连在一起。第一个字母大写的I n t e r n e t是指分布在世界各地的大型互联网,其中包括 1万多个网络和超过1 0 0万台主机。

在一个互联网上,每个接口都用 I P地址来标识,尽管用户习惯使用主机名而不是 I P地址。域名系统为主机名和 I P地址之间提供动态的映射。端口号用来标识互相通信的应用程序。服务器使用知名端口号,而客户使用临时设定的端口号。

0 人点赞