目录
TCP/IP协议族
互联网的地址
封装
分用
客户-服务器模型
小结
TCP/IP协议族是一组不同的协议组合在一起构成的协议族。该协议族中最著名的协议就是TCP和IP协议,故将该协议族称为TCP/IP,它还有另外一个名字叫Internet协议族。
网络协议通常分不同的层次进行开发,其每一层负责不同的功能。TCP/IP是个四层协议系统,其应用层大体上对应着OSl/RM模型的应用层、表示层和会话层,其网络接口层对应着OSI/RM的数据链路层和物理层,而传输层和网络层则与OSI/RM模型相互对应。
应用层 | Telent、FTP、SMTP、HTTP等 |
运输层 | TCP、UDP |
网络层 | IP、ICMP、IGMP |
链路层 | 设备驱动程序及接口卡。 |
每一层负责不同的功能:
TCP和UDP是其中两种最为著名的运输层协议,二者都使用IP作为网络层协议。其中,TCP为两台主机提供高可靠性的数据通信。它所做的工作为:把应用程序交给它的数据分成合适的小块交给下面的网络层,确认接收到的分组,设置发送最后确认分组的超时时钟等;UDP则为应用层提供一种非常简单的服务。它只是把称作数据报的分组从一台主机发送到另一台主机,但并不保证该数据报能到达另一端。任何必需的可靠性必须由应用层来提供。
故虽然TCP使用不可靠的IP服务,但它却提供一种可靠的运输层服务。UDP为应用程序发送和接收数据报。一个数据报是指从发送方传输到接收方的一个信息单元(例如,发送方指定的一定字节数的信息)。但是与TCP不同的是,UDP是不可靠的,它不能保证数据报能安全无误地到达最终目的。
互联网上的每个接口必须有一个唯一的Internet地址(也称作IP地址)。IP地址长32 bit。Internet地址并不采用平面形式的地址空间,如1、2、3等。IP地址具有一定的结构,一共有五类不同的互联网地址格式,如下:
这些32位的地址通常写成四个十进制的数,其中每个整数对应一个字节。这种表示方法称作“点分十进制表示法。
类型 | 范围 |
A B C D E |
0 .0 .0 .0 到 127.255.255.255 128.0.0.0到 191.255.255.255 192.0.0.0到 223.255.255.255 224.0.0.0到 239.255.255.255 240.0.0.0到 247.255.255.255 |
IP地址有三类IP地址:单播地址(目的为单个主机)、广播地址(目的端为给定网络上的所有主机)以及多播地址(目的端为同一组内的所有主机)。
当应用程序用TCP传送数据时,数据被送入协议栈中,然后逐个通过每一层直到被当作一串比特流送入网络。其中每一层对收到的数据都要增加一些首部信息(有时还要增加尾部信息),其过程如下图所示:
其中TCP传给IP的数据单元称作TCP报文段或简称为TCP段。IP传给网络接口层的数据单元称作IP数据报。通过以太网传输的比特流称作帧。图中帧头和帧尾下面所标注的数字是典型以太网帧首部的字节长度。UDP数据与TCP数据基本一致。唯一的不同是UDP传给IP的信息单元称作UDP数据报(UDP datagram),而且UDP的首部长为8字节。
许多应用程序都可以使用TCP或UDP来传送数据。运输层协议在生成报文首部时要存入一个应用程序的标识符。TCP和UDP都用一个16 bit的端口号来表示不同的应用程序。
由于TCP、UDP、ICMP和IGMP都要向IP传送数据,因此IP必须在生成的IP首部中加入某种标识,以表明数据属于哪一层。为此, IP在首部中存入一个长度为8 bit的数值,称作协议域。1表示为ICMP协议, 2表示为IGMP协议, 6表示为TCP协议, 17表示为UDP协议。
类似地,TCP和UDP把源端口号和目的端口号分别存入报文首部中。网络接口分别要发送和接收IP、ARP和RARP数据,因此也必须在以太网的帧首部中加入某种形式的标识,以指明生成数据的网络层协议。为此,以太网的帧首部也有一个16 bit的帧类型域。
当目的主机收到一个以太网数据帧时,数据就开始从协议栈中由底向上升,同时去掉各层协议加上的报文首部。每层协议盒都要去检查报文首部中的协议标识,以确定接收数据的上层协议。这个过程称作分用( Demultiplexing)。下图显示分用的过程。
大部分网络应用程序在编写时都假设一端是客户,另一端是服务器,其目的是为了让服务器为客户提供一些特定的服务。这种模型分为两种类型:重复型或并发型。
重复型服务器通过一下步骤进行交互:
并发型服务器:
一般来说, TCP服务器是并发的,而UDP服务器是重复的,但也存在一些例外。
TCP / IP协议族分为四层:链路层、网络层、运输层和应用层,每一层各有不同的责任。在TCP / IP中,网络层和运输层之间的区别是最为关键的:网络层( IP)提供点到点的服务,而运输层( TCP和UDP)提供端到端的服务。
在一个互联网上,每个接口都用IP地址来标识,尽管用户习惯使用主机名而不是IP地址。域名系统为主机名和IP地址之间提供动态的映射。端口号用来标识互相通信的应用程序。服务器使用知名端口号,而客户使用临时设定的端口号。