J基础篇第2章网络模型及TCPIP协议簇cllWord格式.docx
- 文档编号:19683333
- 上传时间:2023-01-08
- 格式:DOCX
- 页数:24
- 大小:199.19KB
J基础篇第2章网络模型及TCPIP协议簇cllWord格式.docx
《J基础篇第2章网络模型及TCPIP协议簇cllWord格式.docx》由会员分享,可在线阅读,更多相关《J基础篇第2章网络模型及TCPIP协议簇cllWord格式.docx(24页珍藏版)》请在冰豆网上搜索。
以太网协议、PPP协议、帧中继协议、ATM等。
网络层:
有时也称作互连网层,处理分组在网络中的活动,例如分组的路由选择。
在TCP/IP协议簇中,网络层协议包括IP协议(网际协议),ICMP协议(Internet互连网控制报文协议),ARP/RARP(地址解析/逆向地址解析协议),以及IGMP协议(Internet组管理协议)。
传输层:
主要为两台主机上的应用程序提供端到端的通信。
在TCP/IP协议簇中,有两个互不相同的传输协议:
TCP(传输控制协议)和UDP(用户数据报协议),它们分别承载不同的应用。
应用层:
负责处理特定的应用程序细节。
几乎各种不同的TCP/IP实现都会提供下面这些通用的应用程序:
·
Telnet远程登录
FTP文件传输协议
SMTP用于电子邮件的简单邮件传输协议
SNMP简单网络管理协议
严格来讲,分层模型的动机就是将各层的功能尽量独立,每层的功能对另一层来说是透明的,只对通信的另一端负责,为编程和诊断提供良好的层次隔离,然而实际情况并非如此,首先软件编程上完全按照分层模型来做,编程效率会降低,与其分层,不如按功能实现来模块化。
其次,对于许多功能实现来说,必须实现两层子间的交互,这又违背了当初的出发点,比如链路层在成帧时需要接收端的物理地址,该地址必须由网络层处理ARP地址解析才行,简单地将ARP放在那一层都有些牵强。
所以说,分层模型对于理解网络的抽象性是有益处的,它有助于指导网络入门,但并不是网络的精髓,只有结合具体的系统分析才有实际意义。
TCP/IP封装过程
如下图2-2分析TCP/IP的封装是如何进行的。
数据由文本username组成,它被封装在传输层的段中,该段再封装到网络层报文包中,网络层报文包再封装到数据链路帧,以便在所选的介质上传送。
当系统接收到数据时,是拆封/多路分解过程。
当数据沿着协议栈向上传递时,检查帧的格式,决定网络类型,并去掉帧的格式,检查内含的报文包,决定传输协议。
数据由某个传输层处理,最后数据递交给正确的应用程序。
路由器提示:
username:
传输层:
传输层数据段=头(SP、DP)+数据(username:
)
网络层:
网络层数据包=头(SA、DA)+传输层数据段
数据链路层:
数据链路层帧=头(DMAC、SMAC)+网络层数据包+TR
图2-2TCP/IP封装
协议栈多路复用
图2-3TCP/IP协议多路复用
在TCP/IP协议栈各个层次中的段、报文包和帧头部中都有控制字节,对于传送数据时,是标识数据源;
对于接收数据时,是标识处理数据的上层。
图2-3说明了TCP/IP协议栈内部的控制字节。
当从物理介质收到帧时,以太网控制器只将帧的MAC地址与控制器卡的(包括接口所认识的广播及多路广播地址)MAC地址一致的报文传递到上层。
以太网软件接收帧并检查协议类型代码以决定帧中数据类型,如代码0x800表明所封装的是IP报文包,0806表明所封装的是ARP报文包。
网络层报文包由IP处理。
检查IP头部及目的地址的有效性,若目的地址是本系统的,检查报文协议标识码(ID)。
协议ID决定哪个协议应该接收此数据包。
如协议代码6表示TCP,协议代码17表示UDP。
接下来通过检查TCP段或UDP数据报文以确定端口号,从而识别由哪个应用接收数据。
如端口号23留给Telnet,端口号25留给SMTP。
TCP/IP协议簇的内涵十分丰富,并非只有TCP和IP两个协议,它已经围绕IP发展成为了一个庞大的家族,这里我们将介绍TCP/IP协议簇中最常见、最重要的部分。
链路层协议
根据分层操作的思想,每一层对上一层送来的数据进行处理时要加上一个报头(首部信息),有时还要加上尾部信息,这称为数据包封装。
链路层的工作是将IP数据包按照链路协议定义的格式进行封装,并按照硬件接口的编码方式转成合适的基带信号发送到传输介质上。
该层数据一般称为数据帧。
常见的以太网(IEEE802.3等)、令牌环网(IEEE802.5)、帧中继、ATM、HDLC、PPP、Q.921都是链路层协议,但每个协议的封装格式各不相同。
例如以太网(EthernetII)协议的封装格式如图2-4。
前导码
目的地址
源地址
协议类型
数据
CRC
8字节
6字节
2字节
46~1500字节
4字节
图2-4常见的以太网(EthernetII)协议的封装格式
两字节的协议类型字段用来识别封装的协议类型:
0800表示封装的是IP数据包,0806表示封装的是ARP地址解析请求/应答数据包,8035表示封装的是RARP请求/应答数据包,8137表示封装的是IPX数据包。
封装好的数据帧在线路空闲时(用CSMA/CD载波侦听多路存取/碰撞检测的方法来检测)按照曼彻斯特编码将数据转成高低电平发送到线路上。
线速路由器中常用的一种链路层帧格式为点到点协议(PPP)中的HDLC帧格式,IP数据包被封装成ISOHDLC帧格式,然后再映射进同步数字序列SDH中去透明传输,路由器上这样的接口常称为POS接口(PacketoverSDH)。
PPPinHDLC帧格式如图2-5所示。
标记
地址
控制
协议
帧校验
7E
FF
03
2字节
1500字节
1字节
图2-5PPPinHDLC帧格式
协议字段为0021时表示数据部分为IP数据包,C021表示数据部分为LCP链路控制协议,8021为NCP网络控制协议,C023为PAP密码验证,C223为CHAP质询握手验证协议。
网络层协议
比较严格的说网络层的协议就是IP,ICMP、ARP/RARP是帮助IP完成寻址的功能,因此也被认为是第三层的协议。
IP协议
全球INTERNET网的广泛应用使IP协议深入人心。
IP协议以其简单、有效、开放性成为事实上的工业标准。
IP协议使异种网互联方便可行,尤其值得一提的是它对下层通信技术有巨大包容性。
IP协议作为通信子网的最高层,提供无连接的数据报传输机制。
IP协议是点到点的,核心问题是寻径。
它向上层提供统一的IP数据报,使得各种物理帧的差异性对上层协议不复存在。
互连网协议IP是TCP/IP体系中两个最重要的协议之一。
与IP协议配套使用的还有三个协议:
地址转换协议ARP(AddressResolutionProtocol)
反向地址转换协议RARP(ReverseAddressResolutionProtocol)
Internet控制报文协议ICMP(InternetControlMessageProtcol)
Telnet,FTP,TFTP
TCP,UDP
图2-6IP协议及其相关协议
如图2-6中画出了这三个协议和IP协议的关系。
在这一层中,ARP和RARP画在最下面,因为IP经常要使用着两个协议。
ICMP画在这一层的上部,因为它要使用IP协议。
下图2-7是IP数据报的格式。
4位版本
4位首部长度
8位服务类型(TOS)
16位总长度
16位标识
3位标志
13位片偏移
8位生存时间(TTL)
8位协议标识
16位首部检验和
32位源IP地址
可变长度
32位目的IP地址
长度可变的任选字段
填充
图2-7TP数据报格式
从上图可看出,一个IP数据报由首部和数据两部分组成。
首部的前一部分长度是固定的20个字节,后面部分的长度则是可变长度。
下面介绍首部各字段的意义。
版本,该字段占4bit,指IP协议的版本。
通信双方使用的IP协议的版本必须一致。
目前使用的IP协议版本为4,下一代的版本为IPv6。
首部长度,该字段占4bit,可表示的最大数值是15个单位(一个单位为4字节),因此IP的首部长度的最大值是60字节。
普通IP数据包是没有任选项的,因此该字段的值为5。
如果有任选项,该字段值最大为15。
路由器收到IP包后对此字段要做检查,带任选项的IP数据包在转发前要做特殊处理。
当IP分组的首部长度不是4字节的整数倍时,必须利用最后一个填充字段加以填充。
这样,数据部分永远在4字节的整数倍时开始,实现起来会比较方便。
服务类型,该字段共8位长,前三个比特表示优先级,它可使数据报具有8个优先级中的一个。
第4个比特是D比特,表示要求有最小延迟。
第5个比特是T比特,表示要求有最大吞吐量。
第6个比特是R比特,表示要求有更高的可靠性,即在数据报传递过程中,被结点交换机丢弃的概率要更小些。
第7个比特是C比特,是新增加的,表示要求用最小费用进行传输。
最后一个比特目前尚未使用。
其意义见图6的上面部分所示。
RFC1349、RFC1340文件对不同的应用定义了建议的TOS值,如Telnet和Rlogin这样的交互应用要求最小的传输时延,而Ftp文件传输需要最大的吞吐量,网络管理和路由协议需要最大的可靠性,用户网络新闻(Usenetnews)需要最小费用。
总长度,该字段为16位,指明该IP数据包的长度(即首部和数据之和的长度),单位为字节。
总长度字段为16bit,因此数据报的最大长度为65535字节(64K字节)。
一般不可能达到这么大的值,因为链路层对数据帧的长度有明确限制,该限制称为最大传输单元(MTU),IP数据包长度小于MTU长度,典型的以太网MTU为1500字节。
当很长的数据报要分段进行传送时,“总长度”不是指未分段前的数据报长度,而是指分段后每个段的首部长度与数据长度的总和。
该字段的另一个作用是接收到从链路层上传的数据包后用来决定有用的数据包长度,因为有些字节可能是无用的填充字节,是为了达到链路层所要求的最短帧长度要求而填充进去的。
标识,该字段为16位,是为了使分段后的各数据报段最后能准确地重装成为原来的数据报。
请注意:
这里的“标识”并没有顺序号的意思,因为IP是无连接服务,数据报不存在按序接收的问题。
源主机发出IP数据包时是不存在IP分组的,只有路由器从一个MTU较大的接口接收到IP包后又从一MTU较小的接口发送出去时才需要分组。
接收端根据该字段和后面的偏移字段的值将分组的IP碎包重新组装成原始的包。
标志,该字段为3位,目前只有前两个比特有意义。
标志字段中的最低位记为MF(MoreFragment),MF=1即表示后面还有分段的数据报,MF=0表示这已是若干数据报段中的最后一个。
中间的一位记为DF(Don’tFragment),是用来测试网络中的各段MTU大小的,只有当DF=0时才允许分段。
片偏移,该字段为13位,其意义和OSI的IPDU中规定的相似,只是表示的单位不同。
这里是以8个字节为偏移单位。
可见IP数据报的片偏移字段(13bit长)和OSI的IPDU的片偏移字段(16bit长)是相当的。
生存时间,该字段为8位,单位为秒。
生存时间设置了数据包可以经过的最多路由器数,目的是防止数据包在网络上的无限循环,占用网络带宽,甚至引起网络风暴。
该值由源主机设置(通常为32或64),一旦经过一个路由器,该路由器将它减1,当某路由器检查该值为1并且目的地址不在该路由器直联的网络上时,该数据包就被丢弃,并发送一条ICMP报文通知源主机。
当TTL值改变后,首部检验和也要改变。
通常路由器在转发IP数据包时,仅仅改变这两个字段。
协议标识,该字段为8位,它指出此数据携带的传输层数据是使用何种协议,以便目的主机的IP层知道应将此数据报上交给哪个进程。
如协议标识为6表示封装的是TCP(传输控制协议)数据包,协议标识为17表示封装的是UDP(用户数据包协议)数据包,协议标识为89表示封装的是OSPF(开发最短路径优先)数据包,协议标识为1表示封装的是ICMP(网际控制报文协议)数据包,协议标识为2表示封装的是IGMP(网际组管理协议)数据包,协议标识为46表示封装的是RSVP(资源预留协议)数据包。
首部检验和,该字段为16位,此字段只检验数据报的首部,不包括数据部分。
不检验数据部分是因为数据报每经过一个结点,结点处理机就要重新计算一下首部检验和(一些字段,如寿命、标志、段偏移等都可能发生变化)。
如将数据部分一起检验,计算的工作量就太大了。
首部检验和的计算过程是:
先将该字段置为0,然后对首部中每个16比特进行二进制反码求和,将结果存在检验和字段中。
当路由器收到一份IP数据包后,同样对首部中每个16比特进行二进制反码求和,如果结果为FF才表示IP数据包正确。
出错的数据包将被丢弃,但不发送ICMP报文,上层协议可以检测到出错并对该数据包重传。
地址,源站IP地址字段和目的站IP地址字段都各占4字节。
任选项,该字段为32位,如果长度不足32比特要用0作填充。
任选字段用来支持排错、测量以及安全等措施,内容很丰富。
此字段的长度可变,从一个字节到40个字节不等,取决于所选择的项目。
其主要选项有以下几种:
1)安全和处理限制
2)记录路径,转发的路由器在此记录IP地址
3)时间戳,供路由器记录IP地址和时间
4)宽松源站选路,指定IP包必须经过的IP地址
5)严格源站选路,要求IP包只能经过指定的这些地址
互联网控制消息协议ICMP
IP数据报在端对端传输方式下,由于网关(GateWay)自主地完成寻径和报文传输服务,不需要信源主机的参与,而对于传输过程来说,发生传输错误是不可避免的,也是很自然的,比如说当某个IP包中的IP目的地址根本不存在时自然就无法传送;
或某一网关因为缓冲区满,超过它的处理能力和速度的话,它就无法正常中继或接收数据报了。
这样的话,一旦发生了传输错误,信源主机如何才能够知道并且进行相应的处理呢?
对于IP协议本身来说,并不存在一种内在机制来获取上述的差错信息,从而进行相应处理。
因此,在网络通信中提供一种手段,对传输过程提供出错时的报告和有关路径、流量等的控制,是十分必要的。
与此同时,也增加了网络之间传输的可控性和可靠性。
ICMP协议就是这样一种提供网间报错和控制信息的手段,它为IP协议加上了一种差错报告和控制的机制。
乍看起来,ICMP是对IP协议的有利补充,是与之相分离的。
实际上,它应该是IP协议族中不可或缺的部分,必须体现在每一个IP的实现之中。
由此可见它与IP协议的紧密关系。
ICMP协议的功能及其实现,跟IP协议一样,体现为一种报文格式—ICMP报文,或称ICMP包,可以像其他报文一样寻找路由,ICMP消息是一个独立的消息,没有流控及应答机制。
虽然IP数据报的传送不保证不丢失,但互连网层对数据报的传送还是有一定的质量保证功能,这就是使用Internet控制消息协议ICMP(InternetControlMessageProtocol)。
ICMP是IP控制及错误消息协议,是集差错报告和控制于一身的协议,它通过ICMP消息传递差错报告或控制信息,消息传递可发生在主机、路由器,主机、主机或路由器、路由器之间。
ICMP消息的接收者根据消息类型采取相应的措施。
ICMP不是高层协议,它仍是互连网层中的协议。
随着Internet的发展,ICMP与其他协议一样,被赋予越来越多的功能。
一般说来,除了ICMP差错报文外,ICMP还提供控制报文和请求/应答报文对,前者与IP层的拥塞和路径控制有关,后者则用于获取故障诊断和网络控制方面的信息。
另外,需要说明的是,ICMP协议虽与IP协议属于同层协议,但ICMP报文跟TCP等协议的报文一样,是封装在IP报文中进行传输的。
两种主要ICMP消息的类型:
询问消息和错误消息。
询问消息是指ICMP响应请求、响应应答、路由器公告和地址屏蔽请求等。
错误消息指目的地址不可达、源地址消亡(拥塞指示)及生命周期超时等。
当原始数据报文的目的地址是广播或组播地址或源地址不是单个系统时,不产生ICMP消息。
这是为了防止由于网络拥塞或误配置系统而引起的ICMP消息风暴。
ICMP是以报文形式装载信息的。
每个ICMP报文都是作为IP数据报的数据部分进行网际传送,如图2-8所示。
下面介绍一下ICMP报文的格式。
ICMP报头
ICMP数据
IP报头
IP数据区
图2-8ICMP数据报的封装
ICMP报文包括两个部分:
ICMP报头和ICMP数据区。
ICMP报头长度固定为8字节(图2-9):
第一字节是类型(TYPE),它的取值决定了ICMP报文的类别、作用和具体格式;
第二字节是代码(CODE),它对同一类型下的不同问题、原因、信息进行进一步的细分和说明,以求对问题的表述更准确;
第三、四字节是校验和(CHECKSUM),它用来检查自身的ICMP报文有没有在传输中发生错误,以便进行相应处理;
其他字节是可能会用到的数据区,包含因类型(TYPE)而异的信息。
ICMP数据区长度可变,也可以不用(为0字节),也因类型(TYPE)而异。
原异常IP报头+前64位该IP报的数据:
差错、控制ICMP报中有关IP报的数据信息。
TYPE
CODE
CHECKSUM
其它信息
原异常IP报头+前64位该IP数据报的数据
图2-9ICMP报文头统一格式
ARP/RARP协议
当向目的地发送报文时,路由器需要决定对应于IP报文中所含的IP地址的特定介质地址(即MAC地址)。
IP用地址解析协议(ARP)发现对应于给定IP地址的特定介质数据链路层地址。
ARP是针对于广播型网络设计的,该协议采取一种动态编连(Dynamicbinding)的机制进行地址解析。
ARP工作原理如下:
1、主机A广播一条ARP请求报文(主机B的IP地址),请求主机B的物理地址;
2、主机B收到ARP请求报文,向主机A发送一条ARP应答报文,主机B的物理地址包含在应答报文中;
3、主机A收到主机B发出的应答报文,得到B的物理地址。
注意:
ARP请求是广播,而ARP回答只是送给发送请求的路由器并非广播。
RARP(反向ARP)执行ARP逆过程,主要用于无盘工作站在启动时获取本机的IP地址,其工作原理与ARP相似。
1、主机A广播一条ARP请求(ARP报文中操作代码为3,表示是一个反向ARP请求),请求本机的IP地址(报文中带有本机的物理地址P);
2、反向ARP服务器S收到RARP请求报文,查询数据库(已知MAC地址与IP地址的对应表),如果找到物理地址为P的主机A,向主机A发送一条RARP应答报文,物理地址为P的主机A的IP地址包含在应答报文中;
3、主机A收到S发出的应答报文,就得到本机的IP地址。
传输层协议
传输层提供了TCP和UDP两种协议。
两个传输协议将应用程序的数据加上自身格式的首部字段后交给下一层进行处理。
尽管TCP和UDP都使用相同的网络层(IP),TCP却向应用层提供与UDP完全不同的服务。
UDP是无连接的,它不保证数据报的可靠传输,任何必须的可靠性必须由上层应用程序来提供。
TCP提供一种面向连接的、可靠的协议。
它能将报文分解为数段,在目的站再重新装配这些段,重新发送没有被收到的段。
TCP为两台主机提供高可靠性的通信连接,有着复杂的控制机制。
UDP协议
UDP协议相对于TCP来说要简单得多,它没有所谓的窗口技术,也不用确认,因此处理开销小。
应用层协议可以保证可靠性。
通常来说,UDP的传输效率较高,适用于那些无须把有序段重新装配的应用。
使用UDP的协议包括:
TFTP、SNMP、NFS、DNS。
UDP首部各字段如图2-10所示。
16位源端口号
16位目的端口号
16位UDP长度
16位UDP校验和
图2-10UDP报文
UDP首部包括以下成员:
两字节源端口号(sourceportnumber)和两字节目的端口号(destinationportnumber):
用于确认发送及接收应用程序;
两字节报文长度:
用于说明整个UDP报文的长度,包括UDP头部。
由于长度为16位,因此UDP数据报文最大长度为65535字节(216-1)。
两字节校验和:
用于校验数据报的有效性,UDP对报文的校验是可选的,收到的报文中若校验和为0,则不进行校验,否则校验)
UDP数据报文可能会以不同于源端的顺序到达目的端,原因是由于某些报文被发送到慢速的链路上,而后续的报文在快速的链路上发送,接收端的程序必须能够正确处理这种情况。
TCP协议
TCP(传输控制协议)是面向连接的协议,它提供两个网络设备间数据有保证的顺序传递。
TCP通过序列号和确认号实现可靠传输,通过滑动窗口实现流量控制。
在收到接收者的应答前,数据段一直保留在发送者系统的缓冲区中。
如果丢失了某段,TCP将自动重传。
TCP连接可分解为三个不同的阶段:
初始连接建立阶段(三次握手)、数据传输阶段以及最后的连接关闭阶段。
连接建立和连接关闭阶段需要交换多个报文包。
这种机制使得TCP在传输几个字节时显得非常昂贵,如在域名查找时就只需传输几个字节。
TCP连接用段实现网络系统间的通信,段的最大长度取决于输出
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基础 网络 模型 TCPIP 协议 cll