目录
1.1 TCP/IP协议的历史和发展过程
1.2 TCP/IP协议的体系结构模型
2.1 IP网际层的功能
2.2 IP地址及其转换
2.2.1 IP地址
2.2.2 IP地址的转换
2.2.3 子网技术
2.3 IP数据报的格式
2.4 Internet控制报文协议ICMP
3.1 TCP运输层协议概述
3.2 端口及套接字
3.3 TCP报文的格式
3.4 差错控制与流量控制
3.5 TCP连接管理
3.6 用户数据报协议UDP
4.1 应用层的概述
4.2 应用层协议简介
4.2.1 文件传送协议FTP、TFTP
4.2.2 简单邮件传输协议SMTP
4.2.3 远程登录TELNET
论TCP/IP协议的体系的结构及其各层协议
(易家傅 99714001 卢凌凌 99714004)
摘要: 本文主要论述了TCP/IP协议体系结构及各层协议。重点说明IP网际协议的数据报格式、IP地址及地址转换,TCP传输控制协议的数据报格式、差错控制、流量控制和连接的建立等原理。最后还简介了应用层的几个常用协议。
关键字:TCP/IP IP地址 子网掩码 端口 套接字
引言:
当前的世界经济正在从工业经济向知识经济转变,这种以知识基础的经济有两个重要的特点,就是信息化和全球化。而要实现信息化和全球化,就必须依靠完善的网络。计算机网络是其中最重要的一部分,然而计算机网络远比电信网络复杂,它不仅仅是计算机之间简单的连接,还是相互通信的计算机系统之间的高度协调工作,因此必须将这庞大而复杂的问题分层处理,转化成若干个局部问题,从而形成了像建筑框架那样的网络体系结构。由于Internet已得到全世界的承认,因此Internet所使用的TCP/IP体系计算机网络中占有真重要的地位,了解其内容和工作原理对学习计算机网络是很有帮助的。
1.1 TCP/IP协议的历史和发展过程
TCP协议最早由斯坦福大学的两名研究人员于1973年提出。1983年,TCP/IP被Unix 4.2BSD系统采用。随着Unix的成功,TCP/IP逐步成为Unix机器的标准网络协议。Internet的前身ARPANET最初使用NCP(Network Control Protocol)协议,由于TCP/IP协议具有跨平台特性,ARPANET的实验人员在经过对TCP/IP的改进以后,规定连入ARPANET的计算机都必须采用TCP/IP协议。随着ARPANET逐渐发展成为Internet,TCP/IP协议就成为Internet的标准连接协议。
1.2 TCP/IP协议的体系结构模型
TCP/IP协议其实是一个协议集合,它包括了TCP协议(Transport Control Protocol,传输控制协议)、IP协议(Internet Protocol Internet协议)及其它一些协议。如图1,TCP/IP体系结构模型自下往上分别是:
(1)网络接口层:严格来说它不是一个层次,而仅仅是一个接口,用以提供在下面的数据链路层和物理层的接口。网络接口层并没有什么具体的内容,这里就不再讨论了。 图1
(2)IP网络层:主要有网际协议IP,地址解析协议ARP,逆地址解析协议RARP。
(3)TCP运输层:有运输控制协议TCP,用户数据报协议UDP。
(4)应用层:有TELNET,FTP,SMTP等应用层协议。
层与层之间的关系是,下层总是为上一层服务的,上层屏蔽下一层的服务细节。
2.1 IP网际层的功能
不同的物理网络技术有不同的编址方式;不同物理网络中的主机,有不同的物理网络地址。网间网技术是将不同物理网络技术统一起来的高层软件术。网间网技术采用一种全局通用的地址格式,为全网的每一网络和每一主机都分配一个网间网地址,以此屏蔽物理网络地址的差异。IP协议提供一种全网间网通用的地址格式,并在统一管理下进行地址分配,保证一个地址对应一台网间网主机(包括网关),这样物理地址的差异被IP层所屏蔽。IP提供的是无连接服务。
2.2 IP地址及其转换
2.2.1 IP地址
每个Internet上的主机和路由器都有一个IP地址,包括网络号和主机号,其中网络号标识该网络,而主机号标识该网络中的主机。所有的IP地址都是32位,分成4个字段,每个字段8位。
32位的IP地址可以有五种格式,如图2所示:
IP地址通常用带点十进制记法来书写,即IP地址写成四个十进制数,相互之间用小数点隔开,每个十进制数(从0到255)表示IP地址的一个字节。值得指出的是0和1有特殊的意义,见表格1:
Net-id | Host-id | 源地址使用 | 目的地址使用 | 代表的意思 |
0 | 0 | 可以 | 不可 | 在本网络上的主机 |
0 | Host-id | 可以 | 不可 | 在网络上的某个主机 |
全1 | 全1 | 不可 | 可以 | 只在本网络上进行广播 |
Net-id | 全1 | 不可 | 可以 | 对net-id上的所以主机进行广播 |
127 | 任何数 | 可以 | 可以 | 用作本地软件回送测试之用 |
表格1
2.2.2 IP地址的转换
IP地址是网络层的地址,而下传到链路层要转变为MAC帧后才能发送到网络。而MAC帧使用的是硬件地址。如何将32位的IP地址转变成48位的局域网 地址,这就是地址解析协议ARP要解决的问题。
假设是在本局域网中,A主机向B主机发生数据报。首先A主机查看ARP高速缓存内的IP地址到物理地址的映射表,如果找到就写入MAC帧发送,否则进行以下步骤:
(1) 在本局域网上广播发送一个ARP请求分组,上面有主机B的IP地址;
(2) 在本局域网上的所以主机上运行的ARP进程都收到此ARP请求分组;
(3) 主机B在ARP请求分组中见到自己的IP地址,就向主机A发送一个ARP响应分组,上面写入自己的物理地址;
(4) 主机A收到主B的ARP响应分组后,就在其ARP高速缓存中写入主机B的IP地址到物理地址的映射。
有时还要用到逆地址解析协议RARP使只知道自己物理地址的主机能够知道其IP地址,如无盘工作站的引导就可以通过逆地址解析协议RARP来解决。
2.2.3 子网技术
我们知道一个单位分配到的IP地址是IP地址中网络号net-id,而后面的主机号host-id则由本单位进行分配。若该单位的所有主机都使用同一个网络号,主机的数量很多,分布在很大的地理范围时,往往需要一些网桥将这些主机互连起来。网桥的缺点较多,例如,容易引起广播风暴,同时当网络出现故障时也不太容易隔离和管理。为了让本单位的主机便于管理,可以将本单位所属主机划分为若干个子网,用IP 地址中的主机号字段中的前若干个比特作为“子网号字段”,后面剩下来的仍为主机号字段。这样便可以用路由器把本单位的各子网互连起来,使全单位的网络便于管理。从外部看,这个单位只有一个网络号。只有当外面的分组进入到本单位范围后,再由该单位的路由器根据子网号进行选路,最后找到目的主机。这样一来该单位的网络管理就很方便得多了。同时IP地址的使用不至于造成很大的浪费,缓解了日益增加的局域网和网上主机对IP地址的需求。
如图3所示,说明了子网掩码的意义。每一个路由器当收到一个分组时,首先检查该分组的IP地址中的网络号,若不是本网络号则发送到下一站路由器,若是本网络号则用子网掩码与IP地址按位相与运算,然后取出子网号进行判断,决定是发送到其他子网,或直接交付给本网络的主机端口。
2.3 IP数据报的格式
IP数据报的格式能够说明IP协议都具有什么样的功能,图4就是数据报的格式。
从图4中可以看出,一个数据报首部由和数据两部分组成。首部的前20字节是固定部分,后一部分则是可变部分。
数据报首部的固定部分中的各字段
。版本 占4bit,指 的版本。通信双方使用的 协议的版本必须一致。
。首部长度
占4bit,可表示的最大数值是15个单位(每个单位为4字节),因此IP的首部长度的最大值是60 字节。当IP分组的首部长度不是4字节的整数倍的时开始,这样在实现起来会比较方便。首部长度的限制为60 个字节的缺点是有时(如采用源站选路的时)不够用。但这样的用意是要用户尽量减少额外开销。
。服务类型
占8bit用来获得更好的服务,其意义见图一的上面部分所示。服务类型字段的前三个比特表示优先级,它可使数据报具有8个有限级中的一个。
第四个比特是D比特,表示要求有更低的时延。
第五个比特是T比特,表示要求有更高的吞吐量。
第六个比特是R比特,表示要求有更高的可靠性,即在数据报传送的过程中,被节点交换机丢弃的概率比较更小一些。
第七个比特是C比特,是新增加的,表示要求选择费用更低廉的路由。
最后一个字节目前尚未使用。
。总长度
总长度指首部和数据之和的长度,单位为字节。
总长度字段为16bit,因此数据报的最大长度为65535字节。这在目前是够用的。
当很长的数据报要分片记性传送时,“总长度”不是指 数据报长度,而是指分片后的首部长度和数据长度的总和。
。标识
标识字段是为了使分片后的各数据报最后能准确地重装成为原来的数据报。请注意:这里的“标识”并没有顺序号的意思,因为IP是无连接服务,数据报不存在按序接受的问题。
。标志
占3bit 。目前只有前两个比特有意义。
标志字段中的最低位记为MF(More Fragment)。MF=1即表示后面还有分片的数据报。MF=0表示这已是若干数据报片中的最后一个。
标志字段中间的一位记为DF (Don't Fragment).只有当MF=0时才允许分片。
。片偏移
片偏移指出:较长的分组在分片后,某个片在原分组中的相对位置。也就是说,相对于用户数据字段的起点,该片从何处开始。片偏移以8个字节为偏移单位。
。寿命
寿命字段记为TTL(Time To Live), 其单位为秒,建议寿命值为32秒。
。协议
占8bit,协议字段指出此数据报携带的运输层的数据是使用何种协议以便目的主机的IP层知道应将此数据报上交给哪个进程。常用的协议和相应的协议字段值是:UDP(17),TCP(6),ICMP(1),GGP(3)。
。首部检验和
此字段只检验数据报的首部不包括数据部分。IP检验和的计算方法是:将 数据报首部看成为16bit字的序列。先将检验和字段置零,将所有的16bit字相加后,将和的二进制反码写进检验和字段。收到数据报后,将首部的16bit字的序列再相加一次,若首部未发生任何变化,则和必全为1,否则即认为出错,并将数据报丢弃。
IP数据报首部的可变部分主要用来进行网络测试或调试,可选项是变长的,定义了5种选项:即安全性、严格路由选择、宽松路由选择、路由记录、时间标记。
2.4 Internet控制报文协议ICMP
ICMP主要由网际网中的主机和路由器使用,用来交换支持数据报传输的信息。通常ICMP路由问题而引起的差错报告,但是同ICMP一起使用的有十一种不同类型的报文。主要分成为两种类型,即ICMP差错报文和ICMP询问报文。
在ICMP差错报文中,改变路由报文使用的最多,它用于更新主机的路由表。ICMP源站抑制报文用于控制网络拥塞,解决速率较高的源主机向速率较低的目的主机发送数据报时的匹配问题。
询问报文主要有:
(1) Echo请求报文:用于测试目的站是否可达到,及其有关状态。
(2) 时间戳请求报文:可用来进行时钟同步和测量时间。
(3) 地址掩码请求报文:可使主机向子网掩码服务器得到某个接口的地址掩码
3.1 TCP运输层协议概述
从通信和信息处理的角度看,运输层属于面向通信部分的最高层。但从网络功能或用户功能来划分,则运输层又属于用户功能中的最低层。运输层向高层用户屏蔽了下面通信子网的细节,使用户看不到实现通信功能的物理链路是什么,看不见数据链路采用的是什么协议。TCP协议提供的是面向连接服务,是在不可靠的网络服务上提供端到端的可靠字节流。
3.2 端口及套接字
端口是应用层与运输实体进行交互的接口。端口号是一个16bit的地址,不同的应用进程用 不同的端口号来标识。端口号分为两类,一类是专门分配给一些最常用的应用程序,这叫熟知端口(well—known port),数值为0-1023。
“熟知”就表示这些端口号是TCP/IP体系确定并公布的;另外一类则是一般的端口号,用来随时分配给请求通信的客户进程。
套接字即是IP地址与端口号的组合,TCP的一个连接就是以一对套接字来标识的,所以在运输层通信的一对套接字必须是唯一的。
3.3 TCP报文的格式
下图是TCP报文格式图:
。源端口和目的端口
各占两个字节。端口是运输层与高层的服务接口,16bit 的端口, 32bit的IP地址,构成了相当于运输层服务访问点TSAP的地址(总共是48bit)。
。序列号
占四个字节,是本报文段所发送的数据部分第一个字节的序号。在 TCP传送的数据流中每一个字节都有一个序号。
。确认序号
占四个字节,是期望收到对方下次发送的数据的第一个字节的序号,也就是期望收到的下一个报文段的首部中的序号。由于序号字段有32bit长,可对4GB的数据进行编号,这样就可以保证序号重复使用时就序号的数据早已在网络中消失了。
。数据偏移量
占4bit,这是TCP报文段首部的长度,用于指出数据开始的地方离TCP报文段的起始处有多远。“数据偏移”的单位是32bit字,
。保留位 6bit,这些位必须是0;
。控制位
占6bit,各比特意义如下:紧急比特URG,当URG=1时,表明此报文段应尽快发送而不要按原来的排队来传送,应与紧急指针字段配合使用;确认比特ACK,当ACK=1时确认序号字段才有意义;急迫比特PSH,当PSH=1时,表明请求远地TCP将本报文段立即传送给其应用层,而不等到整个缓冲区满后再向上交付;重建比特RST,当RST=1时,表明出现严重错误,必须释放连接,然后重新建立运输连接;同步比特SYN,当SYN=1而ACK=0时,表明这是一个连接请求报文段,若对方同意建立连接,则应在发回的报文段中使SYN=1且ACK=1;终止比特FIN,当FIN=1时,表明发送的字节串已经发送完毕,并要求释放运输连接。
。窗口 占两字节,是报文段发送方的接受窗口,单位为字节。
。检验和
占两字节,检验的范围包括首部和数据两部分,在计算检验和时,首先要在TCP报文段的前面加上一个12字节的伪首部,然后接收端在计算检验和时仍然要加上伪首部。
。选项
长度可变。TCP的规定一种选项即最长报文段MSS用于告诉对方的TCP:本地的缓冲区所能接收的报文段的最大长度。
。填充
不定长,填充的内容必须为0,它是为了保证包头的结合和数据的开始
处偏移量能够被32整除;
3.4 差错控制
TCP不是按传送的报文段来编号。TCP将所要传送的整个报文看成一个个字节组成的数据流,然后对每一个字节编一个序号。在连接建立时双方要商定初始序号。TCP就将每一次传送的报文段中的第一个数据字节的序号,放在TCP首部的序号字段中。TCP的确认是对收到的数据的最高序号表示确认。但返回的确认序号是以收到的数据的最高序号加1。也就是说确认序号表示希望下一次收到的第一个数据字节的序号。
若发送方在规定的设置时间内没有收到确认,又要将未被确认的报文段重新发送。接受方若收到有差错的报文段,则丢弃此报文段(不发送否认息)。
若收到重复的报文段,也要将其丢弃,但要发送确认信息。若收到的报文段无差错,只是未按序号,那么应该如何处理?TCP对此未做明确规定,而是让TCP的实现者来自行确定。或者将不按序的报文段丢弃,或者先将其暂存于接收缓冲区内,待所缺序号的报文段收齐后再一起上交应用层。采用后一种策略对网络的性能会更好些。
3.5 TCP的流量控制
TCP采用可变发送窗口的方式进行流量控制。发送窗口是指当发送端在未收到确认时还能够继续发送报文段的个数。窗口大小的单位是字节。在TCP报文段首部的窗口字段写入的数值就是当前设定的接收窗口数值。
发送窗口在连接建立时由双方商定。在通信的过程中接收端可根据自己的资源情况,随时动态地调整自己的接收窗口,然后告诉对方,使对方的发送窗口和自己的接收窗口一致。
实现流量控制并非仅仅为了使接收端来得及接收。如果发送端发出的报文过多会使网络负荷过重。由此会引起报文段的时延增大,这将会使主机不能及时地收到确认,因此会重发更多的报文段,而这又会进一步加剧网络的拥塞。为了避免发生拥塞,主机应当降低发送速率。
3.5 TCP连接管理
运输连接的建立和释放是每一次面向连接通信中必不可少的过程,运输连接的管理就使运输连接的建立和释放都能正常的进行。
在连接建立的过程中要解决以下三个问题:
(1) 要使每一方都知道对方的存在;
(2) 要允许双方协商一些参数(如,最大报文段长度,最大窗口的大等);
(3) 能够运输实体资源(如缓冲区大小,连接表中的项目等)进行分配。
在数据连接建立的过程叫做三次握手:
(1) 主机A的TCP向主机B发送请求连接报文段,其首部中的同步比特SYN应置1,同时选择一个序号X,商定为起始序号;
(2) 主机B的TCP收到连接请求报文段后,如果同意则发回确认,在确认报文段中置1,确认序号为X+1,同时为自己选择一个序号Y。
(3) 主机A的TCP收到此报文段后还要向B给出确认,其确认序号为Y+1;
(4) 各主机的TCP通知上层应用进程连接已建立。
在数据传输结束后,通信的双方都可以发出释放连接的请求。与建立连接相类似,释放过程也是三次握手:
(1) 假设A先发出释放请求,则在发给B的TCP报文段首部的终止比特FIN1;
(2) B收到请求后发出确认,此时A到B的连接就释放了,连接处于半关闭状态;
(3) 若B也发出释放请求,A收到后发出确认。这时反向连接也释放了。整个连接就全部释放了。
3.6 用户数据报协议UDP
用户数据报协议UDP只在IP的数据报服务的基础上增加很少的一点功能,看图1,很形象的说明了UDP和TCP之间的差别。UDP的可靠服务必须由应用层来完成。
UDP的首部字段很简单,只有8个字节,由四个字段组成,每个字段都是两个字节。分别为:源端口字段,目的端口字段,长度字段,检验和字段。
4.1 应用层的概述
应用层协议并不是解决用户各种具体运用的协议,解决具体应用问题的应该是应用进程,应用层则是规定应用进程在通信时所遵循的协议。
4.2 应用层协议简介
4.2.1 文件传送协议FTP、TFTP
FTP是Internet上使用最广泛的文件传送协议,它屏蔽了各计算机系统的字节,因而适合于异构网络中任意计算机之间传送文件,它支持许多不同文件类型和文件组织形式。FTP是基于TCP的,它使用的端口号为21。
TFTP是FTP功能的一个子集,简化了FTP实现的复杂性,TFTP使用的是UDP数据报,因此TFTP要有自己的差错纠正措施。TFTP只支持文件传输,而不支持交互,因此没有庞大的命令集,其端口号为69。
4.2.2 简单邮件传输协议SMTP
SMTP就是在两个报文传送代理MTA之间的通信协议。SMTP规定了十四条命令和二十一种应答信息,由一个三位数字的代码开始,后面附上(也可不附上)很简单的文字说明。SMTP通信的三个主要阶段是:(1)连接建立;(2)邮件传送;(3)连接释放。
4.2.3 远程登录TELNET
TELNET是一个简单的终端协议。用户用TELNET就可以在其所在地通过TCP连接注册到远地的另一个主机上。TELNET能把用户的击键传到远地主机,同时也能把远地主机的输出通过TCP连接返回到用户屏幕。这种服务是透明的,因为用户感觉到好像键盘和显示器是直接连在远地主机上。
结束语:TCP协议与IP协议是TCP/IP体系结构中的关键,正是由于IP网际协议解决了异构网之间的连接与寻址问题,TCP运输协议解决了端到端的可靠字节服务,使得Internet得到了广泛的应用。TCP/IP协议将不断地得到完善,IPV6将成为下一代的IP,其功能将更加强大。