《TCP/IP详解卷1:协议》——第1章:概述(转载)
1、引言
很多不同的厂家生产各种型号的计算机,它们运行完全不同的操作系统,但TCP/IP协议族允许它们互相进行通信。TCP/IP起源于60年代末美国政府资助的一个分组交换网络研究项目,到90年代已发展成为计算机之间最常应用的组网形式。
2、分层
网络协议通常分不同层次进行开发,每一层分别负责不同的通信功能。一个协议族,如TCP/IP是一组不同层次上的多个协议的组合。TCP/IP通常被认为是一个四层协议系统。
每一层负责不同的功能:
(1)链路层
也称作数据链路层或网络接口层。通常包括操作系统中的设备驱动程序和计算机中对应的网络接口卡。它们一起处理与电缆(或其他任何传输媒介)的物理接口细节。
(2)网络层
也称作互联网层,处理分组在网络中的活动,例如分组的选路。在TCP/IP协议族中,网络层协议包括IP协议(网际协议),ICMP协议(Internet互联网控制报文协议),以及IGMP协议(Internet组管理协议)。
(3)运输层
为两台主机上的应用程序提供端到端的通信。在TCP/IP协议族中,有两个互不相同的传输协议:TCP(传输控制协议)和UDP(用户数据报协议)。
TCP为两台主机提供高可靠性的数据通信。它所做的工作包括把应用程序交给它的数据分成合适的小块交给下面的网络层,确认接收到的分组,设置发送最后确认分组的超时时钟等。UDP为应用层提供一种非常简单的服务。它只是把称作数据报的分组从一台主机发送到另一台主机,但并不保证该数据报能到达另一端。
(4)应用层
处理特定的应用程序细节。例如:Telnet远程登录、FTP文件传输协议、SMTP简单邮件传送协议,SNMP简单网络管理协议等。
假设在一个局域网(LAN)如以太网中有两台主机,二者都运行FTP协议,图1-2列出了该过程所涉及到的所有协议。
说明:
(1)大多数网络应用程序都被设计成客户-服务器模式,服务器为客户提供某种服务。
(2)在同一层上,双方都有对应的一个或多个协议进行通信。
(3)应用程序通常是一个用户进程,而下三层则一般在(操作系统)内核中执行。
(4)应用层关心的是应用程序的细节,而不是数据在网络中的传输活动。下三层对应用程序一无所知,但它们要处理所有的通信细节。
在图1-3中,可以划分出端系统(两边的两台主机)和中间系统(中间的路由器)。应用层和运输层使用端到端协议。网络层提供的是逐跳协议,点到点的服务。两个端系统和每个中间系统都要使用它。
连接网络的另一个途径是使用网桥。网桥是在链路层上对网络进行互连,而路由器则是在网络层上对网络进行互连。网桥使得多个局域网组合在一起,这样对上层来说就好像是一个局域网。
3、TCP/IP的分层
说明:
传输层:
(1)TCP和UDP是运输层协议,二者都使用IP作为网络层协议。虽然TCP使用不可靠的IP服务,但它却提供一种可靠的运输层服务。UDP为应用程序发送和接收数据报。一个数据报是指从发送方传输到接收方的一个信息单元。UDP是不可靠的,它不能保证数据报能安全无误地到达最终目的。
网络层:
(2)IP是网络层上的主要协议,同时被TCP和UDP使用。TCP和UDP的每组数据都通过端系统和每个中间路由器中的IP层在互联网中进行传输。
很少但是有应用层直接与ip协议打交道的。
ICMP是IP协议的附属协议,IP层用它来与其他主机或路由器交换错误报文和其他重要信息。
IGMP是Internet组管理协议,它用来把一个UDP数据报多播到多个主机。
链路层:
(3)ARP(地址解析协议)和RARP(逆地址解析协议)是某些网络接口(如以太网和令牌环网)使用的特殊协议,用来转换IP层和网络接口层使用的地址。
4、互联网的地址
互联网上的每个接口必须有一个唯一的Internet地址(也称作IP地址)。IP地址长32bit。IP地址具有一定的结构,五类不同的互联网地址格式如图1-5所示。
区分各类地址,最简单的方法就是看第一个十进制整数。
A:0--127,B:128--191,C:192--223,D:224--239,E:240--247
0开头 10开头 110开头 1110开头 11110开头
说明:
(1)多接口主机具有多个IP地址,其中每个接口都对应一个IP地址。
(2)有三类IP地址:单播地址(目的端为单个主机)、广播地址(目的端为给定网络上的所有主机)以及多播地址(目的端为同一组内的所有主机)。
5、域名系统
在TCP/IP领域中,域名系统(DNS)是一个分布的数据库,由它来提供IP地址和主机名之间的映射信息。
任何应用程序都可以调用一个标准的库函数来查看给定名字主机的ip地址。
6、封装
当应用程序用TCP传送数据时,数据被送入协议栈中,然后逐个通过每一层直到被当作一串比特流送入网络。其中每一层对收到的数据都要增加一些首部信息(有时还要增加尾部信息)。如图1-7所示。
说明:
(1)TCP传给IP的数据单元称作TCP报文段或简称为TCP段。IP传给网络接口层的数据单元称作IP数据报。通过以太网传输的比特流称作帧。
(2)以太网数据帧的物理特性是其长度必须在46~1500字节之间。
(3)UDP数据与TCP数据基本一致。唯一的不同是UDP传给IP的信息单元称作UDP数据报,而且UDP的首部长为8字节。
《1》IP生成的ip首部加入了某种标示,来表明数据是属于那一层传过来的(TCP 6,ICMP 1,IGMP 2,UDP 17)用一个8bits的位来标示
《2》类似的 在传输层中,TCP和UDP在首部用一个16位的数据来标示进程的源端口和目的端口。
《3》网络接口层要接收和发送IP,ARP,RARP数据,所以在以太网的帧首部也有一个16位的数据来标示,指明生成数据的网络层协议。
7、分用
当目的主机收到一个以太网数据帧时,数据就开始从协议栈中由底向上升,同时去掉各层协议加上的报文首部。每层协议盒都要去检查报文首部中的协议标识,以确定接收数据的上层协议。这个过程称作分用。
8、客户-服务器模型
大部分网络应用程序在编写时都假设一端是客户,另一端是服务器,其目的是为了让服务器为客户提供一些特定的服务。服务分为两种类型:重复型和并发型。
(1)重复型服务器
1)等待一个客户请求的到来。
2)处理客户请求。
3)发送响应给发送请求的客户。
4)返回1)步。
重复型服务器主要的问题发生在2)状态。在这个时候,它不能为其他客户机提供服务。
(2)并发型服务器
1)等待一个客户请求的到来。
2)启动一个新的服务器来处理这个客户的请求。在这期间可能生成一个新的进程、任务或线程,并依赖底层操作系统的支持。这个步骤如何进行取决于操作系统。生成的新服务器对客户的全部请求进行处理。处理结束后,终止这个新服务器。
3)返回1)步。
并发服务器的优点在于它是利用生成其他服务器的方法来处理客户的请求。每个客户都有它自己对应的服务器。如果操作系统允许多任务,那么就可以同时为多个客户服务。
说明:
(1)对服务器,而不是对客户进行分类的原因是因为对于一个客户来说,它通常并不能够辨别自己是与一个重复型服务器或并发型服务器进行对话。
(2)一般来说,TCP服务器是并发的,而UDP服务器是重复的,但也存在一些例外。
9、端口号
(1)TCP和UDP采用16bit的端口号来识别应用程序。服务器一般都是通过知名端口号来识别的。任何TCP/IP实现所提供的服务都用知名的1~1023之间的端口号。
(2)FTP服务器的TCP端口号都是21
(3)每个Telnet服务器的TCP端口号都是23
(4)每个TFTP(简单文件传送协议)的UDP端口号都是69
说明:
(1)客户端通常对它所使用的端口号并不关心,只需保证该端口号在本机上是唯一的就可以了。客户端口号又称作临时端口号(即存在时间很短暂)。这是因为它通常只是在用户运行该客户程序时才存在,而服务器则只要主机开着的,其服务就运行。
(2)Unix系统有保留端口号的概念。只有具有超级用户特权的进程才允许给它自己分配一个保留端口号。这些端口号介于1~1023之间。
(3)大多数Unix系统的文件 /etc/services都包含了人们熟知的端口号。如果你想找到某个应用的端口号,可以执行以下命令(以Telnet为例):
10、标准的简单服务
11、其他说明
(1)所有关于Internet的正式标准都以RFC(Request for Comment)文档出版。大量的RFC并不是正式的标准,出版的目的只是为了提供信息。
(2)internet这个词第一个字母是否大写决定了它具有不同的含义。internet意思是用一个共同的协议族把多个网络连接在一起。而Internet指的是世界范围内通过TCP/IP互相通信的所有主机集合。Internet是一个internet,但internet不等于Internet。
总结:
(1)TCP/IP协议分为四层:链路层,网络层,运输层,应用层。
(2)网络层(IP)提供点到点的服务,运输层(TCP,UDP)提供端到端的服务。
(3)在互联网上,每个接口都用IP地址来标识,尽管用户习惯使用主机名而不是IP地址
(4)域名系统为主机名和ip地址之间提供动态的映射
(5)端口号用来标识互相间通信的应用程序
(6)服务器使用知名的端口号,而客户使用临时设定的端口号。