TCP/IP (1)基本知识

来源:互联网 发布:php找不到工作 编辑:程序博客网 时间:2024/05/16 05:30

 很多不同的厂家生产各种型号的计算机,它们运行完全不同的操作系统,但TCP /IP协议族允许它们互相进行通信。这一点很让人感到吃惊,因为它的作用已远远超出了起初的设想。TCP /IP起源于6 0年代末美国政府资助的一个分组交换网络研究项目,到9 0年代已发展成为计算机之间最常应用的组网形式。它是一个真正的开放系统,因为协议族的定义及其多种实现可以不用花钱或花很少的钱就可以公开地得到。

分层

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

      
每一层负责不同的功能:
  1)链路层,有时也称作数据链路层或网络接口层,通常包括操作系统中的设备驱动程序和计算机中对应的网络接口卡。它们一起处理与电缆(或其他任何传输媒介)的物理接口细节。
  2)网络层,有时也称作互联网层,处理分组在网络中的活动,例如分组的选路。在TCP/IP协议族中,网络层协议包括I P协议(网际协议),ICMP协议(Internet互联网控制报文协议),以及IGMP协议(Internet组管理协议)。
  3)运输层主要为两台主机上的应用程序提供端到端的通信。在TCP/IP协议族中,有两个互不相同的传输协议:TCP(传输控制协议)和UDP(用户数据报协议)。TCP为两台主机提供高可靠性的数据通信。它所做的工作包括把应用程序交给它的数据分成合适的小块交给下面的网络层,确认接收到的分组,设置发送最后确认分组的超时时钟等。由于运输层提供了高可靠性的端到端的通信,因此应用层可以忽略所有这些细节。而另一方面,U D P则为应用层提供一种非常简单的服务。它只是把称作数据报的分组从一台主机发送到另一台主机,但并不保证该数据报能到达另一端。任何必需的可靠性必须由应用层来提供。
  4)应用层,负责处理特定的应用程序细节。几乎各种不同的TCP/IP实现都会提供下面这些通用的应用程序:

    • Telnet 远程登录。
    • FTP 文件传输协议。
    • SMTP 简单邮件传送协议。
    • SNMP 简单网络管理协议

  网络接口层和应用层的目的是很显然的—前者处理有关通信媒介的细节(以太网、令牌环网等),而后者处理某个特定的用户应用程序(FTP、Telnet等)。但是,从表面上看,网络层和运输层之间的区别不那么明显。为什么要把它们划分成两个不同的层次呢?为了理解这一点,我们必须把视野从单个网络扩展到一组网络。

  构造互连网最简单的方法是把两个或多个网络通过路由器进行连接。它是一种特殊的用于网络互连的硬件盒。路由器的好处是为不同类型的物理网络提供连接:以太网、令牌环网、点对点的链接和FDDI(光纤分布式数据接口)等等

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

  从定义上看,一个路由器具有两个或多个网络接口层(因为它连接了两个或多个网络)。任何具有多个接口的系统,英文都称作是多接口的。一个主机也可以有多个接口,但一般不称作路由器, 除非它的功能只是单纯地把分组从一个接口传送到另一个接口。同样,路由器并不一定指那种在互联网中用来转发分组的特殊硬件盒。大多数的TCP/IP实现也允许一个多接口主机来担当路由器的功能,但是主机为此必须进行特殊的配置。在这种情况下,我们既可以称该系统为主机(当它运行某一应用程序时,如FTP或Telnet),也可以称之为路由器(当它把分组从一个网络转发到另一个网络时)。

  互联网的目的之一是在应用程序中隐藏所有的物理细节。应用层不能关心(也不关心)一台主机是在以太网上,而另一台主机是在令牌环网上,它们通过路由器进行互连。随着增加不同类型的物理网络,可能会有2 0个路由器,但应用层仍然是一样的。物理细节的隐藏使得互联网功能非常强大,也非常有用。
  连接网络的另一个途径是使用网桥。网桥是在链路层上对网络进行互连,而路由器则是在网络层上对网络进行互连。网桥使得多个局域网(LAN)组合在一起,这样对上层来说就好像是一个局域网。

TCP/IP的分层

  TCP和UDP是两种最为著名的运输层协议,二者都使用I P作为网络层协议。

  IP是网络层上的主要协议,同时被TCP和UDP使用。TCP和UDP的每组数据都通过端系统和每个中间路由器中的I P层在互联网中进行传输。(端系统(End system)(两边的两台主机)和中间系统
(Intermediate system)(中间的路由器)。应用层和运输层使用端到端(End-to-End)协议)

  ICMP是IP协议的附属协议。IP层用它来与其他主机或路由器交换错误报文和其他重要信息。尽管ICMP主要被IP使用,但应用程序也有可能访问它。我们将分析两个流行的诊断工具,Ping和TraceRoute它们都使用了ICMP。

  IGMP是Internet组管理协议。它用来把一个UDP数据报多播到多个主机。

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

互联网地址

其中A、B、C3类(如下表格)由InterNIC在全球范围内统一分配,D、E类为特殊地址。
网络类别
最大网络数
IP地址范围
最大主机数
私有IP地址范围
A
126(2^7-2)
1.0.0.0--127.255.255.255
16777214
10.0.0.0--10.255.255.255
B
16384(2^14)
128.0.0.0-191.255.255.255
65534
172.16.0.0-172.31.255.255
C
2097152(2^21)
192.0.0.0--223.255.255.255
254
192.168.0.0-192.168.255.255

D类IP地址

  D类IP地址在历史上被叫做多播地址(multicast address),即组播地址。在以太网中,多播地址命名了一组应该在这个网络中应用接收到一个分组的站点。多播地址的最高位必须是“1110”,范围从224.0.0.0到239.255.255.255。

特殊的网址

  1. 每一个字节都为0的地址(“0.0.0.0”)对应于当前主机;
  2. IP地址中的每一个字节都为1的IP地址(“255.255.255.255”)是当前子网的广播地址;
  3. IP地址中凡是以“11110”开头的E类IP地址都保留用于将来和实验使用。
  4. IP地址中不能以十进制“127”作为开头,该类地址中数字127.0.0.1到127.255.255.255用于回路测试,如:127.0.0.1可以代表本机IP地址,用“http://127.0.0.1”就可以测试本机中配置的Web服务器。
  5. 网络ID的第一个8位组也不能全置为“0”,全“0”表示本地网络。

域名系统

  尽管通过I P地址可以识别主机上的网络接口,进而访问主机,但是人们最喜欢使用的还是主机名。在T C P / I P领域中,域名系统(D N S)是一个分布的数据库,由它来提供I P地址和主机名之间的映射信息。

封装

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

  

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

  网络接口分别要发送和接收IP、ARP和RARP数据,因此也必须在以太网的帧首部中加入某种形式的标识,以指明生成数据的网络层协议。为此,以太网的帧首部也有一个16 bit的帧类型域。  

  由于TCP、UDP、ICMP和IGMP都要向I P传送数据,因此I P必须在生成的I P首部中加入某种标识,以表明数据属于哪一层。为此,IP在首部中存入一个长度为8 bit的数值,称作协议域。1表示为I CMP协议,2表示为IGMP协议,6表示为TCP协议,1 7表UDP协议。

  类似地,许多应用程序都可以使用TCP或UDP来传送数据。运输层协议在生成报文首部时要存入一个应用程序的标识符。TCP和UDP都用一个16 bit的端口号来表示不同的应用程序。TCP和UDP把源端口号和目的端口号分别存入报文首部中。

分用

  当目的主机收到一个以太网数据帧时,数据就开始从协议栈中由底向上升,同时去掉各层协议加上的报文首部。每层协议盒都要去检查报文首部中的协议标识,以确定接收数据的上层协议。这个过程称作分用(Demultiplexing)

  为协议ICMP和IGMP定位一直是一件很棘手的事情。在图中,把它们与I P放在同一层上,那是因为事实上它们是IP的附属协议。但是在这里,我们又把它们放在I P层的上面,这是因为ICMP和IGMP报文都被封装在IP数据报中。
  对于ARP和RARP,我们也遇到类似的难题。在这里把它们放在以太网设备驱动程序的上方,这是因为它们和IP数据报一样,都有各自的以太网数据帧类型。但在前面图中,我们又把A R P作为以太网设备驱动程序的一部分,放在I P层的下面,其原因在逻辑上是合理的

端口号

  TCP和UDP采用16 bit的端口号来识别应用程序。那么这些端口号是如何选择的呢?
  服务器一般都是通过知名端口号来识别的。例如,对于每个TCP /IP实现来说,FTP服务器的TCP端口号都是21,每个Telnet服务器的TCP端口号都是23,每个TFTP (简单文件传送协议)服务器的UDP端口号都是69。任何TCP /IP实现所提供的服务都用知名的1~1023之间的端口号。这些知名端口号由Internet号分配机构(Internet Assigned Numbers Authority, IANA)来管理。

0 0