1.1引言
TCP/ IP协议簇是为了让不同厂家生产的各种型号并运行完全不同操作系统的计算机相互进行通信。
1.2分层
假设在一个局域网(LAN)如以太网中有两台主机,二者都运行FTP协议,图1-2列出了该过程所涉及到的所有协议。
描述:
-
大多数的网络应用程序都被设计成客户_服务器模式,服务器为客户提供某种服务;
-
在同一层上,双方都有对应的一个或多个协议进行通信;
-
应用程序通常是一个用户进程,而下三层则一般在(操作系统)内核中执行;
-
应用层关心的是应用程序的细节,而不是数据在网络中的传输活动,下三层对应用程序一无所知,但它们要处理所有的通信细节;
-
网络接口层处理有关通信媒介的细节(以太网、令牌环网等),应用层处理某个特定的用户应用程序(FTP、Telnet等);
从表面上看,网络层和运输层之间的区别不那么明显,但为什么要把它们划分成两个不同的层次呢?
为了理解这一点,我们可以把视野从单个网络扩展到一组网络即孤岛(单个计算机)->岛屿(单个网络)->互联网(多个网络);
构造互连网有多种方式:可以使用路由器(最简单),也可以使用网桥;
路由器是一种特殊的用于网络互连的多接口硬件盒,目的是为不同类型的物理网络提供连接:以太网、令牌环网、点对点的链接和FDDI(光纤分布式数据接口)等;
网桥是在链路层上对网络进行互连,而路由器则是在网络层上对网络进行互连。网桥使得多个局域网(LAN)组合在一起,这样对上层来说就好像是一个局域网。
在图1-3中,我们可以划分出端系统(End system/两边的两台主机)和中间系统(Intermediate system/中间的路由器)。应用层和运输层使用端到端(End-to-end)协议。在图中,只有端系统需要这两层协议。但是,网络层提供的却是逐跳(Hop-by-hop)协议,两个端系统和每个中间系统都要使用它。
在TCP/IP协议族中,网络层IP提供的是一种不可靠的服务,即它只是尽可能快地把分组从源结点送到目的结点,但是并不提供任何可靠性保证。而另一方面,TCP在不可靠的IP层上提供了一个可靠的运输层。为了提供这种可靠的服务,TCP采用了超时重传、发送和接收端到端的确认分组等机制。由此可见,运输层和网络层分别负责不同的功能。
1.3TCP/IP分层
描述:
-
TCP和UDP是运输层协议,二者都使用IP作为网络层协议。虽然TCP使用不可靠的IP服务,但它却提供一种可靠的运输层服务。UDP为应用程序发送和接收数据报。一个数据报是指从发送方传输到接收方的一个信息单元。UDP是不可靠的,它不能保证数据报能安全无误地到达最终目的。
-
IP是网络层上的主要协议,同时被TCP和UDP使用。TCP和UDP的每组数据都通过端系统和每个中间路由器中的IP层在互联网中进行传输。
-
ICMP是IP协议的附属协议,IP层用它来与其他主机或路由器交换错误报文和其他重要信息。IGMP是Internet组管理协议,它用来把一个UDP数据报多播到多个主机。
-
ARP(地址解析协议)和RARP(逆地址解析协议)是某些网络接口(如以太网和令牌环网)使用的特殊协议,用来转换IP层和网络接口层使用的地址。
1.4互联网地址
互联网上的每个接口必须有一个唯一的Internet地址(也称作IP地址)。IP地址长32bit,Internet地址并不采用平面形式的地址空间,如 1、2、3等。IP地址具有一定的结构,五类不同的互联网地址格式如图1-5所示,IP地址范围如图1-6所示。
描述:
-
多接口主机具有多个IP地址,其中每个接口都对应一个IP地址。
-
由于互联网上的每个接口必须有一个唯一的 IP地址,因此必须要有一个管理机构为接入互联网的网络分配I P地址。这个管理机构就是互联网络信息中心(Internet Network Information Centre),称作InterNIC。InterNIC只分配网络号。主机号的分配由系统管理员来负责。
-
有三类IP地址:单播地址(目的为单个主机)、广播地址(目的端为给定网络上的所有主机)以及多播地址(目的端为同一组内的所有主机)。
1.5域名系统
在 TCP/IP领域中,域名系统(DNS)是一个分布的数据库,由它来提供IP地址和主机名之间的映射信息。
1.6封装
当应用程序用TCP传送数据时,数据被送入协议栈中,然后逐个通过每一层直到被当作一串比特流送入网络。其中每一层对收到的数据都要增加一些首部信息(有时还要增加尾部信息),该过程如图 1-7所示。
描述:
- TCP传给IP的数据单元称作TCP报文段或简称为TCP段(TCP segment)。IP传给网络接口层的数据单元称作IP数据报(IP datagram)。通过以太网传输的比特流称作帧(Frame)。
- 以太网数据帧的物理特性是其长度必须在 4 6~1500字节之间。
- UDP数据与TCP数据基本一致。唯一的不同是UDP传给IP的信息单元称作UDP数据报(UDP datagram),而且UDP的首部长为8字节。
- 由于TCP、UDP、ICMP和IGMP都要向IP传送数据,因此IP必须在生成的IP首部中加入某种标识,以表明数据属于哪一层。为此, IP在首部中存入一个长度为8bit的数值,称作协议域。 1表示为ICMP协议,2表示为IGMP协议,6表示为TCP协议,17表示为UDP协议。
-
TCP 和 UDP 都用一个 16bit 的端口号来表示不同的应用程序。 TCP和 UDP 把源端口号和目的端口号分别存入报文首部中。
- 网络接口分别要发送和接收IP、ARP和RARP数据,因此也必须在以太网的帧首部中加入某种形式的标识,以指明生成数据的网络层协议。为此,以太网的帧首部也有一个16bit的帧类型域。
1.7分用
当目的主机收到一个以太网数据帧时,数据就开始从协议栈中由底向上升,同时去掉各层协议加上的报文首部。每层协议盒都要去检查报文首部中的协议标识,以确定接收数据的上层协议。这个过程称作分用(Demultiplexing),如图1-8所示:
1.8客户-服务器模式
大部分网络应用程序在编写时都假设一端是客户,另一端是服务器,其目的是为了让服务器为客户提供一些特定的服务。共分为两种类型:重复型或并发型。
- 重复型服务器
描述:重复型服务器主要的问题发生在I2状态,在这个时候,它不能为其他客户机提供服务。
- 并发型服务器
描述:
-
在I2阶段,会启动新服务器处理请求,可能会生成一个新的进程、任务或者线程,并依赖底层操作系统的支持,处理完客户端的请求后服务器会终止;
-
并发服务器的优点在于它是利用生成其他服务器的方法来处理客户的请求。每个客户都有它自己对应的服务器。如果操作系统允许多任务,那么就可以同时为多个客户服务。
说明:
-
对服务器,而不是对客户进行分类的原因是因为对于一个客户来说,它通常并不能够辨别自己是与一个重复型服务器或并发型服务器进行对话。
-
一般来说,TCP服务器是并发的,而UDP服务器是重复的,但也存在一些例外。
1.9端口号
服务器一般都是通过知名端口号来识别的。任何TCP/IP实现所提供的服务都用知名的1~255之间的端口号,256~1023为保留端口号。
说明:
-
客户端通常对它所使用的端口号并不关心,只需保证该端口号在本机上是唯一的就可以了。客户端口号又称作临时端口号(即存在时间很短暂)。这是因为它通常只是在用户运行该客户程序时才存在,而服务器则只要主机开着的,其服务就运行。
-
大多数TCP/IP实现给临时端口分配 1024~5000之间的端口号。大于5000的端口号是为其他服务器预留的(Internet上并不常用的服务)。
-
Unix系统有保留端口号的概念。只有具有超级用户特权的进程才允许给它自己分配一个保留端口号,这些端口号介于1~1023之间。
-
大多数Unix系统的文件 /etc/services都包含了人们熟知的端口号。
1.10其它说明
- 标准化过程-由四个小组在负责Internet技术,分别为Internet协会(ISOC,Internet Society)、Internet体系结构委员会(IAB,Internet Architecture Board)、Internet工程专门小组(IETF,Internet Engineering Task Force)、Internet研究专门小组(IRIF,Internet Research Task Force)。
- RFC文档-所有关于Internet的正式标准都以RFC(Request for Comment)文档出版。大量的RFC并不是正式的标准,出版的目的只是为了提供信息。
- 互联网-internet意思是用一个共同的协议族把多个网络连接在一起。而Internet指的是世界范围内通过TCP/IP互相通信的所有主机集合(超过100万台)。Internet是一个internet,但internet不等于Internet。
- 应用编程接口-使用TCP/IP协议的应用程序通常采用两种应用编程接口(API):socket和TLI(运输层接口:Transport Layer Interface)。