文档库 最新最全的文档下载
当前位置:文档库 › 深入理解IP包分片原理

深入理解IP包分片原理

深入理解IP包分片原理
深入理解IP包分片原理

深入理解IP包分片原理

原理, 分片一、关键术语

MTU MRU PMTU MSS包分片

ip 分片和tcp分片差异

1.IP分片产生的原因是网络层的MTU;TCP分段产生原因是MSS.

2.IP分片由网络层完成,也在网络层进行重组;TCP分段是在传输层完成,并在传输层进行重组. //透明性

3.对于以太网,MSS为1460字节,而MUT往往会大于MSS.

故采用TCP协议进行数据传输,是不会造成IP分片的。若数据过大,只会在传输层进行数据分段,到了IP层就不用分片。

而我们常提到的IP分片是由于UDP传输协议造成的,因为UDP传输协议并未限定传输数据报的大小。

为什么会有IP分片?直接原因是上层协议企图发送一段数据,其长度超过了MTU (Maxitum Transmission Unit)。什么情况,或者说什么协议会尝试发送这么长的数据?常见的有UDP和ICMP,需要特别注意的是,TCP一般不会。

为什么TCP不会造成IP分片呢?原因是TCP自身支持分段:当TCP要传输长度超过MSS(Maxitum Segment Size)的数据时,会先对数据进行分段,正常情况下,MSS小于MTU,因此,TCP一般不会造成IP分片。

而UDP和ICMP就不支持这种分段功能了,UDP和ICMP认为网络层可以传输无限长(实际上有65535的限制)的数据,当这两种协议发送数据时,它们不考虑数据长度,仅在其头部添加UDP或ICMP首部,然后直接交给网络层就万事大吉了。接着网络层IP协议对这种“身长头短”的数据进行分片,不要指望IP能很“智能”地识别传给它的数据上层头部在哪里,载荷又在哪里,它会直接将整个的数据切成N个分片,这样做的结果是,只有第一个分片具有UDP或者ICMP首部,而其它分片则没有。

于是又更进一步理解TCP存在的必要性了!

二、 MTU MRU简介

我们都知道,不同类型的网络,其MTU(最大传输单元)各不相同,如以太网中,最大的传输帧为1518字节,FDDI为4500字节,令牌环帧在4500字节到17800字节之间,而IP协议的一个重要功能,就是能够对传输的数据大于硬件接口的MTU时,对其进行分段传输。即大于MTU的数据报将被分为2个或多个的合适的大小被传输。一个分片在到达接收主机的路径中,还可能被继续分片,因此,分片的IP数据报可能会以不同的路径传输到接收主机,接收主机通过一系列的重组,将其还原为一个完整的IP数据报,再提交给上层协议处理。而MRU是(最大接收单元)表示网络设备端口所能接收到的最大数据包的大小。

IP标识符、标志、偏移量3个字段在IP报头中的位置如下图1所示:

在发送数据报前,发送主机给每个数据报一个ID值,放在16位的标识符字段中。此ID用于标识唯一的数据报或数据流。接收主机利用此ID对收到的数据报进行重组。正如前面所说,当分片的IP数据报从源地址发送到目的地址的时候,由于网络延迟或者不同的传输路径的关系,在到达目的主机时,这些分片数据报并不总是有序的排列,而是处于一种无序状态,因此,接收主机便用此ID判断接收的这些分片数据报是否属于同一个数据流,然后再根据每个分片包的偏移量进行重组。

标志字段在IP报头中占3位,第1位(Reserved bit)作为保留,置0;第2位(DF),分段,有两个不同的取值:该位置0,表示该数据包允许被分段;该位置1,表示不能被分段;第3位(More fragments),更多分段,同样有两个取值:该位置0,表示这是数据流中的最后一个分段,该位置1,表示数据流未完,后续还有分段,当一个数据报没有分段时,则该位置0,表示这是唯一的一个分段。见下图2:

当设备接收到一个IP数据报时,会首先查看该数据报的标识符,并且检查DF位,看该包是否允许被分段:

如果为1,则确认报大小;如果小于MTU则进行转发;如果大于MTU,则标准的操作是发送一个标志ICMP报文给数据报发送源,告知数据报过大,然后丢弃这个过大的数据报。

如果为0,同样确认数据报大小;如果数据报加上传输开销大于MTU,则对数据报进行分片操作以满足转发要求;如果数据包加上传输开销小于MTU,则直接进行转发。

注:此处ICMP回应根据RFC文档有两种方法:第一种方法:RFC 792 ,此种方法只告知数据报发送源数据包大于MTU值。第二种方法:RFC 1191,此种方法在告知数据报发送源数据包大于MTU值的同时还会同时告知当前适合传送链路中适合的MTU值大小。

三、 IP包的重组过程:、

IP包重组是通过每个分片的标示符来确认哪些分片是属于同一个数据包。而分片的顺序则是通过IP头的偏移量字段来实现。偏移量字段的大小是13个BIT,偏移量数值乘以8表示该分片在数据包中的起始位置。

以太网中,源主机如果需要通过UDP传送3000字节的数据到目的主机,这时的分段情况如下图4所示(在同一网段):

此处需要注意的是对于分片1的报头,相对于其他两个分片的报头而言,要多出8个字节UDP协议的报头开销,因此,在计算实际传输的数据净载荷时,分片1要多减去8字节UDP 报头。最后,接收主机通过此偏移值将数据重组成完整的数据报。

四、 TCP包分片及优化

TCP 因为是面向连接的协议,在传输过程中有着较为复杂的窗口滑动以及确认机制。因此在TCP包传送过程中应该尽量避免数据包被分片转发。一般情况下TCP协议在三次握手时就回根据发送方和接受方的MTU值大小来确定MSS的大小。

MSS是TCP头中option字段里面的一个可选项。当option kind=2时,其表示MSS值。但是问题出现了。因为在TCP三次握手过程中传送的数据包一般都不会大于数据链路的MTU 值。当握手完毕MSS值被确定下来之后。开始使用MSS值最为最大传送数据段时,中间的网络设备MTU值达不到被传送数据包大小的要求。此时数据包遭到丢弃。例如:您可以用 FTP 命令行工具成功地与 FTP 服务器建立连接并登录。但是,当您试图下载或者上载文件时,中间的 PMTU 黑洞路由器就会丢弃达到最大大小的 TCP 数据段,从而导致错误和文件传输失败。这里又引入了一个新的概念PMTU,即路径最大传送单元。这个值实际上就是两个通信主机之间所经过设备的最小MTU值。

TCP如何去发现传送过程中的PMTU,以最大效率的发送数据包呢?通常的做法是TCP包在发送是允许被分片。当对端接收到分片的TCP包时,会修改自身的MSS值,使得对端和自己重新协商MSS。达到最终发现PMTU的目的。

以太网数据包格式

时隙在一般的数字通信原理中是这样定义的: 由各个消息构成的单一抽样的一组脉冲叫做一帧,一帧中相邻两个脉冲之间是时间间隔叫做时隙. 而以太网的时隙有它自己的特定意义. (1)在以太网CSMA/CD规则中,若发生冲突,则必须让网上每个主机都检测到。但信号传播到整个介质需要一定的时间。 (2)考虑极限情况,主机发送的帧很小,两冲突主机相距很远。在A发送的帧传播到B的前一刻,B开始发送帧。这样,当A的帧到达B时,B检测到了冲突,于是发送阻塞信号。 (3)但B的阻塞信号还没有传输到A,A的帧已发送完毕,那么A就检测不到冲突,而误认为已发送成功,不再发送。 (4)由于信号的传播时延,检测到冲突需要一定的时间,所以发送的帧必须有一定的长度。这就是时隙需要解决的问题。 这里可以把从A到B的传输时间设为T,在极端的情况下A要在2T的时间里才可以检测到有冲突的存在 1,电磁波在1KM电缆的传输时延约为5us(这个数字应该记下来~~~),如果在理想情况下 2,在10Mbps的以太网中有个5-4-3的问题:10 Mb/s以太网最多只能有5个网段,4个转发器,而其中只允许3个网段有设备,其他两个只是传输距离的延长。按照标准,10Mbps以太网采用中继器时,连接最大长度为2500米! 那么在理想的情况下,时隙可以为2500/1000*5*2us=25us,但是事实上并非如此简单.实际上的 时隙一定会比25us大些.接下来说明一下~~~ 3,在以太网在,时隙也可以叫做争用期,只有经过争用期这段时间没有检测到冲突碰撞,发送端才能肯定这次发送不会发生碰撞.然后当发生了碰撞而停止之后,以太网上的机器会再次侦听,再发送,这就有个再 次碰撞的可能性,这里以太网使用了截断二进制指数类型的退避算法来解决,在碰撞之后,会推迟一个随机时间(具体略),这也会对争用期的选择有些影响. 而这个截断二进制指数类型的退避算法的有关说明,可以看看我回的这个帖子~

网络数据包的捕获与分析毕业设计

网络数据包的捕获与分析 【摘要】网络数据包的捕获对于网络安全有着巨大的作用,为我们更好的分析网络中的数据流提供了帮助。本论文是基于Windows下开发一个网络监听工具,侧重点在于实现网络数据包的捕获,然后分析并显示捕获到的数据包信息这部分功能的实现,如分析:IP首部协议类型、源IP、目的IP和端口号等。采用的是Winpcap(Windows Packet Capture)来实现的抓包功能。通过VC++6.0中MFC编程实现通过一个完整界面来控制调用Winpcap中的函数来实现对网卡信息的捕获和循环捕获数据包,然后通过预先对于IP、TCP、UDP等数据包的定义和TCP/IP等协议来解析其中包含的内容并返回显示捕获到数据包的信息,当然也可以保存捕获到的数据包到指定地点以便进一步分析。 【关键词】Winpcap;数据包;捕获;分析

The Capture and Analysis of Network Data Packets Wang Hang (Grade 11,Class 1, Major Network Engineering, Scho ol of Mathematics and Computer Science Dept, Shaanxi University of Technology, Hanzhong 723003, Shaanxi) Tutor: Jia Wei Abstract: The capture of network data packets plays an important part in network security, which is helpful for our better analysis of network data flow.This paper is about a network monitoring tool based on Windows system, which emphasizes particularly on realizing the capture and analysis of network data packets and then displays them. Take analysis as an example, it will check the type of the IP protocol, the source address of IP, the destination address of IP and the port https://www.wendangku.net/doc/385309782.html,e the Winpcap(Windows Packet Capture)to capture of data packets. In MFC programming of VC++6.0, the capture of network data packets can be realized via the invoking and control of the functions through a full control panel, and then the analysis of IP ,TCP,UDP and TCP/IP will be done before they are displayed. Certainly the information captured can be saved to the appointed destination in order to go through an advanced analysis. Key words:Winpcap;Data Packets;Capture;Analysis

IP数据报格式

IP数据报格式 TCP/IP协议定义了一个在因特网上传输的包,称为IP 数据报(IP Datagram)。这是一个与硬件无关的虚拟包, 由首部和数据两部分组成,其格式如图所示。首部的前一部分是固定长度,共20字节,是所有IP数据报必须具有的。在首部的固定部分的后面是一些可选字段,其长度是可变的。首部中的源地址和目的地址都是IP协议地址 1、IP数据报首部的固定部分中的各字段 (1)版本占4位,指IP协议的版本。通信双方使用的IP 协议版本必须一致。目前广泛使用的IP协议版本号为4(即IPv4)。 (2)首部长度占4位,可表示的最大十进制数值是15。请注意,这个字段所表示数的单位是32位字长(1个32位字长是4字节),因此,当IP的首部长度为1111时(即十进制的15),首部长度就达到60字节。当IP分组的首部长度不是4字节的整数倍时,必须利用最后的填充字段加以填充。因此数据部分永远在4字节的整数倍开始,这样在实现IP 协议时较为方便。首部长度限制为60 字节的缺点是有时可能不够用。但这样做是希望用户尽量减少开销。最常用的首部长度就是20字节(即首部长度为0101),这时不使用任何

选项。 (#我们一般看到的版本和首部长度两个字段是十六进制45,就是版本号version=4,headlength=5,也就是首部长度是60个字节) (3)区分服务占8位,用来获得更好的服务。这个字段在旧标准中叫做服务类型,但实际上一直没有被使用过。1998年IETF把这个字段改名为区分服务DS(Differentiated Services)。只有在使用区分服务时,这个字段才起作用。 (4)总长度总长度指首部和数据之和的长度,单位为字节。总长度字段为16位,因此数据报的最大长度为 216-1=65535字节。 #可以看这个以太网frame总长为336字节,而IP数据包Total length=322,336-322=14正好是Ethernet包头的长度,所以就可以看出这IP数据包总长度一值就是除去Ethernet头的剩余长度,也就是IP包头加数据的长度。 在IP层下面的每一种数据链路层都有自己的帧格式,其中包括帧格式中的数据字段的最大长度,这称为最大传送单元MTU(Maximum Transfer Unit)。当一个数据报封装成链路层的帧时,此数据报的总长度(即首部加上数据部分)一定不能超过下面的数据链路层的MTU值。 (5)标识(identification)占16位。IP软件在存储器中维

Ip数据包捕获设计报告

解析IP数据包程序设计与实现 学生姓名:梁帅指导老师:谢晓巍 摘要现如今,计算机网络已经彻彻底底地改变了人们的生活。大量的数据都是经过计算机网络传输的,而TCP/IP协议是计算机网络中最重要的协议之一。计算机网络中绝大多数数据都是以IP数据包的形式发送和接受的。所以IP数据包的捕获是很多计算机安全技术的基础。本课程设计实现了可以捕获流经本地网卡的IP数据包并将其头部信息解析输出的程序。 关键词TCP/IP;IP数据包;计算机网络;捕获

Design and implementation of IP data packet Student name: LIANG Shuai Advisor:XIE Xiao-wei Abstract Nowadays, computer network has completely changed people's life. A large amount of data is transmitted through computer networks, and the TCP/IP protocol is one of the most important protocols in computer networks. Most of the data in the computer network are sent and received in the form of IP data packets. So IP packet capture is the basis of many computer security technology. This course is designed to capture the IP data packet that flows through the local network card and the program to parse the output of its head. Key words TCP/IP;IP data packet;Computer network;Capture

IP路由基础(回程路由)

实验十一 IP 路由基础 【实验内容与目标】 完成本实验,您应该能够: l 掌握路由转发的基本原理 l 掌握静态路由、缺省路由的配置方法 l 掌握查看路由表的基本命令 【实验组网图】 【实验过程】 实验任务一:查看路由表 本实验主要是通过在路由器上通过查看路由表,观察路由表中路由项。通过本次实验, 学生能够掌握如何使用命令来查看路由表,及了解路由项中要素的含义。 步骤一:建立物理连接 按照拓扑图进行连接,并检查路由器质软件版本及配置信息,确保路由器软件版本符合要求,所有配置为初始状态。如果配置不符合要求,请读者在用户模式下擦除设备中的配置文件,然后重启路由器以使系统采用缺省的配置参数进行初始化。 以上步骤可能会用到以下命令: display veraion reset saved-configuration reboot 步骤二:在路由器上查看路由表 首先,在路由器上查看路由表,如下所示: display ip routing-table Routing Tables : Public Destinations :2 Routes :2 Destination/Mask Proto Pre Cost NextHop Interface 127.0.0.0/8 Direct 0 0 127.0.0.1 InLoop0 E0/1 E0/1 PC1: 10.1.1.2/24 30.1.1.2/24

127.0.0.1/32 Direct 0 0 127.0.0.1 InLoop0 由以上输出可知,目前路由器只有目的地址是127.0.0.0的路由,这是路由器的环回地址直连路由。 按表所示在路由器接口上分别配置IP地址。 IP地址列表 设备名称接口IP地址网关 RTA E0/0 192.168.0.1/24 E0/1 192.168.1.1/24 RTB E0/0 192.168.1.2/24 E0/1 192.168.2.1/24 PC1 192.168.0.2/24 192.168.0.1 PC2 192.168.2.2/24 192.168.2.1 配置RTA: [STA-GigabitEthernet0/0]ip address 192.168.0.1 24 [RTA-Seria16/0]ip address 192.168.1.1 24 配置RTB: [STB-GigabitEthernet0/0]ip address 192.168.2.1 24 [RTB-Seria16/0]ip address 192.168.1.2 24 配置完成后,再次查看路由表。例如,在RTA上查看路由表。如下: [RTA]display ip routing-table 由以上输出可知,配置了IP地址,192.168.0.1和192.168.1.1后,路由表中有了直连路由192.168.0.0/24,192.168.0.1/32,192.168.1.0/24,192.168.1.1/32,192.168.1.2/32。这其中,192.168.0.1/32,192.168.1.1/32,192.168.1.2/32是主机路由,192.168.0.0/24,192.168.1.0/24是子网路由。直连路由是由链路层协议发现的路由,链路层协议UP后,路由器会将其加入路由表中。如果我们关闭链路层协议,则相关直连路由也消失。 在RTA上关闭接口,如下: [RTA-GigabitEthernet0/0]shutdown 查看路由表,如下: [RTA]display ip routing-table 可知,在接口shutdown后,所运行的链路层协议关闭,直连路由也就自然消失了。 再开启接口,如下: [RTA-GigabitEthernet0/0]undo shutdown 等到链路层协议up后,再次查看路由表,可以发现接口GigabitEthernet0/0的直连路由又出现了。

IP及IPSEC协议数据包的捕获与分析

IP及IPSEC协议数据包的捕获与分析

IP及IPSEC协议数据包的捕获与分析 为了掌握掌握IP和IPSEC协议的工作原理及数据传输格式,熟悉网络层的协议。我进行了以下实验:首先用两台PC互ping并查看其IP报文,之后在两台PC上设置IPSEC互ping并查看其报文。最终分析两者的报文了解协议及工作原理。 一、用两台PC组建对等网: 将PC1与PC2连接并分别配置10.176.5.119和10.176.5.120的地址。如图1-1所示。 图1-1 二、两PC互ping: IP数据报结构如图1-2所示。 图1-2 我所抓获的报文如图1-3,图1-4所示:

图1-3 请求包 图1-4 回应包 分析抓获的IP报文: (1)版本:IPV4 (2)首部长度:20字节 (3)服务:当前无不同服务代码,传输忽略CE位,当前网络不拥塞

(4)报文总长度:60字节 (5)标识该字段标记当前分片为第1367分片 (6)三段标志分别指明该报文无保留、可以分段,当前报文为最后一段 (7)片偏移:指当前分片在原数据报(分片前的数据报)中相对于用户数据字段 的偏移量,即在原数据报中的相对位置。 (8)生存时间:表明当前报文还能生存64 (9)上层协议:1代表ICMP (10)首部校验和:用于检验IP报文头部在传播的过程中是否出错 (11)报文发送方IP:10.176.5.120 (12)报文接收方IP:10.176.5.119 (13)之后为所携带的ICMP协议的信息:类型0指本报文为回复应答,数据部分 则指出该报文携带了32字节的数据信息,通过抓获可看到内容为:abcdefghijklmnopqrstuvwabcdefghi 三、IPSec协议配置: 1、新建一个本地安全策略。如图1-5。 图1-5 2、添加IP安全规则。如图1-6.

IP数据包格式简介

IP 数据包格式 IP 数据包是网络传输的信封,它说明了数据发送的源地址和目的地址,以及数据传输状态。一个完整的数据包由首部和数据两部分组成。首部前20字节属于固定长度,是所有IP 数据包必须有的,后面是可选字段,其长度可变,首部后面是数据包携带的数据,见图5.3.1。 48 16 19 31 版本号 标志 生存时间 协 议标 识 服务类型数据包总长度 段偏移首 部 检 验 和 源地址目 的地址可 选字段+ 填 充位首部长度 数 据部 分 数 据 首部首部 IP 数据包 发送 图5.3.1 IP 数据包格式 1. 版本号(4bit ) 版本号占4位,是IP 协议所使用的版本号,目前是广泛使用的是第四版本,即IPv4。 2. 首部长度(4bit ) 首部长度用于指出IP 包头长度,用于标识数据包头在何处结束,所携带的数据在何处开始。首部长度占四位,数值范围5~15,以4字节为单位,则IP 首部长度为20字节~60字节。如假设首部长度取值“1010”,转换为十进制为“10”,表示IP 包头长度为10×4=40字节,数据从第41字节开始。 3. 服务类型(8bit ) 服务类型用于获得更好服务,大多数情况下并不使用。当网络流量较大时,路由器会根据不同数据包服务类型取值决定哪些先发送,哪些后发送,见图5.3.2。 D 优先级T R C 未用 0 1 2 3 4 5 6 7 图5.3.2 服务类型格式 (1)前3个bit 表示优先级,取值范围0~7共8个优先级,数值越低优先级越高。 (2)后四位是服务类型子字段,用于标识QOS 质量服务。 D :表示要求更低时延 T :表示要求更多吞吐量 R :表示要求更多可靠性 C :表示要求更小路径开销 注:DTRC 默认4位值都为0,表示一般服务;

IP及IPSEC协议数据包的捕获与分析

IP及IPSEC协议数据包的捕获与分析 为了掌握掌握IP和IPSEC协议的工作原理及数据传输格式,熟悉网络层的协议。我进行了以下实验:首先用两台PC互ping并查看其IP报文,之后在两台PC上设置IPSEC互ping并查看其报文。最终分析两者的报文了解协议及工作原理。 一、用两台PC组建对等网: 将PC1与PC2连接并分别配置10.176.5.119和10.176.5.120的地址。如图1-1所示。 图1-1 二、两PC互ping: IP数据报结构如图1-2所示。 图1-2 我所抓获的报文如图1-3,图1-4所示:

图1-3 请求包 图1-4 回应包 分析抓获的IP报文: (1)版本:IPV4 (2)首部长度:20字节 (3)服务:当前无不同服务代码,传输忽略CE位,当前网络不拥塞

(4)报文总长度:60字节 (5)标识该字段标记当前分片为第1367分片 (6)三段标志分别指明该报文无保留、可以分段,当前报文为最后一段 (7)片偏移:指当前分片在原数据报(分片前的数据报)中相对于用户数据字段 的偏移量,即在原数据报中的相对位置。 (8)生存时间:表明当前报文还能生存64 (9)上层协议:1代表ICMP (10)首部校验和:用于检验IP报文头部在传播的过程中是否出错 (11)报文发送方IP:10.176.5.120 (12)报文接收方IP:10.176.5.119 (13)之后为所携带的ICMP协议的信息:类型0指本报文为回复应答,数据部分 则指出该报文携带了32字节的数据信息,通过抓获可看到内容为:abcdefghijklmnopqrstuvwabcdefghi 三、IPSec协议配置: 1、新建一个本地安全策略。如图1-5。 图1-5 2、添加IP安全规则。如图1-6.

IP 数据报捕获与分析实验报告

实验报告 专业班级成绩评定______ 学号姓名教师签名______ 实验题目IP 数据报捕获与分析实验时间 一、实验目的: 1.掌握IP数据报格式。 2.理解IP协议的工作原理及工作过程。 3.掌握使用wireshark捕获IP等数据报并分析。 二、实验环境:以太网。 三、实验内容: 1.熟悉WinPcap的体系构架和提供的函数。 2.学习IP数据报校验和计算方法。 3.掌握使用wireshark捕获IP等数据报。 4.对捕获的IP数据报进行分析。 四、实验步骤: 1.在PING之前先运行wireshark熟悉页面并进行一些设置

a.单击Capture Filter过滤器:可以设置捕捉一些特殊规则 的数据报。 b.在选中Capture packets in promiscuous mode:可以设置 为混合全处理模式。 c.可以点击Start开始捕捉。过一段时间后,点击Stop停止, 观察捕捉到的数据报,并进行分析。 2.使用wireshark捕获和分析IP数据包。 a.打开wireshar并开始捕获数据包。 b.然后在系统的“开始”—“运行”—输入“CMD”命令,进 入DOS命令窗口,并输入“ping”命令测试网络的情况. c.如“ping 192.168.0.1”。 Ping 命令的使用

d.再回到wireshar点击停止后查看捕获到的数据,双击打开 “ping”后的数据包,分析数据包的内容。 分片的数据包 (以下图片全部通过wireshark捕获数据包,然后用QQ中的截图功能截取) IP协议节点

IP协议节点 上面节点说明如下: 3.进制数据包窗口 16进制数据包窗口将数据包的所有内容以16进制的形式显示出来,如下所示:

数据包捕获与解析

数据包捕获与解析课程设计报告 学生姓名:董耀杰 学号:1030430330 指导教师:江珊珊

数据包捕获与分析 摘要本课程设计通过Ethereal捕捉实时网络数据包,并根据网络协议分析流程对数据包在TCP/IP各层协议中进行实际解包分析,让网络研究人员对数据包的认识上升到一个感性的层面,为网络协议分析提供技术手段。最后根据Ethereal的工作原理,用Visual C++编写一个简单的数据包捕获与分析软件。 关键词协议分析;Ethereal;数据包;Visual C++ 1引言 本课程设计通过技术手段捕获数据包并加以分析,追踪数据包在TCP/IP各层的封装过程,对于网络协议的研究具有重要的意义。Ethereal是当前较为流行的图形用户接口的抓包软件,是一个可以用来监视所有在网络上被传送的包,并分析其内容的程序。它通常被用来检查网络工作情况,或是用来发现网络程序的bugs。通过ethereal对TCP、UDP、SMTP、telnet和FTP等常用协议进行分析,非常有助于网络故障修复、分析以及软件和协议开发。,它以开源、免费、操作界面友好等优点广为世界各地网络研究人员使用为网络协议分析搭建了一个良好的研究平台。 1.1课程设计的内容 (1)掌握数据包捕获和数据包分析的相关知识; (2)掌握Ethreal软件的安装、启动,并熟悉用它进行局域网数据捕获和分析的功能; (3)设计一个简单的数据包捕获与分析软件。 1.2课程设计的要求 (1)按要求编写课程设计报告书,能正确阐述设计结果。 (2)通过课程设计培养学生严谨的科学态度,认真的工作作风和团队协作精神。 (3)学会文献检索的基本方法和综合运用文献的能力。 (4)在老师的指导下,要求每个学生独立完成课程设计的全部内容。

实验报告四:IP路由基础

实验四:IP路由基础 1.实验目的 ●掌握路由转发的基本原理 ●掌握静态路由、缺省路由的配置方法 ●掌握查看路由表的基本命令 实验设备 华为路由器AR2240两台、PC机两台、网线三根。 2.实验原理 静态路由靠管理员亲自手动配置,动态路由用在大型的网络。 几百台甚至上千台路由器。 静态路由对路由器的路由选择进行控制,节省了网络带宽,减少了额外开支。 静态路由允许指定受限制部分的广播内容,可出于安全而隐藏网络的一部分。 动态路由的路由器间发送定时的路由更新信息,根据新信息计算新的最佳路由。

3.实验拓扑 图1 静态路由配置实验图 4.实验步骤 实验任务一:查看路由表 本实验主要是通过在路由器上通过查看路由表,观察路由表中的路由项。通过本次实验,能够掌握如何使用命令来查看路由表,及了解路由项中的含义。 步骤一:建立物理连接 按照图1完成设备之间的物理连接,并检查设备的软件版本和配置信息,确保各设备软件版本复合要求,所有配置为初始状态。如果配置不符合要求,在用户模式下擦除设备中的配置文件,然后重启设备以使系统采用缺省的配置参数进行初始化。配置命令如下:display version //显示设备版本信息 reset saved-configuration //复位交换机内存,恢复出厂设置 reboot //重启设备 步骤二:在路由器上查看路由表 首先,在路由器上查看路由表如下所示: [RTA]display ip routing-table //查看路由表信息 Routing Table:Public Destinations :2 Routes:2

ip数据包解析实验报告摘要doc

ip数据包解析实验报告摘要篇一:解析IP数据包实验报告 成都工业学院 (课程设计实验报告) 院系: 计算机工程系 课程名称: 计算机网络 设计名称: 解析IP数据包 专业名称: 网络工程 班级: 1305022 姓名: 牟黎明 学号: 11 指导老师:刘枝盛老师 成绩: 设计时间:XX年12月22日—XX年12月26日成都工业学院课程设计任务书 指导教师(签名): 目录

一、课程设计的目的和意义...............................................3 二、课程设计的内容和要求..............................................3 三、解析IP数据包设计的相关技术 (4) ? 3.1 IP数据包的格式与分析 ? 3.2 程序分析设计......................................................4 .. (6) (6) (6) (7) (7) ……………………….…………..…………….7 ? 3.2.1 网卡设置? 3.2.2 程序设计? 3.2.3 程序设计? 3.2.4 程序设计? 3.2.5 程序设计 四、课程设计过程 (8) ? 4.1 程序流程图

? 4.2源程序代码 (8) (16) ……………….……………..............……………….9 ? 4.3 程序运行结果 ? 4.3.1.登陆界面,提示输入命令符 (16) ? 4.3.2.命令符输入错误后提示界面 (16) ? 4.3.3.截获的IP数据包界面 (17) ? 4.3.4.继续抓包图 (17) 五、课程设计小结 (18) 参考文献 (18) 一、课程设计的目的和意义

IPv6基本原理

一、IPv6地址 1.格式简介 IPv6地址大小为128位。首选的IPv6地址表示为: xxxx:xxxx:xxxx:xxxx:xxxx:xxxx:xxxx:xxxx,其中每个x是代表一个4位的十六进制数字。IPv6地址范围从0000:0000:0000:0000:0000:0000:0000:0000至ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff。即使在转换成十六进制格式,IPv6地址仍然漫长。IPv6提供了一些规则来缩短地址。这些规则是:规则1:丢弃前导零(ES): 比如2001:0000:3238:DFE1:0063:0000:0000:FEFB地址中,第五部分的数值0063前面的两个零可以省略,即: 2001:0000:3238:DFE1:63:0000:0000:FEFB 规则2:如果两个以上的块包含连续的零,忽略所有这些,并用双冒号::替换: 上述地址中第六部分和第七部分为全零,因此可以简写,即: 2001:0000:3238:DFE1:63::FEFB 注意:为了确保地址表达的唯一性,一个IPv6地址中只允许出现一个“::”,其他位置如出现全零,可以简写为一个零,即: 2001:0:3238:DFE1:63::FEFB 2.格式分类 1)全球单播地址 这种地址类型是等同于IPv4公网地址。在IPv6全球单播地址是全球识别和独特的寻址。 2)本地链路地址 自动配置的IPv6地址被称为链路本地地址。这个地址总是以FE80开头。链路本地地址的前16位总是被设置为1111111010000000(FE80),接下来的48位都设置为0。链路本地地址用于在链路(广播业务)只有IPv6主机之间的通信。本地链路地址用于同一个链路中的不同主机之间,主机可以在不通过DHCP的情况下自动获取到本地链路地址,与同一链路内的其他主机进行通信。 二、IP报文格式 IPv6包扩展包头中的分段包头中指明了IPv6包的分段情况。其中不可分段部分包括:IPv6包头、Hop-by-Hop选项包头、目的地选项包头(适用于中转路由器)和路由包头;可分段部分包括:认证包头、ESP协议包头、目的地选项包头(适用于最终目的地)和上层协议数据单元。但是需要注意的是,在IPv6中,只有源节点才能对负载进行分段,并且IPv6超大包不能使用

ip报头格式

版本——标识了IP协议的版本,通常这个字段的值为0010,常用的版本号为4,新的版本号为6,现在IPv6还没有普遍使用,但是中国已经为奥运会建立了一个ipv6的网络。IPv6又被称为IPng(IP Next Generation) 报头长度——这个字段的长度为4,它表明了IP报头的长度,设计这个字段的原因是报文的选择项字段会发生改变,IP报头的最小长度为20个8bit,最大为24个8bit。报文字段描述了以32比特为单位程度的报头长度,其中5表示IP 报头的最小长度为160比特,6表示最大。 服务类型——字段长度为8位,它用来表示特殊报文的处理方式。服务类型字段实际上被划分为2个部分,一部分为优先权一部分为TOS。优先权用来设定报文的优先级,就像邮包分为挂号和平信一样。TOS允许按照吞吐量、时延、可靠性和费用方式选择传输服务,在早期的时候,TOS还被用来进行路由选择。在QOS 中有时也会使用优先权,常见的优先权队列。

总长度——字段长度为16位,通常预标记字段和分片偏移字段一起用于IP报文的分段。如果报文总长度大于数据链路可传输的最大传输单元(MTU),那么就会对报文进行分片。 标记字段——长度位3位,其中第一位没有被使用第二位是不分片位,当DF 位被置1,表示路由器不能对数据报文进行分片处理,如果报文由于不能被分片而不能被转发,那么路由器将丢弃这个数据包,并向源地址发送错误报告。这一功能可以用来测试线路的最大传输单元。第三位MF,当路由器对数据进行分片时,除了最后一个分片的MF位为0外,其他所有的MF为全部为1,表示其后面还有其他的分片。 分片偏移――字段长度为13位,以8个bit为单位,用于指明分片起始点相对于报头的起始点的偏移量,由于分片到达时间可能错序,所以分片偏移字段可以使得接受者按照顺序重新组织报文。 生存时间——字段长度为8位,在最初创建报文时,TTL就被设定为某个特定值,当报文沿路由器传送时,每经过一个路由器TTL的值就会减小1,当TTL为零的时候,就会丢弃这个报文,同时向源地址发送错误报告,促使重新发送。协议――字段长度为8位,它给出了主机到主机或者传输层的地址或者协议号,协议字段中指定了报文中信息的类型,当前已分配了100多个不同的协议号。 校验和――时针对IP报头的纠错字段,校验和的计算不能用被封装的数据内容,UDP/TCP/和ICMP都有各自的校验和,此字段包含一个16位的二进制补码和,这是由报文发送者计算得到的,接收者将联通院士校验和从新进行16位补码和计算,如果在传输中没有发生错误,那么16位补码值全部为1,由于路由器都会降低TTL值,所以路由器都会重新计算校验和。 源地址――字段长度为32位,分别表示发送报文的路由器的源地址。 目的地址――标识接收数据报文的路由器的地址。

IP数据包的捕获与分析文献综述

毕业设计(论文)文献综述 还有同名论文、任务书、和其他文件题目: IP数据包的捕获与分析 姓名: 学号: 系别: 专业: 年级: 指导教师:(签名) 年月日

一、研究背景 随着社会的飞速发展,科技的日新月异,互联网已经渗透到世界的各行各业和人民生活的各个方面,全社会对网络的依赖程度只增不减,整个世界通过网络正快速的融为一体,网络时代已经来临。但由于网络具有开放性,互联性,多样性,不均匀性等诸多特征,以至于网络中存在许多风险,例如黑客攻击,恶意软件等。这些风险的存在,严重的危险到网络上信息的完整性、保密性、真实性、可靠性。所以网络安全问题已越发受到人们的关注,而想要解决这些问题涉及的内容既有技术方面的问题,也有管理方面的问题,两方面相互补充,缺一不可。技术方面主要侧重于防范外部非法用户的攻击,管理方面则侧重于内部人为因素的管理。如何更有效地保护重要的信息数据、提高计算机网络系统的安全性已经成为所有计算机网络应用必须考虑和必须解决的一个重要问题。 可以这样来定义网络数据安全:所谓网络数据安全,指的是网络系统的硬件、软件和数据信息能够受到保护,不会因为偶然或恶意的原因而遭到破坏、更改、泄露,同时系统能够连续、可靠地运行,网络服务不被中断。但在现实中,绝对安全的网络是没有的。 目前,我正处在高速的现代化建设阶段,政府部门、军队、企业、学校等都需要建立自己的网络和信息系统并实施保护,尤其是有关的重要部门更需要需要网络的安全保障。所以建立网络安全系统对我们具有重大的意义,而有效的实时监控和捕获可疑的网络信息就是建立网络安全系统的基础。 二、研究意义 随着个人计算机和互联网的普及,使我们从一个封闭的环境进入到一个开放的世界,越来越多的人开始使用网络这个媒介来发送,接收信息,计算机网络给人们生产和生活带来了巨大的便利。但是由于网络是一个面向大众的开放系统,它的这种特性决定了其对数据信息的保密和系统的安全性考虑并并不完备,存在着诸多的安全隐患。因此让有些个人或团体有机可乘,利用这些隐患和漏洞,通过网络来发送一些包含色情,反动等不良内容的信息,或通过网络入侵他人主机盗取信息和机密,达到破坏正常社会秩序的目的,以至于计算机网络的安全形势日趋严峻。因此,现在在计算机网络安全隐患中扮演重要角色之一的网络数据抓包软件受到越来越大的关注。 构建安全网络环境,除了通过主动的人为思想的预防以外,一套被动的网络安全检测机制也是必不可少的,通过运用标准的机制对网络中传输的各类型进行实时监控,对具有威胁性的信息进行甄别警报,这套机制的前提就是首先对网络中传输的信息进行捕获,对获取的信息解析筛查。而想要捕获这些信息,就要知道网络中的信息是以数据包的形式进行传输,想要获取信息,就必须对网络中的数据包进行捕获和分析,才能获得所需要的相应信息。所以对网络上传送的数据包进行有效的捕获与解析是目前网络监控的关键技术,

ip数据包的捕获与解析代码

// PackCaptureDlg.h:header file #define IPV4_WERSION 4 #define IPV6_WERSION 6 #define ICMP_PACKET 1 #define IGMP_PACKET 2 #define TCP_PACKET 6 #define EGP_PACKET 8 #define UDP_packet 17 #define OSPF_PACKET 89 class CPackCaptureDlg:public CDialog { public: //{{AFX_DATA(CFindHostDlg) enum {IDO=IDO_PACKCAPTURE_DIALOG}; int m_Count; CString m_Packet; //}}AFX_DATA protected: //{{AFX_MSG(CFindHostDlg) afx_msg void OnCapture(); //}}AFX_MSG private: typedef struct IP_HEAD //IP头部结构 { union { unsigned char Version; //版本(字节前四位) unsigned char HeadLen; //头部长度(字节后四位) }; unsigned char ServiceType; //服务类型 unsigned short TotalLen; //总长度 unsigned short Identifier; //标识符 union { unsigned short Flags; //标志位(字前三位) unsigned short FragOffset;

IP数据报格式

IP数据报格式: TCP/IP协议定义了一个在因特网上传输的包, 称为IP数据报(IP Datagram)。这是一个与硬件无关的虚拟包, 由首部和数据两部分组成。首部的前一部分是固定长度,共20 字节, 是所有IP数据报必须具有的。在首部的固定部分的后面是一些可选字段,其长度是可变的。首都中的源地址和目的地址都是IP 协议地址。 那么IP数据报格式又是怎样要求的呢? 1. IP数据报首部的固定部分中的各字段 ①版本:占4位,指IP协议的版本。通信双方使用的 IP协议版本必须一致。日前广泛使用的IP协议版本号为4 (即IPv4)。IPv6 目前还处于起步阶段。 ②首部长度:占4 位,可表示的最大十进制数值是15。请注意, 这个字段所表示数的单位是32位字( 1 个32位字长是4 字节), 因此,当IP 的首部长度为1111 时(即十进制的15), 首部长度就达到60字节。当IP 分组的首部长度不是4字节的整数倍时,必须利用最后的填充字段加以填充。 因此数据部分永远在4字节的整数倍开始, 这样在实现IP协议时较为方便。 首部长度限制为60字节的缺点是有时可能不够用。 这样做的目的是希望用户尽量减少开销。 最常用的首部长度就是20 字节(即首部长度为0101), 这时不使用任何选项。 ③服务:占8 位,用来获得更好的服务。 这个字段在旧标准中叫做服务类型,但实际上一直没有被使用过。 1998年IETF把这个字段改名为区分服务DS (DifferentiatedServices)。 只有在使用区分服务时,这个字段才起作用。

④总长度:总长度指首都及数据之和的长度,单位为字节。 因为总长度字段为16位,所以数据报的最大长度为216-1=65 535字节。在IP层下面的每一种数据链路层都有自己的帧格式,其中包括帧格式中的数据字段的最大长度,即最大传送单元MTU (Maximum Transfer Unit)。当一个数据报封装成链路层的帧时,此数据报的总长度(即首部加上数据部分)一定不能超过下面的数据链路层的MTU值。 ⑤标识(Identification):占16位。 IP软件在存储器中维持一个计数器,每产生一个数据报, 计数器就加1,并将此值赋给标识字段。但这个“标识”并不是序号, 因为IP是无连接的服务,数据报不存在按序接收的问题。 当数据报由于长度超过网络的MTU 而必须分片时, 这个标识字段的值就被复制到所有的数据报的标识字段中。 相同的标识字段的值使分片后的各数据报片最后能正确地重装成为 原来的数据报。 ⑥标志(Flag):占3 位,但目前只有2位有意义。 标志字段中的最低位记为MF (More Fragment)。 MF=1即表示后面“还有分片”的数据报。MF=0表示这已是若干数据报片 中的最后一个。 标志字段中间的一位记为DF(Don't Fragment), 意思是“不能分片”。只有当DF=0时才允许分片。 ⑦片偏移:占13位。较长的分组在分片后, 某片在原分组中的相对位置。也就是说,相对用户数据字段的起点, 该片从何处开始。片偏移以8个字节为偏移单位。 这就是说,每个分片的长度一定是8字节(64位)的整数倍。 ⑧生存时间:占8位,生存时间字段常用的英文缩写是 TTL (Time To Live),其表明数据报在网络中的寿命。 由发出数据报的源点设置这个字段。 其目的是防止无法交付的数据报无限制地在因特网中兜围子, 因而白白消耗网络资源。最初的设计是以秒作为TTL的单位。 每经过一个路由器时,就把TTL减去数据报在路由器消耗掉的一段时间。 若数据报在路由器消耗的时间小于 1 秒,就把TTL值减1。 当TTL值为0时,就丢弃这个数据报。 ⑨协议:占8 位,协议字段指出此数据报携带的数据是使用何种协议,以便使目的主机的IP层知道应将数据部分上交给哪个处理过程。 ⑩首部检验和:占16位。这个字段只检验数据报的首部, 但不包括数据部分。这是因为数据报每经过一个路由器,都要重新计算一下首都检验和(一些字段,如生存时间、标志、片偏移等都可能发生变化)。不检验数据部分可减少计算的工作量。 ⑾源地址:占32位。 ⑿目的地址:占32位。 2. IP数据报首部的可变部分 IP首都的可变部分就是一个可选字段。选项字段用来支持排错、测量以及安全等措施,内容很丰富。此字段的长度可变,从1 个字节到40个字节不等,取决于所选择的项目。某些选项只需要1 个字节,它只包括1 个字节的选项代码。但还有些选项需要多个字节,这些选项一个个拼接起来,中间不需要有分隔符,最后用全0 的填充字段补齐成为4字节的

任务三计算机网络实验IP数据报捕获与分析

任务三计算机网络实验I P数据报捕获与 分析

任务三网络编程 一、实验目的 捕获本机网卡的IP包,对捕获的IP包进行解析。要求必须输出以下字段:版本号、总长度、标志位、片偏移、协议、源地址和目的地址。 二、实验环境 平台:Windows 编程环境:VC 6.0 语言:C++ 三、实验原理 3.1 数据报格式 以太帧由一个包含三个字段的帧头开始,前两个字段包含了物理地址,各六个字节,头部的第三个字段包含了 16 位的以太帧类型,帧头后面是数据区。根据帧类型可以判断是哪种数据包,一般常用的有 0X0080(IP 数据包)、0X0806(ARP 请求/应答)和 0X8035(RARP 请求/应答)三种类型。TCP/IP 协议簇中位于网络层的协议,也是最为核心的协议。所有的 TCP, UDP, ICMP 及 IGMP 数据都以 IP 数据报格式传输。IP 协议提供了无连接的、不可靠的数据传输服务。同时IP 协议的一个重要功能是为网络上的包传递提供路由支持。TCP/IP 协议使用 IP 数据报这个名字来指代一个互联网数据包。IP 数据报由两部分组成,前面的头部和后面的数据区,头部含有描述该数据报的信息,包括源 IP 地址和目的 IP 地址等。在 IP 数据报的报头中的众多信息可根据协议类型字段区分出该数据包的类型,常用的有TCP 包、 UDP 包、 ICMP 包等,各格式分别如下所示:

IP数据报格式 TCP数据报格式 ICMP数据报格式

UDP数据报格式 3.2 捕获数据包方法 目前常用的捕获数据包的方法有原始套接字、LibPcap、WinPcap和JPcap 等方法。本次实验选用套接字方法。套接字是网络应用编程接口。应用程序可以使用它进行网络通信而不需要知道底层发生的细节。有时需要自己生成一些定制的数据包或者功能并希望绕开Socket提供的功能,原始套接字(RawSocket)满足了这样的要求。原始套接字能够生成自己的数据报文,包括报头和数据报本身的内容。通过原始套接字,可以更加自如地控制Windows下的多种协议,而且能够对网络底层的传输机制进行控制。 网络数据包截获机制一般指通过截获整个网络的所有信息流,根据信息源主机,目标主机,服务协议端口等信息,简单过滤掉不关心的数据,再将用户感兴趣的数据发送给更高层的应用程序进行分析。一般数据包的传输路径依次为网卡、设备驱动层、数据链路层、 IP 层、传输层、最后到达应用程序。IP 数据包的捕获就是将经过数据链路层的以太网帧拷贝出一个备份,传送给 IP 数据包捕获程序进行相关的处理。 IP 数据包的捕获程序一般由数据包捕获函数库和数据包分析器组成。数据包捕获函数库是一个独立于操作系统的标准捕获函数库。主要提供一组可用于查找网络接口名称、打开选定的网络接口、初始化、设置包过滤条件、编译过滤代码、捕获数据包等功能函数。对捕获程序而言,只需要调用数据包捕获函数库的这些函数就能获得所期望的 IP 数据包。这种捕获程序与数据包捕获函数库分离的机制,使得编写的程序具有很好的可移植性。IP 数据包捕获程序的核心部分就是数据包分析器。数据包分析器应具有识别和理解各种协议格式

相关文档
相关文档 最新文档