摘自:http://jpkc.nwpu.edu.cn/jp2006/rjjs/work/dzjc/rppt/chap08/08CH0005.HTM
TCP/IP(Transmission Control Protocol/Internet Protocol)传输控制协议/互连网络协议,是Internet上使用的网络协议。
8.4.1 TCP/IP分层
Internet网络体系结构以TCP/IP协议为核心。其中IP协议用于为各种不同的通信子网或局域网提供统一的互连平台,TCP协议则用于为应用程序提供端到端的控制和通信功能。
1. TCP/IP协议层次和协议集
由于TCP/IP协议开发先于OSI参考模型,故不完全和OSI参考模型对应。从体系结构上来看,TCP/IP基本上是OSI的7层模型的简化,它只分为4层:网络接口层、网络层、传输层和应用层。
(1)网络接口层(SubNetwork Layer)
TCP/IP协议的网络接口层与OSI协议的物理层、数据链路层以及网络层的部分相对应。该层没有规定新的物理层和数据链路层协议,允许通信子网采用已有的或将来的各种协议,例如以太网的802.3协议,分组交换网的X.25协议等。该层只定义了TCP/IP与各种通信子网之间的网络接口。网络接口层的功能是传输经网络层处理过的消息。
(2)网络层(Internet Layer)
该层与OSI网络层相对应,由于它是针对网际环境设计的,具有更强的网际通信能力。网络层协议为IP协议。它将传输层送来的消息组装成IP数据包,并且把IP数据包传递给网络接口层。IP提供端到端分组发送功能,标识网络号及主机节点地址的功能,为使IP数据包长度与通信子网允许的数据包长度匹配,提供了数据分段和重新组装的功能。
该层还提供建立独立的局域网之间的互连网络。在互连网络中,连接两个以上网络的节点称为路由器(网关),其允许网间的报文根据它的目的地址通过路由器传送到另一个网络。
(3)传输层(Transport Layer)
该层与OSI传输层相对应,为应用程序提供端到端通信功能。传输层有3个主要协议,其分别为传输控制协议TCP,用户数据报协议UDP和互联网控制消息协议ICMP。
TCP协议负责将用户数据按规定长度组成数据包发送,在接收端对数据包按顺序进行分解重组以恢复用户数据。TCP协议是以建立高可靠性信息传输为目的,为了可靠传输数据,该协议具有数据包的顺序控制、差错检测、检验以及再发送控制等功能。
UDP协议负责主机和网关以及Internet运行管理中心等的信息通信,控制管理网络的运行。
ICMP协议负责当数据包传输有误时,发送出错信息给数据包发送端主机,另外还具有控制数据包流量的功能。
(4)应用层(Application Layer)
该层包含了OSI会话层,表示层和应用层的功能,为用户提供各类服务。例如,远程登陆、文件传输、电子邮件、Web服务器等。
TCP/IP协议集以及各层次与OSI各层次对应关系如图8.8所示。
OSI层次 |
|
TCP/IP层次 |
|
TCP/IP协议集 |
|||||||
5~7层 |
|
应用层 |
|
SMTP |
DNS |
FTP |
RPC |
SNMP |
|||
4层 |
|
传输层 |
|
TCP |
UDP |
||||||
3层 |
|
网络层 |
|
IP(ICMP.ARP.RARP) |
|||||||
1~2层 |
|
网络接口层 |
|
Ethernet |
Token-Ring |
100BASE-T |
Others |
||||
图8.8 TCP/IP协议集以及分层结构
2.TCP/IP分层工作原理
(1)TCP/IP分层
TCP/IP的分层工作原理如图8.9所示。表示了两台主机上的应用程序之间传输报文的路径。主机B上的第n层接收到的正是主机A上的第n层发送出来的对象。
图8.9 TCP/IP分层工作原理
(2)TCP/IP模型的分界线
TCP/IP协议的概念性层次包含两个重要的划分,一个是协议地址的划分界线,以区分不同的寻址,另一个是操作系统的划分,以区分系统程序与应用程序。
网络接口层处理物理地址,该层协议已集成到操作系统中,属于系统软件。网络层与传输层处理IP地址,这两层协议也已集成到操作系统中,属于系统软件。应用层协议未集成到操作系统中,属于非系统软件。
(3)网络协议与操作系统的关系
计算机体系结构中的低层部分,即物理层和数据链路层协议,是和通信设备等硬件密切相关的,需要由网络接口卡和网络互连设备来实现。计算机体系结构中的高层部分,网络层协议和传输层协议,由计算机主机操作系统来实现,作为核心线程方式运行。网络层与数据链路层协议的接口以及服务调用,是通过操作系统中网卡驱动程序来实现的。处于TCP之上的应用层协议大部分使用TCP/IP协议提供的系统调用,它们处于用户程序的地位,以用户线程方式执行。
8.4.2 IP协议
IP协议为网络层协议,其内容包括:基本传输单元,也就是IP报文的类型与定义、IP报文的地址以及分配方法、IP报文的路由转发以及IP报文的分段与重组。
IP协议仅具有有限的报错功能,数据包在传输过程中的差错检测和恢复都由传输层协议TCP来完成。
1.IP数据报
IP数据报包括报文头和正文部分,其格式如图8.10所示,以及说明见表8.1。
0 |
4 |
8 |
16 19 24 31 |
||
版本 |
报头长度 |
服务级别 |
报文长度 |
||
标识 |
|
标志 |
分段偏移 |
||
生存时间 |
用户协议 |
报头校验和 |
|||
源IP地址 |
|||||
目的IP地址 |
|||||
选项 |
填充 |
||||
数据 |
|||||
…… |
|||||
图8.10 IP协议数据报格式
名 字 |
位数 |
说 明 |
版本号 |
4 |
此协议版本号 |
IP报头长度 |
4 |
IP数据报的报头长度(32位) |
服务级别 |
8 |
规定优先级、传送速率、吞吐量和可靠性等参量 |
报文长度 |
16 |
报关和数据两部分总长度(字节) |
标识 |
16 |
数据报标识,便于数据报分段与重装 |
标志 |
3 |
数据报是否分段标志 |
分段偏移 |
13 |
以64位为单位表示的分段偏移 |
生存时间 |
8 |
允许数据报在网间传输的存活时间 |
用户协议号 |
8 |
指出发送数据报的上层协议 |
报头校验和 |
16 |
只用于报头检查 |
源IP地址 |
32 |
数据报的源主机IP地址 |
目的IP地址 |
32 |
数据报的旧的主机IP地址 |
任选项 |
可变 |
规定附加服务,如时间戳、错误报告及特殊路由等 |
填充 |
可变 |
保证IP报头以32位为边界对齐 |
表8.1 IP数据报格式说明
2.数据报分段与重装
在各种物理网络中,数据帧的长度可以不一样,在互连网络中,IP协议首先要根据物理网络所允许的最大发送长度对上层协议提交的数据报进行长度检查,需要时把数据报分成若干个段发送,对数据报分段后,形成多个IP数据报,为了说明被分段数据报和IP数据报的关系,被分段IP数据报需设置相同的标识(IP)。每一个被分段的IP数据报要重新计算其报文长度,并且要表明该IP数据报在原始数据报中的位置。
在互连网络中,被分段的数据报独立传输,在经路由器转发时,由于路由可能不同,导致达目标主机时,接收到的IP数据报顺序与发送时的顺序不一致,因此必须根据IP数据报中相关字段(标识、长度、偏移及标志等)将被分段的数据报重新组装恢复为原始IP数据报(保留第一段IP数据报头),根据用户协议号提交给上层协议。
3.IP地址
IP地址是IP协议的核心,IP地址格式如图8.11所示。
|
0 7 |
8 1516 2324 31 |
|||||||
A类地址 |
0 |
网络地址 |
主机地址 |
||||||
|
|
||||||||
B类地址 |
1 |
0 |
网络地址 |
主机地址 |
|||||
|
|
||||||||
C类地址 |
1 |
1 |
0 |
网络地址 |
主机地址 |
||||
|
|
||||||||
D类地址 |
1 |
1 |
1 |
0 |
组播地址 |
||||
|
|
||||||||
E类地址 |
1 |
1 |
1 |
1 |
0 |
保留 |
|||
图8.11 IP地址格式
A类地址中网络地址126个(1个字节),主机地址16387064个(3个字节),其范围为0.0.0.0~127.255.255.255。A类地址用于大型网络,由国际网络中心来分配。
B类地址中网络地址16256个(2个字书),主机地址64576个(2个字节),其范围为128.0.0.0~191.255.255.255。B类地址用于各地区的网管中心,由欧州、北美和亚太三大区网络信息中心负责分配。
C类地址中网络地址2064512个(3个字节),主机地址254个(1个字节),其范围为192.0.0.0~223.255.255.255。C类地址用于校园网或企业网。由国家或地区网络信息中心负责分配。
D类地址为组播地址,E类地址保留。
4.子网和IP地址屏蔽码
由于Internet发展迅速,网络地址成为宝贵资源,为了提高IP地址的利用率,将大型网络划分为若干个逻辑上相互独立的子网,但网络地址不变,原主机地址成为子网主机地址。
IP地址屏蔽码是和IP地址配合的,用于说明某大型网络所具有的子网数,以及每个子网所包含的主机数,屏蔽码是对地址分类的扩展。
IP协议为每个网络接口分配一个IP地址,在有子网的IP地址中,其子网号是通过主机号字段的高几位二进制位来表示的,所占位数与子网数对应。如果把该接口IP地址和其屏蔽码相与,屏蔽码将IP地址中主机字段主机号屏蔽掉,即可得到该接口所在网络的子网号。以C类地址为例,例如,屏蔽码255.255.255.192(11000000B)表示有4个子网号,每个子网可以有64台主机,设IP地趾为
202.117.80.1 主机号为00000001
202.117.80.3 主机号为00000011
202.117.80.130 主机号为10000010
将上述IP地址与屏蔽码相与,可看出前两个IP地址的子网号为0号,属于同一网段,而第三个IP地址的子网号为i号,不属于同一网段。
5.路由选择
在互连网络中,每个主机和路由器(TCP/IP中称为网关)都保存有一个路由选择表,其基本格式参见图8.12
目的地址 |
路由器地址 |
忙闲度 |
图8.12 路由选择表基本格式
其中路由器地址指向IP数据报应送往的下一个路由器。忙闲度表示这个路由器发送数据的数量。当一个目的地址有多个路由时,IP协议总是选择忙闲度最小的路由。
6.ICMP,ARP和RARP协议
互连网控制报文协议ICMP(Internetwork Control Message Protocol)为差错和控制报文协议,用于传输错误报告和控制信息。由于IP协议提供不连接的数据报传送服务,须要由ICMP提供这类传输差错报告服务。
地址解析协议ARP(Address Resolution Protocol)提供IP地址到物理地址的映射服务。
逆向地址解析协议RARP(Reverse Address Resolution Protocol)提供从物理地址到IP地址的映射服务。
8.4.3 TCP协议
TCP为传输层协议,提供可靠的进程间通信机制,该协议可以自动纠正各种差错,TCP支持许多高层协议ULP(Upper Level Protocol),它提供一对ULP之间面向连接的传输服务,包括建立连接、数据传输和终止连接。TCP主要通过套接字(Socket)为ULP提供面向连接的传输服务。
1.接口和套接字
传输层协议和应用程序之间的数据接口由运行在某主机上的TCP协议为其分配端口号。为了使其具有全局唯一性,将此端口号和IP地址合起来组成套接字。
使用TCP协议的网络应用程序分为服务程序和客户程序。服务程序为其他主机提供服务,服务程序使用固定的端口号,例如Telnet服务端口号为23,FTP为21号,E-mail为25号。客户程序使用服务程序提供的服务,客户程序可选择通信端口号。服务程序运行后,在各自端口等待,如果希望使用服务程序提供的服务,可向该服务对应的套接字上发送消息。
2.TCP报文格式
TCP协议中的基本传输单元为段,TCP报文又称为TCP段。一个TCP段由段头和数据流两部分组成。其格式如图8.13所示,说明见表8.2。
源端口号 |
目的端口号 |
|||||||
序号 |
||||||||
确认号 |
||||||||
数据偏移值 |
保留 |
URG |
ACK |
FST |
RSH |
SYN |
FIN |
窗口大小 |
校验和 |
紧急数据指针 |
|||||||
选项 |
填充 |
|||||||
TCP数据 |
||||||||
图8.13 TCP报文格式
报头字段名 |
位 数 |
说 明 |
源端口号 |
16 |
本地通信端口 |
目的端口号 |
16 |
远地通信端口 |
序号(SEQ) |
32 |
数据部分第一个字节的序列号 |
确认号(ACK) |
32 |
表示本地希望接收的下一个数据字节的序号 |
数据偏移值 |
4 |
该TCP段中数据的起始位置 |
URG |
1 |
紧急数据指针有效标志,指示本段中包含紧急数据 |
ACK |
1 |
确认标志,指示段中确认号有效 |
PST |
1 |
复位连接标志,指示本段为复位段 |
RSH |
1 |
PUSH操作标志 |
SYN |
1 |
建立同步连接标志 |
FIN |
1 |
本地数据发送结束,终止连接标志 |
窗口大小 |
16 |
本地接收窗口(接收缓冲区)大小 |
校验和 |
16 |
包括TCP报头和数据在内的校验和 |
紧急数据指针 |
16 |
指示从发送数据序列号开始到紧急数据之后的第一个字节偏移值 |
选项 |
可变 |
提供任选服务 |
填充 |
可变 |
保证TCP报头以32位为边界对齐 |
表8.2 TCP报文格式说明
TCP数据流是无结构的字节流,这一特征允许TCP段长可变。两个使用TCP协议进行通信的对等实体间的通信,一般要经历建立连接、数据传输和终止连接3个阶段。TCP协议通过状态转换机制,可以保证可靠的执行各个阶段,为上层应用提供双向、可靠、顺序及无重复的数据流传输服务。
3.建立连接
TCP的连接建立,需要发送序列号和接收序列号,初始序列号由TCP在创建连接时分配,建立连接实际上是双方序列号同步的过程,建立连接时,每一方都发送自己的初始序列号,并且接收对方发送的序列号作为接收序列号,通过"三次握手"机制建立连接。TCP协议可以处理一方发起的连接请求或由双方同时发起的连接请求。正常连接建立过程如图8.14所示,同步标志SYN用于连接建立阶段。由发起方发送初始序列号为X,且SYN标志置位的段;由接收方回送初始序列为Y、SYN置位、ACK标志置位且应答序列号为X十1(表示希望接收的下一个数据字节的序列号)的响应段;最后发起方发送以ACK置位,应答序列号为Y十1应答的段。建立起连接。
4.关闭连接
连接的关闭由双方共同完成。关闭请求可以由一方发起也可以由双方同时发起。请求关闭方向对方发送FIN段请求关闭连接,接收方必须使用ACK段给予确认。关闭过程也是一个三次握手过程。
5.UDP协议
UDP协议是对IP协议集的扩充,提供了复用功能,区分一台主机中多个不同应用。UDP提供无连接服务,通讯开销很小,效率较高,适用于简单的请求/响应通信方式的应用,例如DNS应用等。
图8.14 TCP协议连续建立过程