TCPIP协议中数据封装及层次功能Word文件下载.docx
《TCPIP协议中数据封装及层次功能Word文件下载.docx》由会员分享,可在线阅读,更多相关《TCPIP协议中数据封装及层次功能Word文件下载.docx(30页珍藏版)》请在冰豆网上搜索。
第二节IGMP13
第六章ARPRARP协议14
第一节ARP14
第二节RARP15
第七章应用层协议15
第一节SNMP简单网络管理协议15
第二节FTP文件传输协议15
第三节SMTP简单邮件传输协议15
致谢16
参考文献:
17
前言
现在不同生产厂商生产的不同型号的计算机,它们运行完全不同的操作系统,但是TCP/IP协议族能让它们相互连接进行通信。
在这一点上,它的作用已远远超出了起初的设想,到90年代已发展成为计
算机之间最常用的组网形式,也因为它是一个开放系统,协议族的定义及其多种实现可以很轻松的公开得到。
协议族被称作“全球互联网”或者“因特网”的基础。
第一章协议层次
图1-1协议分层
1.
网络协议通常分不同的层次,每一层分别负责不同的通信功能,
TCP/IP协议族是一组不同层次
上的多个协议的组合,它通常被分成四个层次:
链路层、网络层、运输层、应用层,各自负责不同
的功能。
2.
链路层,也被称作数据链路层或者网络接口层,
通常包括操作系统中的网络连接设备的驱动程序和
计算机中应对的网络接口卡,它们一起处理与传输媒介的物理接口细节。
3.
网络层,也被称作互联网层,处理分组在网络中的活动,例如分组的路由选择。
在
TCP/IP协议族
中,网络层协议包括IP协议(网际协议),ICMP(Internet互联网控制报文协议
),以及IGMP协议
(Internet组管理协议)。
4.运输层主要为两台主机上的应用程序提供端到端的通信。
在TCP/IP协议族中,有两个互不相同的
传输协议:
TCP(传输控制协议)和UDP(用户数据报协议)。
TCP为两台主机提供面向连接的高可靠性的数据通信,它的工作包括把应用程序交给它的数据分
成合适数据报交给下层的网络层,确认收到的分组,设置发送最后确认分组的超时时钟等,由于运
输层提供了高可靠性的数据通信,因此应用层可以忽略所有细节。
UDP则为应用层提供一种非常简单的服务,它只是把数据报的分组从一台主机发送到另一台主机,
但并不保证该数据报能到达另一端,任何必需的可靠性必须有应用层来提供供
.
5.应用层负责处理特定的应用程序细节,几乎所有的TCP/IP实现都会提供下面这些通用的应用程序:
Telnet远程登陆、FTP文件传输协议、SMTP简单邮件传送协议、SNMP简单网络管理协议。
图1-2TCP/IP协议族中不同层次的协议
第二章数据封装
第一节数据封装
当应用程序用TCP传送数据时,数据被送入协议栈中,
送入网络。
其中每一层对收到的数据都要增加一些首部信息。
然后逐个通过每一层直到被当作一串比特流
TCP传给IP数据单元称作TCP报文段。
IP
传给网络接口层的数据单元称作
IP数据报(IPdatagram)。
通过以太网传输的比特流称作帧
(Frame)。
图2-1数据封装过程
图中帧头和帧尾下面所标注的数字是典型以太网帧首部的字节长度。
以太网数据帧的物理特性是其长度
必须在46-1500字节之间。
图1-3中IP和网络接口层之间传送的数据单元应该是分组(packet)。
分组
既可以是一个IP数据报,也可以是IP数据报的一个片(fragment)。
在传输层数据包称作段(segent),在网络层叫做数据报(datagram),在链路层叫做帧(frame)。
数
据封装成帧后发送到传输介质上,到达目的主机后每层协议再剥掉相应的首部,最后将应用层数据交给
应用程序处理。
由于TCP,UDP,ICMP,IGMP都要向IP传送数据,因此IP必须在生成的IP首部中加入标识,以
表明数据属于哪一层。
为此,IP在首部中存入一个8bit的数值,称作协议域。
其中1标识ICMP协议,
2标识IGMP协议,6标识为TCP协议,17标识为UDP协议。
同样,应用程序都可以使用TCP或UDP来传送数据。
运输层协议在生成报文首部时要存入一个应
用程序的标识符,TCP和UDP都用一个16bit的端口号来表示不同的应用程序,它们把源端口号和目
的端口号分别存入报文首部中。
网络层接口分别要发送和接收IP,ARP和RARP数据,因此也必须在以太网的帧首部中加入标识符,
以指明生成数据的网络层协议。
以太网的帧首部也有一个16bit的帧类型域。
第二节:
TCP/IP协议链路层数据封装
从图1-2中可以看出,在TCP/IP协议族中,链路层主要有三个目的:
(1)为IP模块发送和
接收IP数据报;
(2)为ARP模块发送ARP请求和接收ARP应答;
(3)为RARP发送RARP请
求和接收RARP应答。
TCP/IP支持多种不同的链路层协议,这取决于网络所使用的硬件。
2.1:
以太网和IEEE802封装
在TCP/IP协议中,以太网IP数据报的封装是在RFC894[Hornig1984]中定义的,IEEE802网络的数
据报封装在RFC1042[PostelandReynolds1988]中定义。
1.必须能发送和接收采用RFC894(以太网)封装格式的分组。
2.应该能接收与RFC894混合的RFC1042(IEEE802)封装格式的分组。
3.也许能够发送采用RFC1042封装的分组,如果主机能够同时发送两种类型的分组数据,那么发送
的分组必须是可以设置的,而且默认条件下必须是RFC894分组。
图2-2IEEE802.2/802.3(RFC1042)和以太网的封装格式(RFC894)
以上为两种不同形式的封装格式,两种帧格式都采用
48bit(6字节)的目的地址和源地址(
802.3允许
使用16bit的地址,但是一般是48bit地址),这就是硬件地址。
ARP和RARP协议对32bit的IP地址
和48bit的硬件地址进行映射。
后面的两字节在两种帧格式中互不相同,
在802标准定义的帧格式中,
长度字段是指它后续数据的字节
长度,但不包括CRC检验码。
以太网的类型字段定义了后续数据的类型。
在502标准定义的帧格式中,
类型字段则由后续的子网接入协议(
Sub-networkAccessProtocol,SNAP)的首部给出,
802定义的有
效长度值与以太网的有效类型值无一相同,这样就区分看两种帧格式。
在以太网帧格式中,数据字段之后就是数据,而在
802帧格式中,跟随在后面的是
3字节的802.2LLC
和5字节的802.2SNAP。
目的服务访问点(DestinationService
AccessPointDSAP)和源服务访问点
(SourceServiceAccessPointSSAP)的值都设为0xaa。
Ctrl
为0。
再接下来的2字节类型字段和以太网帧格式一样。
字段的值设为
3.随后三个字节
orgcode都置
CRC字段用于帧内后续字节差错的循环冗余码检验(检验和),802.3标准定义的帧和以太网帧格式都
最小长度要求,802.3规定数据部分必须至少为38字节,而对于以太网,则要求最少要有46字节,为
保证这点,必须在不足的空间插入填充(pad)字节。
2.2SLIP
串行线路
SLIP的全称是SerialLineIP。
它是一种在串行线路上对IP数据报进行封装的简单形式,在
RFC1055[Romkey1988]中的详细描述,SLIP适用于家庭中每台计算机几乎都有的RS-232串行端口和
高速调制解调器接入Internet。
SLIP协议的帧格式:
1.IP数据报以一个称作END(0xc0)的特殊字符结束,同时,为了防止数据报到来之前的线路噪声,那么END字符将结束这份错误的报文,这样当前的报文得以正确地传输,而前一个错误报文交给上层后,会发现其内容毫无意义而被丢弃。
如果IP报文中某个字符为
END,那么就要连续传输两个字节
0xdb和0xdc来取代它,0xdb这个特
殊字符被称作SLIP的ESC字符,但是它的值与ASCII码的ESC字符(0x1b)不同。
SLIP的ESC字符,那么就要连续传输两个字节
0xdb和0xdd来取代它。
下图为一个含有一个END字符和一个ESC字符的IP报文:
图
2-3SLIP
报文的封装
由于串行线路的速率通常较低而且通信经常是交互式的,交换。
于是人们提出了一个被称作CSLIP即压缩SLIP缩到3或5个字节,它能在CSLIP的每一端维持多达
因此在SLIP线路上有许多小的TCP分组进行
的新协议。
CSLIP一般能把上面的40个字节压
16个TCP连接,并且知道其中连接的每个首部
中某些被压缩的首部大大地缩短了交互响应时间。
2.3:
PPP点对点协议
PPP,点对点协议修改了SLIP协议中所有缺陷:
1.在串行链路上封装IP数据报的方法,PPP既支持数据为8位和无奇偶检验的异步模式,还支持面向
比特的同步链接。
2.建立、配置及测试数据链路的链路控制协议(LCP:
LinkControlProtocol)。
它允许通信双方进行协商,以确定不同的选项。
3.针对不同网络层协议的网络控制协议(NCPNetworkControlProtocol)体系,当前RFC定义的网络层有IP、OSI网络层、DECnet以及AppleTalk。
RFC1548[Simpson1993]描述了报文封装的方法和数据控制协议。
下图为PPP数据帧的格式:
2-4
PPP数据帧封装格式
接下来是协议字段,类似与以太网中类型字段的功能,当它的值为0x0021时,表示信息字段是一个IP
数据报,值为0xc021时,它表示信息字段是链路控制数据,它的值为0x8021时,表示信息字段是网络
控制数据。
CRC字段是一个循环冗余检验码,以检测数据帧中的错误。
由于标志字符的值是0x7e,因此当该字符出现在信息字段中时,PPP需要对它进行转义。
在同步链路
中,该过程是通过一种称作比特填充(bitstuffing)的硬件技术来完成的,在异步链路中,特殊字符0x7d
用作转义字符,当它出现在PPP数据帧中时,那么紧接着的字符的第6比特要取其补码。
第三章IP网际协议
第一节IP首部
IP是TCP/IP协议族中最为核心的协议,所有的TCP,UDP,ICMP及IGMP数据都以IP数据报格式传输。
IP数据报的首部格式如图所示:
3-1
数据报首部格式
图中的首部,最高位在左边,记为0bit;
最低位在右边,记为四个字节的32bit值以下面的次序传输:
首先是0~7bit,其次
31bit。
8~15bit,然后
16~31bit,最后是
24~31bit。
这种传输次序称作bigendian字节序。
由于TCP/IP首部种所有的二进制整数在网络中传输时都要求以
这种次序,因此它被称作网络字节序。
以其他形式存储二进制整数的机器,如littleendian格式,则必
须在传输数据之前把首部转换成网络字节序。
目前的协议版本号是4,因此IP有时也称作Ipv4。
首部长度指的是首部占32bit字的数目,包括任何选项。
由于它是4比特字段,因此首部长度最长为60
个字节。
服务类型(TOS)字段包括一个3bit的优先权子字段,4bit的TOS子字段和1bit未用位必须设置0。
4bit
的TOS代表:
最小时延、最大吞吐量、最高可靠性和最小费用。
4bit中只能置其中1bit。
如果4bit均
为0,那么意味着一般服务。
RFC1340【ReynoldsandPostel1992】描述了所有的标准应用如何设置这些服务类型。
总长度字段是指整个IP数据报的长度,以字节为单位。
利用首部长度字段和总长度字段,有可以知道
IP数据报中数据内容的起始位置和长度。
由于该字段长
16bit,所以IP数据报最长可达
65535字节。
当
数据报被分片时,该字段的值也随着变化。
总长度字段是
IP首部中必要的内容,因为一些数据链路需
要填充一些数据以达到最小长度。
尽管以太网的最小帧长为
46字节,但是IP数据可能会更短。
标志字段中有一个比特称作“不分片”位,如果将这一比特置为
1,IP将不对数据报进行分片。
相反把
数据报丢弃并发送一个
ICMP差错报文给起始端。
标识字段唯一地标识主机发送的每一份数据报,通常每发一份报文它的值就会加
1。
片偏移字段指的是该片偏移原始数据报开始处的位置。
TTL(time-to-time)生存时间字段设置了数据报可以经过的最多路由器数。
它指定了数据报的生存时间,
TTL的初始值由源主机设置,一旦经过一个处理它的路由器,它的值就减去
1.当该字段的值为0
时,
数据报就被丢弃,并发送
ICMP报文通知源主机。
协议字段,根据它可以识别是哪个协议向
IP传送数据。
首部检验和字段是根据
IP首部计算的检验和码,它不对首部后面的数据进行计算。
为了计算一份数据
报的IP检验和,首先把检验和字段置为
0,然后,对首部中每个
16bit进行二进制反码求和,结果存在
检验和字段中。
当收到一份IP数据报后,同样对首部中每个
16bit进行二进制反码的求和。
由于接收方
在计算过程中包含了发送方存在首部中的检验和,
因此,如果首部在传输过程中没有发生任何差错,
那
么接收方计算的结果为全
1.如果不为全
1(即检验和错误),那么
IP就丢弃收到的数据报。
但是不生
成差错报文,由上层发现丢失的数据报并进行重传。
每一份IP数据报都含源
IP和目的IP地址,她们都是
32bit的值,来定义数据报的目的和源头。
最后一个字段是任选项,
是数据报中的一个可变长的可选信息。
目前定义如下:
安全和处理限制、
记录
路径、时间时间戳、宽松的源站选路、严格的源站选路。
第二节
IP地址划分和子网掩码
为了便于寻找和层次的构造网络,
IP地址被分为A、B、C、D、E五类,目前商业应用中只有
A、
B、C三类。
A类地址:
A类地址的网络标识由第一组
8位二进制数表示,网络中的主机标识占
3组8位二进制,A
类地址的特点是网络标识的第一位二进制数值必须为
0。
也就是说A类地址允许有
126个网段,每个网
络大约允许1670万台主机,通常分配给拥有大量主机的网络。
IP地址范围:
1.0.0.1-127.255.255.254
B类地址:
B类地址的网络标识由前两组
8位二进制数表示,网络中的主机标识占两组
8位二进制数,
B类地址的特点是网络标识的前两位二进制数必须位
10。
B类地址允许有
16384个网段,每个网络允
许有65533台主机,适用于结点比较多的网络。
128.1.0.1-191.255.255.254
C类地址:
C类地址的网络标识由前
3组8位二进制数表示,网络中主机标识占
1组8位二进制数,C
类地址的特点是网络标识的前
3位二进制数取值必须为
110。
具有C类地址的网络允许有
254台主机,
适用于结点比较少的网络。
IP
地址范围:
192.0.1.1-223.255.255.255
任何网络设备都需要设定
IP地址,而且还要设置子网掩码,子网掩码的目的是有
IP地址中也能获得网
络编码,也就是说IP地址和子网掩码和得到网络编码。
A类网络:
1.0.0.0-126.255.255.255
子网掩码:
255.0.0.0
B类网络:
128.0.0.0-191.255.255.255
255.255.0.0
C类网络:
192.0.0.0-223.255.255.255
255.255.255.0
子网掩码也可以用来划分子网,将一个网络划分成若干子网,每个子网的区分都靠子网掩码。
第四章TCP/UDP
第一节UDP无连接不可靠协议
由于IP层已经把IP数据报分配给TCP或者UDP,因此TCP端口号由TCP来查看,UDP端口号由
UDP来查看。
TCP端口号与UDP端口号是相互独立的。
UDP是一个简单的面向数据报的运输层协议:
进程的每个输出操作都正好产生一个UDP数据报,并组
装成一个待发送的IP数据报。
UDP数据报封装成一份IP数据报的格式:
图4-1UDP封装
UDP不提供可靠性:
它把应用程序传送给IP层的数据发送出去,但是并不保证它们能到达目的地,由
于缺乏可靠性,就产生了种可靠协议TCP。
图4-2UDP首部
UDP首部各字段:
端口号表示发送进程和接收进程。
UDP长度字段指的是UDP首部和UDP数据的字节长度,该字节的最小值为8字节(发送一份0字节
的UDP数据报是OK)。
这个UDP长度是有冗余的。
IP数据报长度指的是数据报全长,因此UDP数
据报长度是全长减去IP首部的长度。
UDP检验和:
UDP检验和覆盖UDP首部和UDP数据,首先,UDP数据报的长度可以为奇数字节,但
是检验和算法是把若干个16bit字相加。
其次,UDP数据报和TCP段都包含一个12字节的伪首部,它是为了计算检验和而设置的。
第二节TCP面向连接的可靠协议
TCP向应用层提供与UDP完全不同的服务,TCP提供一种面向