TCPIP协议原理.ppt
第七章 TCP/IP协议原理(讲师用PPT),中国网通(集团)有限公司2006年12月24日,中国网通运维人员岗位培训丛书数据专业,内部资料注意保密,目标,熟悉TCP/IP的协议体系掌握IP的地址分类及掩码划分掌握IP分片和重组的原理掌握IP、TCP、UDP的报文结构掌握TCP、UDP的工作原理学会使用抓包工具对TCP/IP报文进行抓包分析,7.1,7.2,TCP/IP概述,IP协议及IP地址,3,7.3,TCP协议,UDP协议,7.4,目录,7.1.1 TCP/IP的产生背景及特点,7.1 TCP/IP概述,TCP/IP的产生背景 TCP/IP 始于 1969 年,也就是美国国防部(DoD)委任高级资源计划机构网络(ARPANET)的时间。TCP/IP是指一整套数据通信协议,其名字是由这些协议中的两个协议组成的,即传输控制协议(TCP)和网间协议(IP)。虽然还有很多其他协议,但是TCP和IP显然是两个最重要的协议 TCP/IP的特点:开放式协议标准 与物理网络硬件无关 通用的寻址方案各种标准化的高级协议,7.1 TCP/IP概述,TCP/IP协议体系,TCP/IP参考模型网络接口层:也称为数据链路层,它是 TCP/IP 的最底层。互联网层:也称IP层,该层把分组封装到IP数据报中,填入数据报的首部,使用路由算法来选择数据报的传输途径。然后把数据报交给下面的网络接口层中的对应网络接口模块。传输层:其功能是使源端主机和目标端主机上的对等实体可以进行会话。分为TCP和UDP协议。应用层:将OSI参考模型中的会话层和表示层的功能合并到应用层实现。应用层面向不同的网络应用引入了不同的应用层协议。,图2 TCP/IP参考模型,图1 OSI与TCP/IP参考模型对照图,7.1 TCP/IP概述,包:网络上传输的数据片段,也称分组。服务:指特定一层提供的功能。接口:是上下层次之间调用功能和传输数据的方法。协议:是对等层必须共同遵循的标准。寻址:是网络的核心概念。网络上的所有设备都给定一个遵循标准格式的唯一标识,即设备的地址。,7.1.3 TCP/IP常用概念介绍,7.1 TCP/IP概述,端口号:标识应用进程,即TCP/UDP用主机IP地址和为应用进程分配的端口号来标识应用进程。,7.1,7.2,TCP/IP概述,IP协议及IP地址,3,7.3,TCP协议,UDP协议,7.4,目录,7.2 IP协议及IP地址,IP协议是TCP/IP协议族中最为核心的协议。所有的TCP、UDP、ICMP及IGMP数据都以IP数据报格式传输。IP提供的不可靠、无连接的数据报传送服务使得各种各样的物理网络只要能够提供数据报传输就能够互联,这成为Internet在数年间就风靡全球的主要原因。不可靠(unreliable):是它不能保证IP数据报能成功地到达目的地。IP仅提供尽最大努力投递(best-effort delivery)的传输服务。如果发生某种错误时,如某个路由器暂时用完了缓冲区,IP有一个简单的错误处理算法:丢弃该数据报,然后发送 ICMP 消息报给发送端。任何要求的可靠性必须由上层来提供(如TCP)。无连接(connectionless):是IP并不维护任何关于后续数据报的状态信息。每个数据报的处理是相互独立的。这也说明,IP数据报可以不按发送顺序接收。如果发送端向相同的接收端发送两个连续的数据报(先是A,然后是 B),每个数据报都是独立地进行路由选择,可能选择不同的路线,因此B可能在 A 到达之前先到达。IP提供了三个重要的定义:(1)IP 定义了在整个TCP/IP互联网上数据传输所用的基本单元,因此它规定了互联网上传输数据的确切格式;(2)IP 软件完成路由选择的功能,选择一个数据发送的路径;(3)除了数据格式和路由选择的精确而正式的定义外,IP还包括了一组嵌入了不可靠 分组投递思想的规则,这些规则指明了主机和路由器应该如何处理分组、和实际如何发 出错误信息以及在什么情况下可以放弃分组。,7.2.1 IP协议简介,7.2 IP协议及IP地址,IP地址简介 为了使连入Internet的众多主机在通信时能够相互识别,Internet上的每一台主机和路由器都分配有一个唯一的32位地址。一个IP地址有4个字节组成,字节之间用句号分隔,每个字节表示为从 0 255 的十进制数(8位二进制数最大为 11111111,即十进制数255),这个表示法称为IP地址的点分十进制表示法(dotted decimal notation)。,IP地址及子网,IP地址分类 IP协议规定了IP地址分为五类:AE,其中 A、B、C 三类是基本类型,具体分类见下图。,7.2 IP协议及IP地址,子网与子网掩码:在实际应用中,IP 地址还可以分层,将一个网络分为多个子网。在分层时,不再把 IP 地址看成由单纯的一个网络号和一个主机号组成,而是把主机号再分成一个子网号和一个主机号。例如一个B类网,可以把主机地址中前8位用来表示子网地址,后 8 位留作主机地址,这种 B 类网IP地址格式如图所示。这样就允许有254个子网,每个子网可以有254台主机。,IP地址及子网,同一网络中的不同子网用子网掩码来划分,子网掩码(subnet mask)是网际地址中对应网络标识编码的各位1,对应主机标识编码的各位为0的一个四字节整数,也叫做子网屏蔽码。对于 A、B、C 三类网络来说,它们都有自己默认的掩码,即没有划分子网时的掩码,如下图所示。,7.2 IP协议及IP地址,7.2.3 IP数据包报文结构,版本字段:4位,IP协议的版本号,目前为4。报头长:4位,IP数据报的报头长度(以32位为单位)。服务类型字段:8位,用于规定优先级,传送速率,吞吐量和可靠性等参数。总长度:16位,包含IP头在内的数据单元的总长度(字节数)。标识符:16位,标明一个数据报或分段的数据。标志:3位,数据报是否分段标志。分段偏移量字段:如果一个数据报被分成2个以上的段,分段偏移量字段指出该段在被传送的初始数据报中的偏移量。因此,该字段指出一个段在整个数据报中的位置。生命期字段:8位,允许数据报在网间传输的存活时间。协议字段:8位,发送数据报的上层协议。报头校验和:16位,仅用于报头的检查。源地址和目的地址字段:每一个地址代表一个网络和网络中的一台主机。,7.2 IP协议及IP地址,IP路由选择主要完成以下这些功能:,7.2.4 IP数据包选路,搜索路由表,寻找能与目的IP地址完全匹配的表目。搜索路由表,寻找能与目的网络号相匹配的表目。搜索路由表,寻找标为“默认(default)”的表目。完整主机地址匹配在网络号匹配之前执行。只有当它们都失败后才选择默认路由。默认路由,以及下一站路由器发送的ICMP间接报文(如果我们为数据报选择了错误的默认路由),是IP路由选择机制中功能强大的特性。为一个网络指定一个路由器,而不必为每个主机指定一个路由器,这是IP路由选择机制的另一个基本特性。,MTU:网络最大传送单元.不同类型的物理网对一个物理帧可传送的数据量规定不同的上界.分片和重组:在MTU 小的网络上,把大的数据报分成较小的单位。这种较小的单位叫做数据报片或段(fragment),划分数据报的过程叫做分片或分段(fragmentation)。下图 表示了这样的一个需要分片的案例:网络1 和3的MTU为1500,网络2 的MTU为 620,当主机A和主机B通信时,路由器R1把从A发送到B上的长数据报分片,路由器 R2 把从B发送到A上的长数据报分片。数据报的重组:有两种方法,一是在通过一个网络后就将分片的数据报重组;而是在到达目的主机后重组。在 TCP/IP 实现中,采用的是后一种方法。数据报头中的标识、标志和分片位移三个字段用作控制分片和重组。,7.2 IP协议及IP地址,7.2.5 IP分片及重组,7.2 IP协议及IP地址,ARP/RARP协议简介:实现IP地址与 硬件地址(MAC 地址)之间的相互解析ARP/RARP报头结构,7.2.6 IP层协议实例,硬件类型字段:指明了发送方想知道的硬件接口类型,以太网的值为1;协议类型字段:指明了发送方提供的高层协议类型,IP为0800(16进制);硬件地址长度和协议长度:指明了硬件地址和高层协议地址的长度,这样ARP报文就可以在任意 硬件和任意协议的网络中使用;操作字段:用来表示这个报文的类型,ARP请求为1,ARP响应为2,RARP请求为3,RARP响应为4;,7.2 IP协议及IP地址,ARP的工作原理:每台主机都会在自己的ARP缓冲区(ARP Cache)中建立一个 ARP列表,以表示IP地址和MAC地址的对应关系。当源主机需要将一个数据包要发送到目的主机时,首先检查自己ARP列表中是否存在该IP地址对应的MAC地址,若有则直接转发;若没有,就向本地网段发起一个ARP请求的广播包,查询此目的主机对应的MAC地址。网络中所有的主机收到这个ARP请求后,会检查数据包中的目的IP是否和自己的IP地址一致。如果不相同,就忽略此数据包;如果相同,该主机首先将发送端的MAC地址和IP地址添加到自己的ARP列表中,如果ARP表中已经存在该IP的信息,则将其覆盖,然后给源主机发送一个 ARP响应数据包,告诉对方自己是它需要查找的MAC地址。源主机收到这个ARP响应数据包后,将得到的目的主机的IP地址和MAC地址添加到自己的ARP列表中,并利用此信息开始数据的传输。如果源主机一直没有收到ARP响应数据包,表示ARP查询失败。,7.2.6 IP层协议实例,7.2 IP协议及IP地址,RARP的工作原理:是反向ARP协议,即由硬件地址查找逻辑地址 发送主机发送一个本地的RARP广播,在此广播包中,声明自己的MAC地址并且请求任何收到此请求的RARP服务器分配一个IP地址。本地网段上的RARP服务器收到此请求后,检查其RARP列表,查找该MAC地址对应的IP地址。如果存在,RARP服务器就给源主机发送一个响应数据包并将此IP地址提供给对方主机使用。如果不存在,RARP服务器对此不做任何的响应。源主机收到从RARP服务器的响应信息,就利用得到的IP地址进行通讯;如果一直没有收到RARP服务器的响应信息,表示初始化失败。,7.2.6 IP层协议实例,7.2 IP协议及IP地址,ICMP协议:与IP协议同属于OSI的网络层,用于传送有关通信问题的消息,实现故障隔离和故障恢 复。ICMP报文格式如下图所示。,7.2.6 IP层协议实例,类型:标识生成的错误报文,它是ICMP报文中的第一个字段;代码:进一步地限定生成ICMP报文。该字段用来查找产生错误的原因;校验和:存储了ICMP所使用的校验和值;未使用:保留字段,供将来使用,起值设为0。,7.2 IP协议及IP地址,ICMP协议提供的诊断报文类型如下表所示。,7.2.6 IP层协议实例,7.2 IP协议及IP地址,实例分析 ping这个名词源于声纳定位操作,目的是为了测试另一台主机是否可达。该程序发送一份ICMP回显请求报文给主机,并等待返回ICMP回显应答。ICMP回显请求和回显应答报文下图所示。,7.2.6 IP层协议实例,在主机100.0.6.46 ping 主机,通过抓包工具进行抓图可以更加清晰的理解上面所讲内容。,7.2 IP协议及IP地址,实例分析,7.2.6 IP层协议实例,图1 PING回显请求与回显应答,图2 Ping 回显请求报文,图2 Ping回显应答报文,7.2 IP协议及IP地址,实例分析,7.2.6 IP层协议实例,从上面图可以看出,正常情况下,ping回显请求与回显应答都是成对出现。使用的IP 协议号为1。Ping回显请求报文的ICMP 类型字段值为8,回显应答报文的ICMP类型字段值为0。TTL(Time To Live)为249。回显时延是通过包的时间戳字段相减得到。如下图 显示第一个回显响应如何得到time值。同时,我们可以知道时延(time)为ping主机发送报文到被ping主机来回总共的时间。,(A)Ping回显请求的时间戳,(B)Ping回显响应的时间戳Ping 回显时延time=762-609=153ms,7.1,7.2,TCP/IP概述,IP协议及IP地址,3,7.3,TCP协议,UDP协议,7.4,目录,7.3 TCP协议,面向数据流 虚电路连接有缓冲的传输 无结构的数据流 全双工连接,7.3.1 TCP协议的特点,7.3 TCP协议,顺序号:占32比特。用来标识从TCP源端向TCP目标端发送的数据字节流,它表示在这个报文段中的第一个数据字节的顺序号。确认号:占32比特。只有ACK标志为1时,确认号字段才有效。报头长度:占4比特。给出报头中32bit字的数目,它实际上指明数据从哪里开始。标志位(U、A、P、R、S、F):占6比特。它们中的多个可同时被设置为1。URG:为1表示紧急指针有效;ACK:为1表示确认号有效;PSH:为1表示是带有 PUSH 标志的数据,指示接收方应该尽快将这个报文段交给应用层而不用等待缓冲区装满;RST:用于复位由于主机崩溃或其他原因而出现错误的连接;SYN:同步序号,为1表示连接请求,用于建立连接和使顺序号同步;FIN:释放一个连接。为1表示发送方已经没有数据发送了,即关闭本方数据流 窗口大小:占16比特。此字段用来进行流量控制。紧急指针:占16比特。只有当URG标志置1时紧急指针才有效。,7.3.2 TCP报文结构,0 15 16 31,7.3 TCP协议,TCP 使用滑动窗口的机制来提高网络吞吐量,同时解决端到端的流量控制。滑动窗口技术是简单的带重传的肯定确认机制的一个更复杂的变形,它允许发送方在等待一个确认信息之前可以发送多个分组。如下图所示,窗口内包括 8 个分组的滑动窗口协议,收到对 1 号分组的确认信息后,窗口滑动,使得9号分组也能被发送。,7.3.3 TCP的流量控制,7.3 TCP协议,TCP的建立连接三次握手过程:如图1所示。TCP的释放连接的四次握手过程:如图2所示。,7.3.4 TCP的建链全过程,图1 TCP建立连接的三次握手过程,图2 TCP释放连接的四次握手过程,7.3 TCP协议,TCP的建立过程,7.3.5 实例分析,图1 TCP建立过程这三行的核心意思就是TCP协议的三次握手,图2 TCP建链过程一,请求端22号机()发送一个初始序号(SEQ)3265668752给服务器101号机(),在主机100.0.5.22 上通过web页面访问,并通过sniffer抓包分析一下TCP的工作过程,7.3 TCP协议,TCP的建立过程,7.3.5 实例分析,图3 TCP建链过程二,服务器101号机收到这个序号后,将此序号加1值为3265668753作为应答信号(ACK),同时随机产生一个初始序号(SEQ)2802975878,这两个信号同时发回到请求端22号机。,图4 TCP建链过程三,请求端22号机收到后将确认序号设置为服务器的初始序号(SEQ)2802975878加1为作为2802975879应答信号。,7.3 TCP协议,7.3.5 实例分析,图5 数据传输过程,是数据传输过程中一个发送一个接收的过程。TCP提供一种面向连接的、可靠的字节流服务。当接收端收到来自发送端的信息时,接受端要发送一条应答信息,表示收到此信息。,TCP的终止连接过程,图7 TCP终止连接过程二,22号机收到收到FIN关闭请求后,发回一个确认,并将应答信号(ACK)设置为收到序号加1,这样就终止了这个方向的传输。,图6 TCP终止连接过程一,若长时间不再浏览网页,服务器44号机()将FIN置1连同序号(SEQ)2573611649发给客户端22号机()44号机请求终止连接,TCP的数据传输,7.3 TCP协议,7.3.5 实例分析,TCP的终止连接过程,图9 TCP终止连接过程四,44号机收到FIN关闭请求后,发回一个确认,并将应答信号(ACK)设置为收到序号加1,至此TCP连接彻底关闭。,图8 TCP终止连接过程三,22号机将FIN置1连同序号(SEQ)69409574发给44号机请求终止连接。,7.1,7.2,TCP/IP概述,IP协议及IP地址,3,7.3,TCP协议,UDP协议,7.4,目录,7.UDP协议,7.UDP协议介绍,UDP是一个简单的面向数据报的传输层协议,提供了不可靠的无连接传输服务。UDP的封装如下图,7.2 UDP报文格式,端口号:表示发送进程和接收进程。UDP长度字段指的是UDP首部和UDP数据的字节长度UDP检验和覆盖UDP首部和UDP数据,7.UDP协议,7.3 实例分析,以访问的DNS解析为例,使用抓包软件进行抓包。,图1 DNS解析发送接收报文,图2 DNS请求报文,图3 DNS应答报文,