J基础篇_第2章网络模型及TCPIP协议簇cll_第1页
J基础篇_第2章网络模型及TCPIP协议簇cll_第2页
J基础篇_第2章网络模型及TCPIP协议簇cll_第3页
J基础篇_第2章网络模型及TCPIP协议簇cll_第4页
J基础篇_第2章网络模型及TCPIP协议簇cll_第5页
已阅读5页,还剩16页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第二章 网络模型与TCP/IP协议簇2.1 概论 TCP/IP起源于1969年美国国防部(DOD:The United States Department Of Defense)高级研究项目管理局(APRA:Advanced Resarch Projects Agency)对有关分组交换的广域网(Packet-Switched wide-area network)科研项目,因此起初的网络称为ARPANET。1973年TCP(传输控制协议)正式投入使用,1981年IP(网际协议)协议投入使用,1983年TCP/IP协议正式被集成到美国加州大学伯克利分校的UNIX版本中,该“网络版”操作系统适应了

2、当时各大学、机关、企业的旺盛的连网需求,因而随着该免费分发的操作系统的广泛使用,TCP/IP协议得到了流传。TCP/IP技术得到了众多厂商的支持,不久就有了很多分散的网络。所有这些单个的TCP/IP网络都互联起来称为INTERNET。基于TCP/IP协议的Internet已逐步发展成为当今世界上规模最大、拥有用户和资源最多的一个超大型计算机网络,TCP/IP协议也因此成为事实上的工业标准。IP网络正逐步成为当代乃至未来计算机网络的主流。 本章主要对TCP/IP协议组件进行概述,着重介绍TCP/IP协议簇模型及各层次协议的处理机制。2.2 网络模型与TCP/IP协议簇早在TCP/IP协议出现之前

3、,国际标准化组织(ISO)就提出了开放系统互连(OSI)网络模型,为网络的设计、开发、编程、维护提供了便利的分而治之的思想,其先进性、科学性、实用性是不言而喻的。TCP/IP协议不是单纯的两个协议,是一组不同层次上的多个协议的组合,常称为TCP/IP协议簇或者互联网协议簇,为实现整个网络的互联提供指导,其层次组合已很难用OSI的七层模型来套用,它是OSI模型的浓缩,将原来的七层模型合并为四层协议的体系结构,自顶向下分别是应用层、传输层、网络层和链路层,没有OSI参考模型的会话层和表示层,一般认为TCP/IP的会话和表示功能是在传输层完成的。OSI参考模型和TCP/IP协议簇两者结构如图2-1所

4、示。OSI TCP/IP应用层应用层表示层会话层传输层传输层网络层网络层数据链路层链路层物理层图2-1 网络模型与TCP/IP协议簇 每一层的功能如下:链路层:有时也称作数据链路层或网络接口层,通常包括操作系统中的设备驱动程序和计算机中对应的网络接口卡。它们一起处理与电缆(或其他任何传输媒介)的物理接口细节。在TCP/IP协议簇中,链路层的协议比较多,它决定了网络形态,但很多都不是专门为TCP/IP设计的。常用的链路层协议包括: 以太网协议、PPP协议、帧中继协议、ATM等。网络层:有时也称作互连网层,处理分组在网络中的活动,例如分组的路由选择。在TCP/IP协议簇中,网络层协议包括IP协议(

5、网际协议),ICMP协议(Internet互连网控制报文协议),ARP/RARP(地址解析/逆向地址解析协议),以及IGMP协议(Internet组管理协议)。传输层:主要为两台主机上的应用程序提供端到端的通信。在TCP/IP协议簇中,有两个互不相同的传输协议:TCP(传输控制协议)和UDP(用户数据报协议),它们分别承载不同的应用。应用层:负责处理特定的应用程序细节。几乎各种不同的TCP/IP实现都会提供下面这些通用的应用程序: Telnet 远程登录 FTP 文件传输协议 SMTP 用于电子邮件的简单邮件传输协议 SNMP 简单网络管理协议 严格来讲,分层模型的动机就是将各层的功能尽量独立

6、,每层的功能对另一层来说是透明的,只对通信的另一端负责,为编程和诊断提供良好的层次隔离,然而实际情况并非如此,首先软件编程上完全按照分层模型来做,编程效率会降低,与其分层,不如按功能实现来模块化。其次,对于许多功能实现来说,必须实现两层子间的交互,这又违背了当初的出发点,比如链路层在成帧时需要接收端的物理地址,该地址必须由网络层处理ARP地址解析才行,简单地将ARP放在那一层都有些牵强。所以说,分层模型对于理解网络的抽象性是有益处的,它有助于指导网络入门,但并不是网络的精髓,只有结合具体的系统分析才有实际意义。2.2.1 TCP/IP封装过程 如下图2-2分析TCP/IP的封装是如何进行的。数

7、据由文本username组成,它被封装在传输层的段中,该段再封装到网络层报文包中,网络层报文包再封装到数据链路帧,以便在所选的介质上传送。当系统接收到数据时,是拆封/多路分解过程。当数据沿着协议栈向上传递时,检查帧的格式,决定网络类型,并去掉帧的格式,检查内含的报文包,决定传输协议。数据由某个传输层处理,最后数据递交给正确的应用程序。 路由器提示: username: 传输层: 传输层数据段头(SP、DP)数据(username:) 网络层: 网络层数据包头(SA、DA)传输层数据段 数据链路层: 数据链路层帧头(DMAC、SMAC)网络层数据包TR图2-2 TCP/IP封装2.2.2 协议栈

8、多路复用图2-3 TCP/IP协议多路复用 在TCP/IP协议栈各个层次中的段、报文包和帧头部中都有控制字节,对于传送数据时,是标识数据源;对于接收数据时,是标识处理数据的上层。图2-3说明了TCP/IP协议栈内部的控制字节。当从物理介质收到帧时,以太网控制器只将帧的MAC地址与控制器卡的(包括接口所认识的广播及多路广播地址)MAC地址一致的报文传递到上层。以太网软件接收帧并检查协议类型代码以决定帧中数据类型,如代码0x800表明所封装的是IP报文包,0806表明所封装的是ARP报文包。网络层报文包由IP处理。检查IP头部及目的地址的有效性,若目的地址是本系统的,检查报文协议标识码(ID)。协

9、议ID决定哪个协议应该接收此数据包。如协议代码6表示TCP,协议代码17表示UDP。接下来通过检查TCP段或UDP数据报文以确定端口号,从而识别由哪个应用接收数据。如端口号23留给Telnet,端口号25留给SMTP。 TCP/IP协议簇的内涵十分丰富,并非只有TCP和IP两个协议,它已经围绕IP发展成为了一个庞大的家族,这里我们将介绍TCP/IP协议簇中最常见、最重要的部分。2.3 链路层协议 根据分层操作的思想,每一层对上一层送来的数据进行处理时要加上一个报头(首部信息),有时还要加上尾部信息,这称为数据包封装。 链路层的工作是将IP数据包按照链路协议定义的格式进行封装,并按照硬件接口的编

10、码方式转成合适的基带信号发送到传输介质上。该层数据一般称为数据帧。常见的以太网(IEEE 802.3等)、令牌环网(IEEE 802.5)、帧中继、ATM、HDLC、PPP、Q.921都是链路层协议,但每个协议的封装格式各不相同。例如以太网(Ethernet II)协议的封装格式如图2-4。前导码目的地址源地址协议类型数据CRC8字节6字节6字节2字节461500字节4字节图2-4 常见的以太网(Ethernet II)协议的封装格式 两字节的协议类型字段用来识别封装的协议类型:0800表示封装的是IP数据包,0806表示封装的是ARP地址解析请求/应答数据包,8035表示封装的是RARP请求

11、/应答数据包,8137表示封装的是IPX数据包。封装好的数据帧在线路空闲时(用CSMA/CD载波侦听多路存取/碰撞检测的方法来检测)按照曼彻斯特编码将数据转成高低电平发送到线路上。 线速路由器中常用的一种链路层帧格式为点到点协议(PPP)中的HDLC帧格式,IP数据包被封装成ISO HDLC帧格式,然后再映射进同步数字序列SDH中去透明传输,路由器上这样的接口常称为POS接口(Packet over SDH)。PPP in HDLC帧格式如图2-5所示。标记地址控制协议数据帧校验7EFF032 字节1500字节1字节图2-5 PPP in HDLC帧格式 协议字段为0021时表示数据部分为IP

12、数据包,C021表示数据部分为LCP链路控制协议,8021为NCP网络控制协议,C023为PAP密码验证,C223为CHAP质询握手验证协议。2.4 网络层协议 比较严格的说网络层的协议就是IP,ICMP、ARP/RARP是帮助IP完成寻址的功能,因此也被认为是第三层的协议。2.4.1 IP协议 全球INTERNET网的广泛应用使IP协议深入人心。IP协议以其简单、有效、开放性成为事实上的工业标准。IP协议使异种网互联方便可行,尤其值得一提的是它对下层通信技术有巨大包容性。 IP协议作为通信子网的最高层,提供无连接的数据报传输机制。IP协议是点到点的,核心问题是寻径。它向上层提供统一的IP数据

13、报,使得各种物理帧的差异性对上层协议不复存在。互连网协议IP是TCP/IP体系中两个最重要的协议之一。与IP协议配套使用的还有三个协议: 地址转换协议ARP(Address Resolution Protocol)反向地址转换协议RARP(Reverse Address Resolution Protocol) Internet控制报文协议ICMP(Internet Control Message Protcol)Telnet,FTP,TFTPTCP,UDPICMPARPRARPIP图2-6 IP协议及其相关协议 如图2-6中画出了这三个协议和IP协议的关系。在这一层中,ARP和RARP画在最

14、下面,因为IP经常要使用着两个协议。ICMP画在这一层的上部,因为它要使用IP协议。 下图2-7是IP数据报的格式。首部20字节固定长度0 1 234567优先级DTRC未用4位版本4位首部长度8位服务类型(TOS)16位总长度16位标识3位标志13位片偏移8位生存时间(TTL)8位协议标识16位首部检验和32位源IP地址可变长度32位目的IP地址长度可变的任选字段填充数据图2-7 TP数据报格式从上图可看出,一个IP数据报由首部和数据两部分组成。首部的前一部分长度是固定的20个字节,后面部分的长度则是可变长度。下面介绍首部各字段的意义。版本,该字段占4bit,指IP协议的版本。通信双方使用的

15、IP协议的版本必须一致。目前使用的IP协议版本为4,下一代的版本为IPv6。首部长度,该字段占4bit,可表示的最大数值是15个单位(一个单位为4字节),因此IP的首部长度的最大值是60字节。普通IP数据包是没有任选项的,因此该字段的值为5。如果有任选项,该字段值最大为15。路由器收到IP包后对此字段要做检查,带任选项的IP数据包在转发前要做特殊处理。当IP分组的首部长度不是4字节的整数倍时,必须利用最后一个填充字段加以填充。这样,数据部分永远在4字节的整数倍时开始,实现起来会比较方便。服务类型,该字段共8位长,前三个比特表示优先级,它可使数据报具有8个优先级中的一个。第4个比特是D比特,表示

16、要求有最小延迟。第5个比特是T比特,表示要求有最大吞吐量。第6个比特是R比特,表示要求有更高的可靠性,即在数据报传递过程中,被结点交换机丢弃的概率要更小些。第7个比特是C比特,是新增加的,表示要求用最小费用进行传输。最后一个比特目前尚未使用。其意义见图6的上面部分所示。RFC1349、RFC1340文件对不同的应用定义了建议的TOS值,如Telnet和Rlogin这样的交互应用要求最小的传输时延,而Ftp文件传输需要最大的吞吐量,网络管理和路由协议需要最大的可靠性,用户网络新闻(Usenet news)需要最小费用。总长度,该字段为16位,指明该IP数据包的长度(即首部和数据之和的长度),单位

17、为字节。总长度字段为16bit,因此数据报的最大长度为65535字节(64K字节)。一般不可能达到这么大的值,因为链路层对数据帧的长度有明确限制,该限制称为最大传输单元(MTU),IP数据包长度小于MTU长度,典型的以太网MTU为1500字节。当很长的数据报要分段进行传送时,“总长度”不是指未分段前的数据报长度,而是指分段后每个段的首部长度与数据长度的总和。该字段的另一个作用是接收到从链路层上传的数据包后用来决定有用的数据包长度,因为有些字节可能是无用的填充字节,是为了达到链路层所要求的最短帧长度要求而填充进去的。标识,该字段为16位,是为了使分段后的各数据报段最后能准确地重装成为原来的数据报

18、。请注意:这里的“标识”并没有顺序号的意思,因为IP是无连接服务,数据报不存在按序接收的问题。源主机发出IP数据包时是不存在IP分组的,只有路由器从一个MTU较大的接口接收到IP包后又从一MTU较小的接口发送出去时才需要分组。接收端根据该字段和后面的偏移字段的值将分组的IP碎包重新组装成原始的包。标志,该字段为3位,目前只有前两个比特有意义。标志字段中的最低位记为MF(More Fragment),MF=1即表示后面还有分段的数据报,MF=0表示这已是若干数据报段中的最后一个。中间的一位记为DF(Dont Fragment),是用来测试网络中的各段MTU大小的,只有当DF=0时才允许分段。片偏

19、移,该字段为13位,其意义和OSI的IPDU中规定的相似,只是表示的单位不同。这里是以8个字节为偏移单位。可见IP数据报的片偏移字段(13bit长)和OSI的IPDU的片偏移字段(16bit长)是相当的。生存时间,该字段为8位,单位为秒。生存时间设置了数据包可以经过的最多路由器数,目的是防止数据包在网络上的无限循环,占用网络带宽,甚至引起网络风暴。该值由源主机设置(通常为32或64),一旦经过一个路由器,该路由器将它减1,当某路由器检查该值为1并且目的地址不在该路由器直联的网络上时,该数据包就被丢弃,并发送一条ICMP报文通知源主机。当TTL值改变后,首部检验和也要改变。通常路由器在转发IP数

20、据包时,仅仅改变这两个字段。协议标识,该字段为8位,它指出此数据携带的传输层数据是使用何种协议,以便目的主机的IP层知道应将此数据报上交给哪个进程。如协议标识为6表示封装的是TCP(传输控制协议)数据包,协议标识为17表示封装的是UDP(用户数据包协议)数据包,协议标识为89表示封装的是OSPF(开发最短路径优先)数据包,协议标识为1表示封装的是ICMP(网际控制报文协议)数据包,协议标识为2表示封装的是IGMP(网际组管理协议)数据包,协议标识为46表示封装的是RSVP(资源预留协议)数据包。首部检验和,该字段为16位,此字段只检验数据报的首部,不包括数据部分。不检验数据部分是因为数据报每经

21、过一个结点,结点处理机就要重新计算一下首部检验和(一些字段,如寿命、标志、段偏移等都可能发生变化)。如将数据部分一起检验,计算的工作量就太大了。首部检验和的计算过程是:先将该字段置为0,然后对首部中每个16比特进行二进制反码求和,将结果存在检验和字段中。当路由器收到一份IP数据包后,同样对首部中每个16比特进行二进制反码求和,如果结果为FF才表示IP数据包正确。出错的数据包将被丢弃,但不发送ICMP报文,上层协议可以检测到出错并对该数据包重传。地址,源站IP地址字段和目的站IP地址字段都各占4字节。任选项,该字段为32位,如果长度不足32比特要用0作填充。任选字段用来支持排错、测量以及安全等措

22、施,内容很丰富。此字段的长度可变,从一个字节到40个字节不等,取决于所选择的项目。其主要选项有以下几种: 1)安全和处理限制 2)记录路径,转发的路由器在此记录IP地址 3)时间戳,供路由器记录IP地址和时间 4)宽松源站选路,指定IP包必须经过的IP地址 5)严格源站选路,要求IP包只能经过指定的这些地址2.4.2 互联网控制消息协议ICMP IP数据报在端对端传输方式下,由于网关(GateWay)自主地完成寻径和报文传输服务,不需要信源主机的参与,而对于传输过程来说,发生传输错误是不可避免的,也是很自然的,比如说当某个IP包中的IP目的地址根本不存在时自然就无法传送;或某一网关因为缓冲区满

23、,超过它的处理能力和速度的话,它就无法正常中继或接收数据报了。这样的话,一旦发生了传输错误,信源主机如何才能够知道并且进行相应的处理呢?对于IP协议本身来说,并不存在一种内在机制来获取上述的差错信息,从而进行相应处理。因此,在网络通信中提供一种手段,对传输过程提供出错时的报告和有关路径、流量等的控制,是十分必要的。与此同时,也增加了网络之间传输的可控性和可靠性。ICMP协议就是这样一种提供网间报错和控制信息的手段,它为IP协议加上了一种差错报告和控制的机制。乍看起来,ICMP是对IP协议的有利补充,是与之相分离的。实际上,它应该是IP协议族中不可或缺的部分,必须体现在每一个IP的实现之中。由此

24、可见它与IP协议的紧密关系。ICMP协议的功能及其实现,跟IP协议一样,体现为一种报文格式ICMP报文,或称ICMP包,可以像其他报文一样寻找路由,ICMP消息是一个独立的消息,没有流控及应答机制。 虽然IP数据报的传送不保证不丢失,但互连网层对数据报的传送还是有一定的质量保证功能,这就是使用Internet控制消息协议ICMP(Internet Control Message Protocol)。ICMP是IP控制及错误消息协议,是集差错报告和控制于一身的协议,它通过ICMP消息传递差错报告或控制信息,消息传递可发生在主机、路由器,主机、主机或路由器、路由器之间。ICMP消息的接收者根据消息

25、类型采取相应的措施。ICMP不是高层协议,它仍是互连网层中的协议。 随着Internet的发展,ICMP与其他协议一样,被赋予越来越多的功能。一般说来,除了ICMP差错报文外,ICMP还提供控制报文和请求/应答报文对,前者与IP层的拥塞和路径控制有关,后者则用于获取故障诊断和网络控制方面的信息。另外,需要说明的是,ICMP协议虽与IP协议属于同层协议,但ICMP报文跟TCP等协议的报文一样,是封装在IP报文中进行传输的。 两种主要ICMP消息的类型:询问消息和错误消息。询问消息是指ICMP响应请求、响应应答、路由器公告和地址屏蔽请求等。错误消息指目的地址不可达、源地址消亡(拥塞指示)及生命周期

26、超时等。 当原始数据报文的目的地址是广播或组播地址或源地址不是单个系统时,不产生ICMP消息。这是为了防止由于网络拥塞或误配置系统而引起的ICMP消息风暴。 ICMP是以报文形式装载信息的。每个ICMP 报文都是作为IP数据报的数据部分进行网际传送,如图2-8所示。下面介绍一下ICMP报文的格式。ICMP报头ICMP数据IP报头IP数据区图2-8 ICMP数据报的封装ICMP报文包括两个部分:ICMP报头和ICMP数据区。ICMP报头长度固定为8字节(图2-9):第一字节是类型(TYPE),它的取值决定了ICMP报文的类别、作用和具体格式;第二字节是代码(CODE),它对同一类型下的不同问题、

27、原因、信息进行进一步的细分和说明,以求对问题的表述更准确;第三、四字节是校验和(CHECKSUM),它用来检查自身的ICMP报文有没有在传输中发生错误,以便进行相应处理;其他字节是可能会用到的数据区,包含因类型(TYPE)而异的信息。ICMP数据区长度可变,也可以不用(为0字节),也因类型(TYPE)而异。原异常IP报头+前64位该IP报的数据:差错、控制ICMP报中有关IP报的数据信息。IP报头TYPECODECHECKSUM其它信息原异常IP报头+前64位该IP数据报的数据图2-9 ICMP报文头统一格式2.4.3 ARP/RARP协议当向目的地发送报文时,路由器需要决定对应于IP报文中所

28、含的IP地址的特定介质地址(即MAC地址)。IP用地址解析协议(ARP)发现对应于给定IP地址的特定介质数据链路层地址。ARP是针对于广播型网络设计的,该协议采取一种动态编连(Dynamic binding)的机制进行地址解析。ARP工作原理如下:1、主机A广播一条ARP请求报文(主机B的IP地址),请求主机B的物理地址;2、主机B收到ARP请求报文,向主机A发送一条ARP应答报文,主机B的物理地址包含在应答报文中;3、主机A收到主机B发出的应答报文,得到B的物理地址。 注意:ARP请求是广播,而ARP回答只是送给发送请求的路由器并非广播。 RARP(反向ARP)执行ARP逆过程,主要用于无盘

29、工作站在启动时获取本机的 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地址。2.5 传输层协议传输层提供了TCP和UDP两种协议。两个传输协议将应用程序的数据加上自身格式的首部字段后交给下一层进行处理。尽管TCP和UDP都

30、使用相同的网络层(IP),TCP却向应用层提供与UDP完全不同的服务。UDP是无连接的,它不保证数据报的可靠传输,任何必须的可靠性必须由上层应用程序来提供。TCP提供一种面向连接的、可靠的协议。它能将报文分解为数段,在目的站再重新装配这些段,重新发送没有被收到的段。TCP为两台主机提供高可靠性的通信连接,有着复杂的控制机制。2.5.1 UDP协议UDP协议相对于TCP来说要简单得多,它没有所谓的窗口技术,也不用确认,因此处理开销小。应用层协议可以保证可靠性。通常来说,UDP的传输效率较高,适用于那些无须把有序段重新装配的应用。使用UDP的协议包括:TFTP、SNMP、NFS、DNS。UDP首部

31、各字段如图2-10所示。16位源端口号16位目的端口号16位UDP长度16位UDP校验和数据图2-10 UDP报文UDP首部包括以下成员: 两字节源端口号(source port number)和两字节目的端口号(destination port number):用于确认发送及接收应用程序;两字节报文长度:用于说明整个UDP报文的长度,包括UDP头部。由于长度为16位,因此UDP数据报文最大长度为65535字节(2161)。两字节校验和:用于校验数据报的有效性,UDP对报文的校验是可选的,收到的报文中若校验和为0,则不进行校验,否则校验) UDP数据报文可能会以不同于源端的顺序到达目的端,原因

32、是由于某些报文被发送到慢速的链路上,而后续的报文在快速的链路上发送,接收端的程序必须能够正确处理这种情况。2.5.2 TCP协议TCP(传输控制协议)是面向连接的协议,它提供两个网络设备间数据有保证的顺序传递。TCP通过序列号和确认号实现可靠传输,通过滑动窗口实现流量控制。在收到接收者的应答前,数据段一直保留在发送者系统的缓冲区中。如果丢失了某段,TCP将自动重传。TCP连接可分解为三个不同的阶段:初始连接建立阶段(三次握手)、数据传输阶段以及最后的连接关闭阶段。连接建立和连接关闭阶段需要交换多个报文包。这种机制使得TCP在传输几个字节时显得非常昂贵,如在域名查找时就只需传输几个字节。TCP连

33、接用段实现网络系统间的通信,段的最大长度取决于输出接口的最大报文长度或与对等系统协商的结果。TCP首部各字段(如图2-11所示)及定义如下:16位源端口号16位目的端口号32位序列号32位确认号4位首部长度6位保留6位编码位16位窗口大小16位TCP校验和16位紧急指针选项(若有)数据图2-11 TCP首部源端口(Source Port):呼叫端口的号目的端口(Destination Port):被叫端口的号序号(Sequence Number):用于确保数据到达的正确顺序确认号(Acknowledgment Number):所期待的下一个TCP字段的编号首部长度(HLEN):首部的字数(字长

34、为32位)保留域(Reserved):设置为0编码位(Code Bits):控制功能(比如会话的建立或终止)窗口(Window):发送者愿意接收的字节数校验和(Checksum):报头和数据字段的校验和紧急指针(Urgent Pointer):指明这是紧急数据的末尾选项(Option):当前定义项:TCP段的最大值数据(Data):上层协议数据 端口号端口号用于识别两个通信网络系统的应用(程序)。创建一条连接时,源系统要求TCP选取一个可用的本地端口号,这样源系统和运行服务器程序的远程系统(已知端口)之间建立连接。下图2-12说明:当源系统中有多个Telnet用户与服务器连接时,

35、用户1向TCP请求一个可用端口,TCP回答端口1046可用,用户2同样向TCP请求一个可用端口,TCP回答端口1093,则两个用户连接时,用户1客户机向服务器发送一个连接,端口为23,来自,端口为1046;用户2客户机向服务器发送一个连接,端口为23,来自,端口为1093。因此,相同IP地址上具有不同源端口号的两个连接是不同的。无论报文包何时发送或接收,IP地址和端口号用来唯一地确认数据途径的连接。图2-12 使用多个端口 序列号和确认号序列号和确认号用于识别TCP段中的数据。序列号标识段开始处的字节

36、。序列号可以从任意值开始,用户数据每传送一个字节,序列号加1,段的长度决定了段中正在发送的字节顺序。序列号的作用一是用于标识数据顺序,以便接收者在将其递交给应用程序前按正确的顺序进行装配;二是消除网络中的重复报文包,这种现象在网络拥塞时会出现。设备缓冲区中可能较长时间存有多个报文,发送者认为网络出现了故障,需要重传数据,当第二组数据到达时,接收者检测出重复的序列号并丢弃重复报文包。确认号用于接收者告诉发送者哪个数据包已经成功接收。确认号指示接收者希望接受的下一个字节。 TCP三次握手/建立连接TCP是一个面向连接的协议,无论哪一方向另一方发送数据之前,都必须先在双方之间建立一条连

37、接。为了建立或初始化一个连接,两个TCP通信者必须同步各自的初始序号。初始序号是建立一个TCP连接时的开始号,用于跟踪通信顺序并确保多个包传输时无数据丢失。在连接过程中交换初始序号,可以确保在以后出现问题时,能恢复丢失的数据。同步是通过各个携带有初始序号和1位被称为SYN控制位(携带有SYN控制位的TCP段被成为同步段)的段之间的交换过程来实现的。同步要求每一方都发送自己的初始序号,并接受本次连接中另一方发送的一个确认号和初始序号。每一方都必须接受另一方的初始序号并发送一个确认应答,这一过程顺序如下:AgB SYN:我的序号是X;AfB ACK:你的序号是X;AfB SYN:我的序号是Y;Ag

38、B ACK:你的序号是Y。顺序2和3可以合并在一个简单的消息中,因此是3次握手/建立连接(如图2-13示)。主机A主机B接收确认(ACK=Y+1)发送确认(ACK=Y+1)接收SYN(SEQ=Y,ACK=X1)发送SYN(SEQ=Y,ACK=X1)接收SYN(SEQ=X)发送SYN(SEQ=X)图2-13 3次握手完成之前不能交换数据 TCP四次握手/终止连接一个TCP连接是全双工(即数据在两个方向上能同时传递),因此每个方向必须单独进行关闭。这原则就是当一方完成它的数据发送任务后就发送一个FIN来终止这个方向连接。当一端收到一个FIN,它必须通知应用层另一端已经终止了那个方向的

39、数据传送。这一过程顺序如下:AgB FIN:我的序号是Z;AfB ACK:你的序号是Z1;AfB FIN:我的序号是W;AgB ACK:你的序号是W1。例如:当Telnet客户端关闭连接时(键入quit命令后),它将导致TCP客户端发送一个FIN,用来关闭从客户到服务器的数据传送。当服务器收到这个FIN,它发回ACK,确认序号为收到的序号加1,同时TCP服务器还向应用程序传送一个文件结束符。接着这个服务器应用程序就关闭它的连接,并在它的TCP端发送一个FIN,客户必须发回一个确认,并将确认序号设置为收到序号加1。图2-14显示了终止一个连接的握手顺序(省略了序号)。FIN的ACKFIN的ACK

40、FINFIN应用程序关闭主机A主机B图2-14 连接终止期间报文的交换应用程序关闭 TCP为有序发送的段提供了一个前向参考确认号。每个数据报在发送前都赋予一个编号。在接收站,TCP把分开的段重新装配为一个完整的报文。如果在序号系列中丢失了一个序号,那个丢失序号的段要被重发。在给定时间间隔内,没有得到确认的段也要被重发。序号和确认号是有方向性的,因为通信是双向的。 TCP的滑动窗口 TCP的窗口大小用于实现流控机制,接收者用该域告诉发送者还有多少缓冲区空间可用,即接收者一次可以接收多少数据。发送者一次发送的数量总是小于可用缓冲区,因此不会引起接收缓冲区溢出。当一台主机传送了一个窗口

41、大小的字节数后,它必须等到接受了一个应答后才能继续传送信息。窗口的目的是改善流量控制和可靠性。滑动窗口的“滑动”指的是:在TCP会话过程中,可以通过协商动态地修改窗口的大小。滑动窗口可使主机更加有效地利用带宽,因为大的窗口尺寸可以在等待确认期间发送更多的数据。2.6 IP编址地址有网络层地址和链路层地址,它们的作用各不相同。整个网络中的寻址是根据网络层的地址进行的,因为网络层地址有不依赖于硬件的独立性,有利于统一规划与编排,而且它的“分层”设计将地址分为网络部分与主机部分,这更加有利于路由的构建和选择。传输链路上数据包的识别是根据链路层地址进行的,链路层的地址编排依赖于传输链路的技术本身,不同

42、的链路协议采用不同的编址方式,如以太网的链路层地址为48位编码的唯一地址,PPP链路层地址用统一的FF表示,帧中继网络的链路层地址用连接标识符DLCI表示,ATM网络用PVC永久虚电路、SVC交换虚电路来标识。下面我们主要介绍网络层地址IP编址方法。2.6.1 IP地址的表示方法 所谓IP地址就是给每一个连接在Internet上的主机分配一个唯一的32bit地址。IP地址的结构使我们可以在Internet上很方便地进行寻址,这就是:先按IP地址中的网络号码把网络找到,再按主机号码把主机找到。所以IP地址并不只是一个计算机的号码,而是指出了连接到某个网络上的某个计算机。IP地址由美国国防数据网D

43、DN的网络信息中心NIC进行分配。为了便于对IP地址进行管理,同时还考虑到网络的差异很大,有的网络拥有很多的主机,而有的网络上的主机则很少。因此Internet 的IP地址就分成为五类,即A类到E类。常用的为前三类,D类地址为网络组播地址,E类地址保留在今后使用。IP地址由三个字段组成,即:特征位,用来区分IP地址的类型网络号码字段net-id主机号码字段host-id网络号和主机号的确定是由子网掩码来决定的。子网掩码与IP地址一样也是32bit长度,并且两者是一一对应的,子网掩码中数字为“1”所对应的IP地址中的部分为网络号,为“0”所对应的部分为主机号。子网掩码中数字“1”和“0”都是连续

44、的,不允许间插,且数字“1”在前,数字“0”在后。常规IP地址分类结构如图2-15所示。类别特征位网络号主机号范围A类07位24位到55B类1014位16位到55C类11021位8位到55D类111028位多播(multicast)组号到55E类11110保留图2-15 常规IP地址分类这种地址分类方法为早期路由协议的设计提供了便利,从IP地址的首部特征位可以判定子网掩码。随着互联网的急剧膨胀,地址短缺的问题愈来愈突出,传统

45、的地址分配方法使得IP地址空间的利用率不高。目前出现的无类域间路由(CIDR)技术淡化了IP地址的类的概念,较新的路由协议在路由条目更新中都带有子网掩码,不再利用IP地址的首部特征位去判定子网掩码了,新的互连网地址分配方案在一定程度上缓解了目前IP地址短缺的问题,但最终的解决方案是过渡到下一代的IPv6编址方法,其地址长度为128位。关于IP地址的一些约定如下:,用于没有IP地址的主机启动时使用,通过RARP、BOOTP、DHCP来获得地址。在路由表中该地址还用作缺省路由。55,表示“向我的网络上的所有主机广播”。用于广播的目的地址,不能作源地址。全0的

46、网络号码,表示“本网络”或“我不知道号码的这个网络”。网络号码为127.X.X.X,这里X.X.X为任何数。这样的网络号码用作本地软件回送测试之用。不知道主机的实际IP地址时,用该地址代表“本机”。全1的主机号码,表示广播地址,即对该网络上所有的主机进行广播。全0的主机号码,表示该IP地址就是网络的地址。合法的主机IP地址其网络部分或主机部分都不能为全0或全1。 IP地址有一些重要的特点。如:有一些IP地址是一种非等级的地址结构,它不能反映任何有关主机位置的地理信息;当一个主机同时连接到两个网络上时(作路由器用的主机即为这种情况),该主机就必须同时具有两个相应的IP地址,其网络号码net-id

47、是不同的,这种主机成为多地址主机(multihomed host);在IP地址中,所有分配到网络号码的网络(不管是小的局域网还是很大的广域网)都是平等的。2.6.2 IP子网的划分 IP地址的设计有不够合理的地方。例如,IP地址中的A至C类地址,可供分配的网络号码超过211万个,而这些网络上的主机号码的总数则超过37.2亿个,初看起来,似乎IP地址足够全世界来使用,(在70年代初期设计IP地址是就是这样认为的)。其实不然。第一,当初没有预计到微机会普及得如此之快。各种局域网和局域网上的主机数目急剧增长。第二,IP地址在使用时有很大的浪费。例如:某个单位申请到了一个B类地址。但该单位只有1万台主

48、机。于是,在一个B类地址中的其余5万5千多个主机号码就白白地浪费了。因为其他单位的主机无法使用这些号码。 从1985年起,为了使IP地址的使用更加灵活,不是把IP地址看成由单纯的一个网络号和一个主机号组成,而是把主机号再分成一个子网号和一个主机号。IP地址的网络号码net-id被统一分配后,后面的主机号码host-id则是受本单位控制,由本单位进行分配,本单位所有的主机都使用同一个网络号码。当一个单位的主机很多而且分布在很大的地理范围是,往往需要用一些网桥(而不是路由器,因为路由器连接的主机具有不同的网络号码)将这些主机互连起来。网桥的缺点较多,例如容易引起广播风暴,同时当网络出现故障时也不太

49、容易隔离和管理。为此使本单位的各子网之间使用路由器来互连,这由于子网的划分纯属本单位内部的事,在本单位以外是看不见这样的划分。从外部看,这个单位只有一个网络号码。只有当外面的分组进入到本单位范围后,本单位的路由器在根据子网号码进行选路,最后找到目的主机。若本单位按照主机所在的地理位置划分子网,那么在管理方面就会方便得多。 子网掩码用来标识各子网的位数,它是网络设备屏蔽所有标识子网位的一种测量手段。NIC分配的网络号的位包含在子网掩码中。子网位数取决于你的网络需要。下图2-16说明是在划分子网时要用到的子网掩码(subnet mask)的意义。(a)举了一个B类IP地址作为例子。(b)表示将本地

50、控制部分再增加一个子网字段,子网号字段究竟选为多长,由本单位根据情况确定。(c)具体示例:子网掩码由一连串的“1”和一连串的“0”组成。“1”对应于网络号码和子网号码字段,而“0”对应于主机号码字段。 多划分出一个子网号码字段是要付出代价的。例如,对于上述的例子,本来一个B类IP地址可以容纳65534个主机号码,但划分出6bit长的子网字段后,最多可有62个子网(去掉全1和全0的子网号码)。每个子网有10bit的主机号码,即每个子网最多可有1022个主机号码。因此主机号码的总数是62*1022=63364个,比不划分子网时要少了一些。 若一个单位不进行子网的划分,则其子网掩码即为默认值,对于A

51、,B和C类IP地址,其对应的子网掩码默认值分别为,和。(a)B类地址网络号 主机号(b)增加子网段字段 网络号 子网号 主机号(c)子网掩码 00 图2-16 子网与子网掩码2.6.3 子网化举例实际子网数2n2(n表示标准掩码从左向右扩展的位数,减2表示地址全0、全1的子网被保留)。某子网内实际主机数2m2(m表示子网掩码中为0的位数,减2表示地址全0、全1的IP地址)例如:一个小公司被分配了一个的C类地址,但它需要5个子网,每个子网支持20台主机。请计算出该网络的子网掩码。第一步:确定建立5个子网需要多

52、少位掩码。根据以上公式可知,C类掩码需要扩展3位,即: 1111 1111.1111 1111.1111 1111.1110 000024第二步:验证主机数是否符合要求。根据以上公式可知,主机数25230。第三步:列出所有子网地址:保留: 子网1:2子网2:4子网3:6子网4:28子网5:60子网5:92保留: 242.6.4 地址的转换IP地址还不能直接用来进行通信。这是因为:1、IP地址中的

53、主机地址只是主机在网络层中的地址,若要将网络层中传送的数据报交给目的主机,必须知道该主机的物理地址。因此必须在IP地址和主机的物理地址之间进行转换。2、用户平时不愿意使用难于记忆的主机号码,而是愿意使用易于记忆的主机名字。因此也需要在主机名字和IP地址之间进行转换。 因此,在TCP/IP体系中都有这两种转换的机制。 IP地址和主机的物理地址转换 对于IP地址和主机的物理地址之间的转换由地址转换协议ARP/反向地址转换协议RARP来完成。由于IP地址有32bit,而局域网的物理地址(即MAC地址)是48bit,因此它们之间不是一个简单的转换关系。此外,在一个网络上可能经常会有新的计

54、算机假如近来,或撤走一些计算机。更换计算机的网卡也会使其物理地址改变。可见在计算机中应当存放一个从IP地址到物理地址的转换表,并且能够经常动态更新。地址转换协议ARP很好地解决了这些问题。 每一个主机都有一个ARP高速缓存(ARP cache),里面有IP地址到物理地址的映射表,这些都是该主机目前知道的一些地址。当主机A欲向本局域网上的主机B发送一个IP数据报时,就先在其ARP高速缓存中查看有无主机B的IP地址。如有,就可查出其对应的物理地址,然后将该数据报发往此物理地址。如没有,则可能是主机B才入网,也可能是主机A刚刚加电,其高速缓存还是空的。在这种情况下,主机A就自动运行ARP,按以下步骤

55、找出主机B的物理地址。1)ARP进程在本局域网上广播发送一个ARP请求分组,上面有主机B的IP地址;2)在本局域网上的所有主机上运行的ARP进程都收到此ARP请求分组;3)主机B在ARP请求分组中见到自己的IP地址,就向主机A发送一个ARP响应分组,上面写入自己的物理映射;4)主机A收到主机B的ARP响应分组后,就在其ARP高速缓存中写入主机B的IP地址到物理地址的映射。 在很多情况下,当主机A向主机B发送数据报时,很可能以后不久主机B还要向主机A发送数据报,因而主机B也可能要向主机A发送ARP请求分组。为了减少网络上的通信量,主机A在发送其ARP请求分组时,就将自己的IP地址到物理地址的映射写入ARP请求分组。当主机B收到主机A的ARP请求分组时,主机B就将主机A的这一地址映射写入主机B自己的ARP高速缓存中。这对主机B以后向主机A发送数据报时就更方便了。 在进行地址转换时,有时还要用到反向地址转换协议RARP。RARP使只知道自己物理地址的主机能够知道其IP地址。这种主机往往是无盘工作站。这种无盘工作站一般只要运行其ROM中的文件传送代码,就可用下行装载方法,从局域网上其他主机得到所需的操作系统和TCP/IP通信软件,但这些软件中并没有IP地址。无盘工作站要运行ROM中的RAR

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论