TCPIP协议分析课件文档格式.docx
《TCPIP协议分析课件文档格式.docx》由会员分享,可在线阅读,更多相关《TCPIP协议分析课件文档格式.docx(25页珍藏版)》请在冰豆网上搜索。
a.处理来自传输层的数据报发送请求
b.处理输入数据报
c.处理路径、流量控制、拥塞等问题。
网络层协议包括IP(网际协议)、ICMP(因特网控制报文协议)和IGMP(因特网组管理协议)。
3.传输层
通常所说的两台计算机之间的通信其实是指两台计算机上对应的应用程序之间的数据通信,传输层提供的就是应用程序间的通信,一般也称为端到端的通信。
其功能包括:
a.格式化信息流;
b.提供可靠传输。
4.应用层
应用层向用户提供一组常用的应用程序,主要包括超文本传输协议(HTTP),简单网络管理协议(SNMP),文件传输协议(FTP),简单邮件传输协议(SMTP),域名系统(DNS),远程登录协议(Telnet)等。
尽管应用层为用户提供的协议较多,但是其只能满足用户的一般需求。
四.客户机/服务器模型
网络应用程序一般是以客户机/服务器模型(Client/Server,C/S)工作。
客户机和服务器是指一次通信中的两个应用程序。
主动发起联系的一方称为客户机程序,它为用户提供向网络请求服务的接口;
而被动等待联系的一方称为服务器程序,它负责接受用户的服务请求,提供资源共享,而且可以同时满足多个客户机的需求。
客户机是服务请求方,服务器是服务提供方。
客户机/服务器模型的工作模型
第二章链路层
1.概述
数据链路层为网络层服务,在相邻节点间传递网络层分组。
数据链路层接收网络层分组,添加首部和尾部后,形成帧。
帧是数据链路层的传输单元。
当源主机和目的主机在同一个物理网络中时,网络层分组被封装一次就可以到达目的地。
当源主机和目的主机之间间隔其他网络时,网络层分组需要被封装多次,才能到达目的地。
2.链路和数据链路
链路指的是一条无源的点对点的物理路线,中间没有任何结点,链路也称数据电路、物理链路。
物理链路是数据传递的物理基础,数据要转换成电磁信号在链路上传递。
物理链路和它上面运行的链路层协议一起组成了数据链路。
链路可以分为两大类:
点对点链路和共享链路。
3.数据链路层的主要功能
数据链路管理,成帧,流量控制,差错控制
链路的管理:
当两个结点要开始通信时,发送方要确知接收方是否处在准备接收数据的状态。
为此双方要交换一些信息,建立数据链路的连接;
同时在传输数据时要维持数据链路;
当通信结束时要释放链路。
数据链路的建立、维持和释放就叫做链路的管理
成帧:
收到网络层的数据后,数据链路层要在数据前面填加一个首部,通常还会在数据后面填加一个尾部,将数据封装起来,形成帧。
帧是数据链路层的传输单位。
流量控制:
为了避免发生接收方缓存溢出,要控制发送方的发送速度,避免其发送速度过快,造成接收方来不及处理而丢失数据的情况发生,这就是流量控制。
差错控制:
数据链路层除了要具有流量控制外还有具有差错控制的能力。
差错控制包括两个方面,一是要检测差错,二是要采取措施补救错误。
在数据帧的传输过程中,可能会出现两类错误:
一是帧损坏,二是帧丢失。
对差错的处理
当检测到差错,不论是帧损坏或帧丢失,数据链路层通常处理差错的方法是不去修正错误,而是简单地重新传输对应的帧,这个过程称为自动重复请求。
(AutomaticRepeatreQuest,ARQ)
第三章网络层
1.网络层包括:
(1).地址解析协议(ARP)
(2).反向地址解析协议(RARP)
(3).网际协议(IP)
(4).网际控制报文协议(ICMP)
(5).网际组管理协议(IGMP)
1.1地址解析概述
因特网在网络层使用IP地址的同时,在物理网络中仍然在使用物理地址,两套地址之间的转换过程称为地址解析。
解析方法:
a.静态映射主要采用地址映射表来实现IP地址和物理地址之间的映射,即在主机中利用地址映射表来记录网络上其他主机或网络设备的IP地址和物理地址对应关系。
b.动态映射是在需要获得地址映射关系时利用网络通信协议直接从其他主机上获得IP地址和物理地址的映射关系。
在因特网上采用了动态映射方法进行地址映射,包括地址解析协议(ARP)和反向地址解析协议(RARP)
1.1.1地址解析协议(ARP)
a.地址解析协议(ARP)是根据给定的IP地址获取对应的物理地址
b.地址解析协议(ARP)工作过程
广播请求获取目的主机的物理地址的数据报
目的主机以单播方式向发送请求物理地址的主机回送解析结果
c.ARP数据报格式与封装
d.ARP中需要注意的两点:
ARP请求报文和响应报文使用相同的报文格式,它们的协议类型都是0x0800,通过操作类型来区分请求报文和响应报文,其中ARP请求报文的操作类型为0x0001,ARP响应报文的操作类型为0x0002。
ARP主要解决同一局域网上的主机或路由器的IP地址和物理地址的映射问题,如果目的主机位于远程网络中时,ARP请求数据报将先发送给路由器,然后由路由器进行逐级转发,最后发送到目的主机。
e.ARP的改进
为了减少广播ARP请求帧的次数,提高网络工作效率,引入了ARP高速缓存技术,即将某台主机或网络设备上经常使用的目的主机的IP地址和物理地址直接记录在本机的内存中。
1.1.2反向地址解析协议RARP
用来实现从物理地址到IP地址的映射,即已知主机的物理地址,找到其相应的IP地址。
1.1.3代理ARP(了解)
当一台主机通过ARP请求检索另一个物理网络中某台主机的物理地址时,将通过物理网络之间的路由器采用逐级广播的方式进行检索。
检索效率低下,并且严重影响相关物理网络的工作效率。
为此,人们引入了代理技术,即通过路由器来代理不同网络的ARP检索,也称之为代理ARP技术。
引入ARP代理后,在提高了网络工作效率的同时也存在如下问题:
代理ARP使得多个IP地址对应一个物理地址成为合法化,因此难于对付地址欺骗。
代理ARP路由器中的IP地址与物理地址的对应关系需要人工维护,存在及时刷新的问题。
代理ARP难以处理多路由器连接的复杂拓扑结构。
1.2网际协议
网际协议(InternetProtocol,IP)作为TCP/IP协议族中的核心协议,提供了网络数据传送的最基本服务,同时也是实现网络互连的基本协议。
除了ARP和RARP报文以外,几乎所有的数据都要经过IP进行传输。
主要特点如下。
IP是一种点对点协议,虽然IP数据报携带源IP地址和目的IP地址,但进行数据传输时的对等实体一定是同一物理网络中的对等实体。
IP不保证传输的可靠性,不对数据进行差错校验和跟踪,当数据报发生损坏时不向发送方通告,如果要求数据传输具有可靠性,则要在IP层的上面使用其他协议加以保证。
IP提供无连接数据报服务,各个数据报独立传输,可能沿着不同的路径到达目的地,也可能不会按序到达目的地。
1.2.1IP数据报
IP首部是IP模块为了正确传输数据而添加的各种控制信息的集合,是IP数据报的核心,其长度是20~60字节。
版本,4bit,用于存放该IP数据报所使用的IP版本信息。
首部长度,4bit,以4个字节的倍数方式说明IP首部的长度。
服务类型,8bit,用于规定数据报在网络传输过程中的处理方式。
总长度,16bit,以字节为单位具体说明包括IP首部在内的整个IP数据报的总长度。
标识,16bit,又称作“片标识符”,是由信源指定的数据报标识码,用于将分割后的数据报分片重组成原始数据报。
标志,3bit,IP数据报分割控制标志,用于表示该IP数据报是否允许分片以及是否是最后一片。
片偏移,13bit,表示本片数据在它所在的原始数据报数据区中的偏移量。
生存时间(TimeToLive,TTL),8bit,用来指定IP数据报可以在网络上传输的最长时间。
上层协议标识,8bit,用于指明IP数据报所封装的上层协议类型。
首部校验和,16bit,用于IP首部数据有效性的校验,以保证IP首部在传输时的正确性和完整性。
源地址,32bit,存储发送数据报的信源的IP地址。
目的地址,32bit,存储接收数据报的信宿的IP地址。
1.3网际控制报文协议(ICMP)
IP是一种不可靠的,无连接的数据报传输协议,提供了一种尽力而为的点到点数据传输服务,但不能保证所有数据报都可以成功地从信源到达信宿。
为此人们在网络层(也称为IP层)引入了另外一种协议——网际控制报文协议(InternetControlMessageProtocol,ICMP)来实现IP层数据报传输过程中的差错控制。
通过ICMP配合IP的使用,提高了数据报传递的成功率。
ICMP是IP的补充,用于IP层的差错报告、拥塞控制、路径控制以及路由器或主机信息的获取。
1.3.1ICMP报文分为两大类,即ICMP差错报告报文和ICMP查询报告报文。
信宿不可达报告:
当路由器无法转发IP数据报时,或主机无法向上一层协议或端口提交IP数据报时,将丢弃当前的数据报,并产生信宿不可达差错报告向信源报告出错信息。
源端抑制报告:
源端抑制报告报文为IP增加了流量控制能力。
当路由器或信宿机由于拥塞而造成数据报丢弃时,它们可以向信源机发送源端抑制报告报文。
该报文可以起到两方面的作用:
其一是通知信源机数据报已经被丢弃;
其二是警告信源机,在传输路径上出现了拥塞,必须放慢发送速度。
重定向报告:
为了使主机的路由表信息能根据需要进行更新,在ICMP中引入了重定向报告报文,原理如下:
由于主机上的路由表不会随着网络拓扑结构的变化进行实时更新,因此,信源机就有可能将数据报发送给一个错误的路由器(或非最优路由器);
此时,收到这个数据报的路由器会把所收到的数据报转发给正确的路由器,同时向信源机发送一个重定向报告报文;
当信源机收到该报文后,将根据报文信息更新信源机中路由表的路由信息。
超时报告:
每个IP数据报首部都有一个生存时间字段TTL,并通过设置相应的TTL值来控制数据报在网络上的传输时间。
每当数据报通过路由器时,该字段值就减1。
当TTL值为0时,路由器会丢弃该数据报,同时产生一个ICMP超时报告报文发送给信源机。
另外,在信宿机进行分片重组时,也会启动一个重组定时器。
一旦重组定时器超时,信宿机也将丢弃当前正在重组的数据报,并产生一个ICMP超时报告报文发送给信源机。
数据报参数错误报告:
在数据报传输过程中,如果路由器或信宿机发现数据报首部参数存在问题,如首部字段值不明确和空缺等,进而无法转发或处理该数据报,则会将该数据报丢弃,同时向信源机发送一个数据报参数错误报告。
回应请求与应答报告:
引入回应请求和应答报告报文的目的是为网络管理人员和用户提供对网络进行诊断和测试的手段,如可以用该报告来测试信宿是否可达等。
其实现原理为:
信源机(主机或路由器)向信宿机发送回应请求报告报文;
信宿机收到该报文后,根据报文中的请求信息形成回应应答报告并回送给信源机;
信源机可以根据回应应答报告报文来判断两个设备之间是否能正常通信。
地址掩码请求与应答报告:
要想获取一台主机所属的子网地址,除了要知道该主机的IP地址外,还要知道其子网掩码。
在ICMP中,引入了地址掩码请求和应答报告。
利用该报告,请求方可以获取网络上某台主机或路由器的子网掩码,进而可以确定其子网地址。
路由器询问与通告报告:
当某主机希望获得网络上的路由器的状态信息时,可以使用ICMP中的路由器询问与通告报告。
利用该报文,既可以获取路由器的信息,也可以来检测路由器是否处于活动状态。
某主机在引导以后可以创建路由器询问报告报文,并通过广播或多播发出;
当网络上的路由器接收到该报告后,将创建路由器通告报告报文并回送给请求主机。
1.3.2ICMP报文格式
类型:
用于定义ICMP报文类型。
代码:
用于标识发送这个特定报文类型的原因。
校验和:
用于数据传输过程的差错控制,提供ICMP整个报文的校验和。
首部其他部分:
由报文类型来确定相应内容,大部分差错报告报文未使用该字段;
数据:
提供了ICMP差错和状态报告信息,内容因报文类型而异。
ICMP虽然是IP层的协议,但其报文是以IP数据报形式进行传递的,即ICMP报文本身被封装在IP数据报的数据区中。
包含ICMP报文的IP数据报首部的协议类型字段被设置为1。
1.4网际组管理协议(IGMP)
1.4.1IP多播概述
单播(Unicast)传输:
在一台源主机和一台目的主机之间建立点对点的网络连接。
如果一个源主机需要同时给多个目的主机发送相同的数据,则必须复制多份相同数据包,并分别对不同的目的主机进行传输。
这将浪费大量的带宽,也增加了网络服务设备的负载。
广播(Broadcast)传输:
是指在同一IP子网内广播数据包,即一台源主机可以向同一子网内的所有主机或设备发送同一个数据包。
这种方法传输方式不仅会将信息发送给不需要的主机而浪费带宽,也可能由于路由回环而引起严重的广播风暴,并且广播的使用范围非常小,只在本地子网内有效。
多播(Multicast)传输:
在一台源主机和一组目的主机之间建立单点对多点的网络连接。
如果一台源主机同时给多个目的主机传输相同的数据,也只需发送一份相同数据包,提高了数据传送效率,减少了骨干网络出现拥塞的可能性,较好地解决了单点发送多点接收的问题。
1.4.2多播的工作原理
实现IP多播的前提条件
主机的网络接口支持多播,同时主机上的TCP/IP支持发送和接收IP多播数据包。
有一套用于加入、离开、查询的组管理协议,如IGMP(v1,v2,v3)。
有一套IP地址分配策略,并能将IP多播地址映射为MAC地址。
支持IP多播的应用软件。
所有介于多播源和接收者之间的路由器、集线器、交换机均需支持多播;
1.4.3网际组管理协议(IGMP)
用于多播路由器和主机之间进行群组关系的管理,其运行于主机和与主机直接相连的多播路由器之间。
主机通过此协议告诉本地路由器希望加入某个特定多播组,同时路由器通过此协议周期性地查询局域网内某个已知组的成员是否处于活动状态(即该局域网是否仍有属于某个多播组的成员),进行所连网络组成员关系的收集与维护。
IGMP目前有3个版本,IGMPv1(RFC1112)、IGMPv2(RFC2236)和IGMPv3(RFC3376)。
1.4.4IGMP报文
定义了报文的类型,针对IGMPv3来说,只有成员关系查询报告和成员关系报告
最大响应代码:
只用于查询报文,规定了发送一个查询报文的最大响应时间,以1/10秒为单位。
在其他报文中,它由发送方置0,而在接收方被忽略。
在计算校验和之前,该字段首先清0。
在网络传输数据包时,计算校验和并写入该字段,当数据包到达时重新计算校验和,若两次计算结果不匹配则表示有错误。
群组地址:
在一般查询报告报文中该字段的值置为0,而在特定群组查询报文、群组关系报告和退出群组报文中,该字段用来定义群组地址。
禁止路由器处理标志位(S):
当该值置1的时候,表明发出该报文的设备扮演的是路由器角色,所有收到此报文的其他路由器都不应该启动定时刷新器,即禁止处理该报文,但这并不影响主机发送报文。
查询间隔时间(QQIC):
用来规定查询间隔,单位是秒(s)。
源地址数量:
用来设定源地址的数量。
源地址列表:
用来具体列出指定的源地址。
组记录数量:
用来标明在报告中存在多少个组记录。
组记录:
每一个组记录字段是一整块数据,其含有的信息是关于发送者在报告发送接口上的某一个多播组的成员关系。
组记录类型:
用来描述不同类型的组记录。
主要包括如下类型:
当前状态记录、过滤模式改变记录和源列表改变记录。
辅助数据长度描述在组记录中的辅助数据的实际长度,其单位是32bit。
它有可能是0,这就表示辅助数据不存在。
辅助数据,用于存放辅助数据为将来应用预留空间,IGMPv3并不需要。
1.4.5IGMP报文封装
1.4.6IGMP操作(了解一下)
加入多播组:
主机和路由器都可以加入一个多播组。
当某个主机中的一个进程申请加入一个多播组时,主机将发送一个成员关系报告报文到它所在的IP子网的多播路由器上;
路由器接收到该申请后将检查它的群组成员关系表,看该主机是否已经在群组中。
如果该主机不在群组关系表中(即第一次申请),随即将自己的IP模块做相应的准备,以便开始接收来自该多播组传来的数据。
如果这台主机是它所在的IP子网中第一台加入该多播组的主机,则多播路由器将通过路由信息的交换加入多播分布树。
退出多播组:
当主机发现在一个特定的多播组中已经没有进程时,就发送退出报告。
多播路由器收到退出报告后,并不立即删除这个群组,而是针对该群组发送查询报文。
当在指定的时间内没有收到相关主机(和路由器)对该群组的成员关系报告时,就意味着在本网络上已经没有该群组成员,此时,多播路由器将删除该群组。
否则继续保留该群组。
查询成员关系:
由于多播组中的成员关系是动态变化的,并且有些变化是由于异常事件而引起的,例如某个群组的某台成员主机因异常而关机,此时多播路由器将永远接收不到其退出报告。
为了实时掌握群组的成员组成,IGMP提供了一种机制来监控其某个网络上的所有主机和路由器,以便确定群组和主机或路由器之间的关系。
第三章传输层
传输层中有传输控制协议TCP和用户数据报协议UDP这两种通信协议
1.1端到端通信概述
在TCP/IP的网络层中,通过引入IP地址和IP数据报,屏蔽了不同通信网络之间的差异,有效地解决了信源机到信宿机之间的数据传输,即实现了点到点的通信。
人们需求的数据传输不仅是信源机到信宿机之间点到点通信,而往往是两个不同应用进程之间的数据传输。
在TCP/IP的传输层中,引入了端口的概念,每个端口都有一个端口号,利用不同的端口号来标识不同的应用进程,从而能够把数据分送给不用的应用进程,实现了应用进程之间的通信。
端口是一种抽象的软件结构,它既是通信进程的标识,也是进程访问传输服务的入口点。
每个端口都有一个16bit的端口号,其分配方式有两种
统一分配:
采用集中控制方式由权威机构IANA分给特定应用程序端口号并公开发布出来,所有协议软件都遵守这种分配,因此又称为熟知端口。
其分配的范围为0~1023。
其缺点是不能适用大量且变化迅速的端口使用环境。
本地分配:
根据应用软件的需要动态分配端口号。
如当某个应用进程需要与远程的某个已知端口服务器进行通信时,向本地操作系统动态提出申请,操作系统返回一个本地唯一的端口号。
所申请的端口号又称为临时端口号。
当通信完成后,该端口号就释放掉。
这种分配方式的特点是灵活方便,而缺点是其他主机难于得知其端口号。
大多数TCP/IP应用中,临时端口号的分配范围为1024~5000,大于5000的端口号一般为其他服务预留。
在传输层中有传输控制协议TCP和用户数据报协议UDP这两种通信协议,每一种协议各有一套属于自己的端口号,且相互独立。
在因特网中要全局地标识一个进程,需要采用三元组(协议,主机IP地址,端口号)。
由于两个相互通信的应用进程之间的通信协议肯定是相同的,因此可以采用五元组(协议,信源机IP地址,信源应用进程端口,信宿机IP地址,信宿应用进程端口)来描述两个应用进程之间的通信关联。
1.2传输控制协议(TCP)
提供一种面向连接的、可靠的数据传输服务,保证了端到端数据传输的可靠性。
1.2.1主要特点:
向应用进程提供面向连接的服务,两个需要通过TCP进行数据传输的应用进程之间首先必须建立一个TCP连接,并且在数据传输完成后要释放连接。
一般将请求连接的应用进程称为客户机进程,而响应连接请求的应用进程称为服务器进程,即TCP连接的建立采用的是一种客户机/服务器工作模型。
提供全双工数据传输服务,只要建立了TCP连接,就能在两个应用进程间进行双向的数据传输服务,但是这种传输只是端到端的传输,不支持广播和多播。
提供面向字节流的服务,即TCP的数据传输是面向字节流的,两个建立了TCP连接的应用进程之间交换的是字节流。
发送进程以字节流形式发送数据,接收进程也把数据作为字节流来接收。
端到端之间不保留数据记录的边界,也就是说在传输的层面上不存在数据记录的概念。
1.2.2TCP报文段结构
每个TCP报文段都包括源端和目的端的端口号,用于标识发送端和接收端的应用进程。
序列号用来标识从TCP发送端向接收端发送的数据字节流,它表示在这个报文段中的第一个数据字节序号。
确认号是指期望接收的下一个报文段的第一个字节的序列号,也就是期望接收对方的下一个报文段首部的序列号字段的值。
同时,确认号也表明在确认号之前的所有数据接收方都已经收到。
首部长度字段占4位,用来标识TCP报文段首部的长度共有多少个32位字块构成,因此首部的长度一定是32位的整数倍。
保留字段目前未用,供将来使用。
其后面的6位是控制字段,用于TCP的流量控制、连接的建立和终止以及表示数据的传送方式等。
各位的具体含义如下:
URG:
当该位为1时,表明紧急指针有效,否则无效。
ACK:
当该位为1时,表明确认序号有效,即该报文段是一个确认报文段,否则无效。
PSH:
其值为1时表示接收方应尽快将这个报文段交给应用层处理。
RST:
重建连接标志。
SYN:
同步序号标志,其值为1时用来发起一个连接。
FIN:
其值为1时表示发送端完成发送任务。
窗口大小用来配合TCP中的流量控制算法实现流量控制,该字段的值用来定义通信对方必须维持的以字节为单位的窗口值,以实现对对方发送数据量的控制。
校验和字段用来校验整个TCP报文段的所有数据的正确性,包括TCP首部和数据。
为了校验TCP数据报是否正确地传递到了信宿机,在计算校验和时引入了伪首部的概念,其包