抓包数据包被服务器丢弃如何处理
① 怎么看抓到的数据包有没有被丢弃
你可以先将你抓到的包保存到文件
主要代码:
/* 回调函数,用来处理数据包 */
void packet_handler(u_char *mpfile, const struct pcap_pkthdr *header, const u_char *pkt_data)
{
/* 保存数据包到堆文件 */
pcap_mp(mpfile, header, pkt_data);
}
然后用wireshark 这款软件,打开文件你保存抓包信息的文件,查看你抓到的包
Wireshark(前称Ethereal)是一个网络封包分析软件。
② 使用pcap库写的抓包程序 抓到数据包之后进行修改在发送给服务器
一般来说,网卡是收不到自己发送出去的数据包的一份拷贝的。
建议楼主研读《TCP IP详解卷一:协议》《TCP IP详解卷二:实现》。
建议使用wireshark这种比较权威的抓包软件抓包并且解析一下你发送和接收的包的每个字节是否如你所愿。
用 pcap_sendpacket 发送的包是应该要包含原始的以太网头部的吧,你的包貌似只有 IP 头,没有以太网的头部哦。
③ 抓包工具抓包,怎么只抓被成功提交到tcp层的数据不抓在低层就被丢弃的数据包
能。。。。。。。。。。。。。。。。。。。。。。。。
④ 使用wireshark抓包,包中含有PPP协议,应该怎么网络中的问题
PPP协议(Point-to-Point Protocol)提供了在串行点对点链路上传输数据报的方法,支持异步8位数据及位导向的同步连接(如ISDN)。它提供了一种管理两点间会话的有效方法,正在取代SLIP(Serial Line Interface Protocol)协议成为点对点网络的标准。 嵌入式单片机PPP协议是在单片机中嵌入PPP协议,以实现单片机与计算机之间的PPP数据传输,使它既可以作为PPP连接的客户端,也可以作为独立的PPP服务器端来使用。它在家电控制和小型数据传输系统中具有非常广阔的应用前景,并且具有成本低、传输稳定等特点,是当前单片机研究的热门话题之一。 1 PPP的工作原理 PPP采用高级数据链路控制(HDLC)协议作为在对点链路上分装数据报的基本方法。使用可扩展的链路控制协议(LCP)来建立、配置和测试数据链路。用网络控制协议簇(NCP)来建立和配置不同的网络层协议,PPP允许同时采用多种网络层协议。 为了建立点对点链路上的通信连接,发送端PPP首先发送LCP帧,以配置和测试数据链路。在LCP建立好数据链路并协调好所选设备后,发送端PPP发送NCP帧,以选择和配置一个或多个网络层协议。当所选的网络层协议配置好后,便可以将各网络层协议的数据包发送到数据链路上。配置好的链路将一直处于通信状态,直到LCP帧或NCP帧明确提示关闭链路,或有其它的外部事件发生。PPP连接状态图如图1所示。 1.1 连接死亡阶段 一个连接的开始和结束都要经历这个阶段。当一个外部事件指示物理层已准备好并可使用时,PPP进入建立连接阶段。此时,LCP自动机处于初始阶段。当它向链路建立阶段转换时将给LCP自动机发送一个UP事件信号。 1.2 连接建立阶段 LCP用于交换配置信息包、建立连接。一旦一个配置成功的信息包发送且被接收,就完成了交换,进入LCP开启状态。所有的配置选项都假定使用默认值,除非在配置交换过程中被改变。只有那些与特定的网络层协议无关的选项才会被LCP配置。收到LCP配置数据包将使链路从网络层协议阶段或者认证阶段返回到链路建立阶段。 1.3 认证阶段 在某些连接情况下,希望在允许网络层协议交换数据前对等实行认证。默认情况下,是不要求认证的。认证要求必须在建立连接阶段提出,然后进入认证阶段。如果认证失败,将进入连接终止阶段。在此阶段只对连接协议、认证协议、连接质量测试数据包进行处理。1.4 网络层协议阶段 一旦PPP完成上述阶段,便进入网络协议阶段。每一个网络层协议 (例如IP、IPX、AppleTalk等)必须有相应的网络控制协议(NCP)单独配置,每个网络控制协议都可以随时打开或关闭。此阶段,LCP协议自动状态机处于打开状态,接收到的任何不支持的协议数据包都会被返回一个协议拒绝包,而接收到的所有支持的数据包都将被丢弃。此时,链路上流通的是LCP数据包、NCP数据包以及网络协议数据包。 1.5 终止连接阶段 PPP连接可以随时被终止。LCP通过交换连接终止包来终止连接。当连接被终止时,PPP会通知物理层采取相应的动作。只有当物理层断开,连接才会真正被终止。此阶段,接收到的所有非LCP数据包都将被丢弃。 2 PPP数据结构 PPP数据帧的结构如表1所示,PPP协议标志如表2所示。每个PPP数据包的开始和结束都有一个0x7E的数据标志。在开始标志后,紧跟2个HDLC常量:地址常量0xFF和控制常量0x03。协议域长度通常为2字节,表示信息域里包含的是哪种协议以及它的处理信息。随后是代码(Code)、标识符(ID)和长度域(Length)。事实上它们都是信息域(Payload)的一部分。信息域长度最多为1500字节。代码部分用来指示LCP、PAP、IPCP或者CHAP协议数据包中的某种类型。通常情况下,用来表示IP自寻址信息数据包的标识是0x45。ID对于每一帧来说都是唯一的,所有协议间的商谈和响应都通过ID联系在一起。只有当PPP协议帧被压缩成IP寻址信息包时例外。这个时候ID表示的是一种服务类型。有效载荷部分是可变的,并能随着请求和响应的变化作相应的改变。在IP自寻址情况下,IP数据包的大小与PPP协议帧的大小是兼容的,有效载荷包含有关协议的商谈和数据包的保持。然后是一个长度为2字节循环冗余检验码,以检测数据帧中的错误。由于标志字符的值是0x7E,因此当该字符出现在信息字段中时, PPP需要对它进行转义。具体实现过程如下:(1)当遇到字符0x7E时,需连续传送2个字符:0x7D和0x5E,以实现标志字符的转义。 (2)当遇到转义字符0x7D时,需连续传送2个字符:0x7D和0x5D,以实现转义字符的转义。 (3)默认情况下,如果字符的值小于0x20(例如ASCII控制字符),一般都要进行转义。例如,遇到字符0x01时需连续传送0x7D和0x21两个字符(这时,第6个比特取补码后变为1,而前面两种情况均把它变为0)。这样做是防止它们出现在双方主机的串行接口驱动程序或调制解调器中,因为它们有时会把这些控制字符解释成特殊的含义。另一种可能是用链路控制协议来指定是否需要对这32个字符中的某些值进行转义。默认情况下是对所有的32个字符都进行转义。 关于PPP协议的详尽描述可以参阅RFC1661文档。 3 单片机PPP协议 单片机PPP协议是PPP协议在单片机中的应用,有其特点。单片机的存储空间只有64KB,而PPP协议包括LCP、PAP、IPCP以及NCP等协议,并且在连接建立后还要用到数据传输协议(TCP/IP、UDP等)、各种压缩协议等。要把这些协议完全嵌入单片机是不可能的,所以只能根据实际需要选择其中的一部分。 例如采用UDP协议而不是功能相对齐全但协议内容过于庞大的TCP/IP协议来传输数据,传输中基本上不使用数据压缩协议,跳过单片机作为服务器端时的密码验证过程,省略IPX、AppleTalk等网络层协议等。也就是说,本文的单片机PPP协议,事实上只包含了从PPP连接的建立到实现简单的数据传输所必需的协议,而不包括PPP协议的所有功能。这种协议的取舍是由硬件的客观限制以及实际的应用需要共同决定的。 4 单片机PPP协议PPP连接的建立 建立后的单片机PPP连接状态如图2所示。 其中,C51系统是已经植入PPP协议的51系列单片机,电话线部分也可以是某个网络的一部分,甚至是Internet。 单片机PPP协议流程图如图3所示。 PPP连接的建立主要经过三个阶段,分别是LCP协商、密码认证以及网络层协议配置。 4.1 LCP处理阶段 首先,第一个LCP数据包被服务器端发送后,从服务器端返回一个PPP拒绝包给除密码认证外的所有选项,接着服务器端强制认证协议进行协商(先前来自否定帧的PAP和CHAP都被发送)。随后服务器端返回一个拒绝包给CHAP,本文用PAP来代替。然后服务器端认同并返回一个新的请求,这时候需要进行PAP。接下去对PAP进行确认,系统对字符映射的丢弃进行协商。最后所有控制特性被服务器端同意丢弃。 下面是由服务器发送的一段LCP建立连接的字符串: 0000:7E FF 03 C0 21 01 71 00 2B 01 04 06 40 05 06 3A 5D 8B B4 02 06 00 0016:00 00 00 11 04 06 40 17 04 00 64 00 02 03 04 C0 23 13 09 03 08 00 002C:03 0A 2C 2C 95 7F 7E 对它进行分析如表3。 4.2 PAP处理阶段 首先,系统发送PAP数据包给服务器端,然后服务器端通过用户ID和密码验证。PAP密码验证协议在RFC1334中有详细定义,主要是为拨号网络中提供密码保护。这个选项是可选的。在本应用软件中,强制单片机和PC协商的选项中,PC要求密码验证,单片机端不要求。所以如果PC机作为服务器,单片机需要发送用户名和密码;如果单片机作服务器,则没有密码验证的要求。 PAP的格式如图4所示。 下面是单片机发送PAP的数据包: 7E FF 03 C0 23 01 06 00 0C 03 7A 77 6D 03 7A 77 6D… 解析如表4所示。 单片机向PC机发送PAP数据包是在PC机发送对单片机LCP选项的确认之后、PC机向单片机发送IPCP请求之前。 4.3 IPCP处理阶段 IPCP是用来设置PPP连接中的网络环境,包括IP地址、IP压缩协议、DNS服务器地址等都是通过IPCP来协商的。首先服务器端发送请求进行IPCP协商,然后系统返回一个拒绝包给除IP地址外的所有操作。由于先前的发送被拒绝,服务器端发送一个回复,只包含IP地址。此时,系统相当于服务器端的IP地址认证,然后由请求信息和IP地址来完成三路握手协议。接着服务器端返回一个包含预先指派IP地址的拒绝包。此时连接建立并拥有一个指定的IP地址。IPCP帧的格式与LCP也是类似的:一字节的代码,然后是标志,长度,选项。当IP协议的选项配置完,就可以开始通讯了。IPCP的详细描述在RFC1332中。连接建立后,PPP将在原有协议的基础上调用网络协议UDP(User Datagram Protocol)和ICMP(Internet Control Messages Protocol)等。有关用户数据包协议UDP的详细资料可参看RFC882、RFC883文档;Internet信息控制协议ICMP的详细资料可参看文档RFC792。 参考文献 1 Erkins D. Requirements for an Internet Standard Point-to-Point Protocol RFC 1547.Carnegia Mellon University.December 1993. 2 Reynolds J, Postel J. Assigned Numbers STD 2,RFC 1340. USC/Information Sciences Institute,July 1992. 3 Douglas E. Comer. Internetworking With TCP/IP Vol I: Principles Protocol and Architecture (Third Edition) 4 W.Simpson.STD 51,RFC1661.Network Working Group.July 1994 5 Douglas E. Comer, David L. Stevens. Internetworking With TCP/IP Vol II:Design Implementation and Internals (Second Edition)
⑤ 数据一直掉包怎么办
许多时候,我们可能都会碰到网络连接时断时续的故障现象,面对这种网络故障,不少网络管理员都会使用Ping命令对网络连通性进行测试,测试结果表明此时的网络传输线路数据丢包现象非常严重,那么究竟是什么因素导致了数据丢包现象比较严重呢?是连接线路接触不稳定?是网络病毒?还是其他的潜在因素?
仔细对这类现象进行总结后,我们发现最容易造成数据丢包现象的因素就是网络环路,毕竟在规模稍微大一点的局域网环境中,网络管理员很容易把交换机之间的端口连接错误,从而引起网络环路现象,并且这种现象由于有比较强的隐蔽性,我们在排除这类故障的时候要是不留神的话很容易多走弯路!为了帮助各位高效解决数据丢包严重这类网络故障,笔者现在就将自己曾经遭遇到的一则网络环路故障排除过程贡献出来,希望大家能从中获取收益!
故障现象
笔者所在单位的局域网网络使用的拓扑结构是星型百兆以太网结构,局域网主机房中使用了一台Cisco品牌的三层路由交换机作为网络的核心交换机,单位五层大楼中的每个楼层都组建了子网段,每个网段中的所有工作站都使用D-Link品牌的普通交换机作为集线设备,并且各个楼层中的普通交换机通过双绞线缆直接接入主机房中的核心交换机,并通过核心交换机直接访问Internet网络。单位局域网中同时安装、配置了多台服务器,例如有保存单位重要数据信息的文件服务器,有对外提供Web访问服务的Web服务器,有提供重要资料下载的FTP服务器等。
平时单位各个子网段中的所有工作站都能正常访问Internet网络,每个子网段中的工作站之间也能互相访问。可是有一天,某一子网段中的用户通过手机向笔者反映情况说,他们所在的子网工作站访问Internet网络时,有时正常有时不正常,并且同一子网段中的工作站之间相互进行Ping测试时,发现数据丢包现象非常严重;原以为这种故障仅是极个别现象,可谁曾想到,没有多长时间,分布在多个网段中的许多用户接二连三地向笔者反映情况,并且描述的故障现象基本相同。
连续的故障求援让笔者再也坐不住了,笔者立即动身来到其中一个楼层,对该网段中的工作站进行上网测试,在上网过程中笔者发现网页打开速度有时非常缓慢,几分钟也打不开一个页面,有时速度很快,只要输入地址敲下回车键后,网页内容立即就显示出来了,并且这种现象反反复复。在确认网络故障的确存在后,笔者认为这种故障现象涉及多个网段,引起这种故障现象的原因很可能是交换机的连接端口出现了问题,于是笔者对交换机的连接端口进行了适当调整,并在调整之后及时进行了测试,可是局域网中的故障现象依然存在。
重新返回到故障工作站现场进行测试,笔者看到使用Ping命令可以Ping通局域网中的部分工作站和服务器,不过在Ping主机房中的核心交换机IP地址时,笔者发现存在明显的数据丢包现象,并且网络延迟时间也比较长。通过专业的网络管理工具对主机房中的核心交换机进行参数配置检查,笔者也没有发现明显的错误。
故障分析
虽然核心交换机的参数配置方面没有找到可疑的地方,但是笔者还是深信问题出在核心交换机身上,毕竟多个子网同时出现相同的故障现象决不是偶然的。在排除了核心交换机参数配置因素后,笔者开始将怀疑重点转移到该设备的物理因素上了;首先,笔者仔细观察了核心交换机控制面板中各个信号灯的工作状态,发现连接有双绞线的所有端口对应的信号灯状态都很正常。其次,笔者担心网络线缆没有紧密地插入到核心交换机的各个端口中,于是不厌其烦地将所有的网络线缆逐一拔下来,之后又将其重新插入到对应的交换机端口中,可是笔者的这番辛苦并没有得到任何回报,局域网中的数据丢包现象仍然十分严重,并且许多工作站还是不能正常访问Internet网络中的内容。
那会不会是核心交换机的缓存遇到错误,导致连接到该交换机设备中的所有子网工作站都不能正常访问网络内容呢?笔者脑海中总有这样一种意识,认为交换机运行时间一长之后,其系统缓存十分容易出现溢出或其他软件错误,这类错误常常会导致局域网网络产生莫名其妙的故障现象;依照这样的想法,笔者尝试着切断了核心交换机的电源,过了一段时间后,又重新接通该设备的电源,以便让其重新启动,等待核心交换机系统启动稳定之后,笔者再次尝试了在故障工作站中进行上网测试,结果发现网络访问还是时断时续。
在排除了上面几种因素后,笔者估计这种网络故障应该不在交换机硬件部分,很可能是局域网中的网络病毒造成的。于是,笔者特意从网络中下载了专业分析工具Sniffer,通过该工具抓包分析网络中的信息包,发现有许多信息包都不约而同来自相同的一个网卡设备的MAC地址,而信息包中发送的目的地址在局域网中根本找不到,于是笔者立即下意识地怀疑可能是“熊猫烧香”之类蠕虫病毒造成了网络传输通道堵塞。难道目标网卡MAC地址对应的工作站真的被感染上了网络蠕虫病毒?
想到这一点,笔者立即通过网络正常传输时创建的MAC地址与IP地址对应表,查找到该工作站来自局域网二楼网段中的一台工作站,初步确认故障原因后,笔者立即将目标网卡MAC地址对应的工作站从特定网段中断开连接,同时在该工作站系统中安装了最新版本的杀毒软件,并对该工作站系统进行了全面、彻底地病毒查杀操作,等到病毒查杀任务结束后,笔者还真的看到了一些网络蠕虫病毒,原以为这些网络蠕虫病毒就是最终的“祸首”,可是当将该工作站重新接入到对应网段中后,局域网的数据丢包故障现象还是没有消失。
在万般无奈之际,笔者决定对各个子网进行单独测试检查。于是笔者特意找来当初组建局域网时使用的网络拓扑结构图,对照图纸笔者想依次找出不同网段接入到核心交换机时所使用的端口,在进行这方面查找操作时,笔者偶然看到有一条网络线缆竟然同时插入到核心交换机中的两个端口中,很明显这条网络线缆使局域网中形成了环路现象,而环路现象可能就是整个局域网数据丢包严重的“罪槐祸首”。
为了验证笔者的分析是否正确,笔者尝试着将造成环路的那条线缆拔出后,立即从故障工作站中再次访问了Internet网络,结果发现故障工作站打开网页的速度很快;但笔者还是有点不放心,又跑到另外一个故障子网中,随意找了一台工作站进行上网测试,测试结果证明局域网的所有故障全部已经消失,这表明局域网的数据丢包故障已经被成功解决了。
故障探究
通过上面的分析,我们不难发现网络环路其实就是引起局域网所有子网不能正常访问的“祸首”,在局域网环境中一旦有网络环路现象存在时,那么工作站对外发送的每一帧信息都会在网络通道中反复广播,从而造成了广播风暴现象,最终导致局域网传输通道严重被堵塞,那样一来局域网网络就容易出现数据丢包现象。
在解决这类网络故障时,笔者由于没有及时了解到局域网网络中发生了一些变动,导致在排除故障的过程中,始终没有想到网络环路竟是由于我们网络管理员的疏忽引起的,从而导致了笔者在解决故障的过程中多走了不少弯路。
仔细想来,要是在排除故障之前,笔者能够事先询问一下单位的其他网络管理员,打听一下最近网络是否进行了改动的话,说不定就能很快找到故障原因了。所以,日后我们在解决类似网络故障时,首先应该仔细了解一下故障之前网络的变动情况,之后再按照常规思路进行排查。
当然,为了便于管理网络,我们在组建局域网网络时,也应该及时建立了比较完善的局域网组建档案资料,具体内容可以包括IP及MAC对应表、网络布线图、网络变动说明等,有了这些资料帮忙,任何网络管理员都能在很短时间内解决各种网络故障了。
⑥ 计算机终端接受到错误的数据包后,是否会丢弃数据包并要求对方重传
看是什么协议了,象UDP协议就不会去要求数据包重发.........................
网络协议(Protocol)是一种特殊的软件,是计算机网络实现其功能的最基本机制。网络协议的本质是规则,即各种硬件和软件必须遵循的共同守则。网络协议并不是一套单独的软件,它融合于其他所有的软件系统中,因此可以说,协议在网络中无所不在。网络协议遍及OSI通信模型的各个层次,从我们非常熟悉的TCP/IP、HTTP、FTP协议,到OSPF、IGP等协议,有上千种之多。对于普通用户而言,不需要关心太多的底层通信协议,只需要了解其通信原理即可。在实际管理中,底层通信协议一般会自动工作,不需要人工干预。但是对于第三层以上的协议,就经常需要人工干预了,比如TCP/IP协议就需要人工配置它才能正常工作。
局域网常用的三种通信协议分别是TCP/IP协议、NetBEUI协议和IPX/SPX协议。 TCP/IP协议毫无疑问是这三大协议中最重要的一个,作为互联网的基础协议,没有它就根本不可能上网,任何和互联网有关的操作都离不开TCP/IP协议。不过TCP/IP协议也是这三大协议中配置起来最麻烦的一个,单机上网还好,而通过局域网访问互联网的话,就要详细设置IP地址,网关,子网掩码,DNS服务器等参数。
TCP/IP协议族中包括上百个互为关联的协议,不同功能的协议分布在不同的协议层, 几个常用协议如下:
1、Telnet(Remote Login):提供远程登录功能,一台计算机用户可以登录到远程的另一台计算机上,如同在远程主机上直接操作一样。
2、FTP(File Transfer Protocol):远程文件传输协议,允许用户将远程主机上的文件拷贝到自己的计算机上。
3、SMTP(Simple Mail transfer Protocol):简单邮政传输协议,用于传输电子邮件。
4、NFS(Network File Server):网络文件服务器,可使多台计算机透明地访问彼此的目录。
5、UDP(User Datagram Protocol):用户数据包协议,它和TCP一样位于传输层,和IP协议配合使用,在传输数据时省去包头,但它不能提供数据包的重传,所以适合传输较短的文件。
HTTP协议简介
HTTP是一个属于应用层的面向对象的协议,由于其简捷、快速的方式,适用于分布式超媒体信息系统。它于1990年提出,经过几年的使用与发展,得到不断地完善和扩展。目前在WWW中使用的是HTTP/1.0的第六版,HTTP/1.1的规范化工作正在进行之中,而且HTTP-NG(Next Generation of HTTP)的建议已经提出。
HTTP协议的主要特点可概括如下:
1.支持客户/服务器模式。
2.简单快速:客户向服务器请求服务时,只需传送请求方法和路径。请求方法常用的有GET、HEAD、POST。每种方法规定了客户与服务器联系的类型不同。
由于HTTP协议简单,使得HTTP服务器的程序规模小,因而通信速度很快。
3.灵活:HTTP允许传输任意类型的数据对象。正在传输的类型由Content-Type加以标记。
4.无连接:无连接的含义是限制每次连接只处理一个请求。服务器处理完客户的请求,并收到客户的应答后,即断开连接。采用这种方式可以节省传输时间。
5.无状态:HTTP协议是无状态协议。无状态是指协议对于事务处理没有记忆能力。缺少状态意味着如果后续处理需要前面的信息,则它必须重传,这样可能导致每次连接传送的数据量增大。另一方面,在服务器不需要先前信息时它的应答就较快
⑦ 需要搞清楚的关于抓包的问题
不同主机之间的数据通信都是通过网络来进行传输,对那些在网络上传输的数据(发送、请求的数据)进行截获、编辑、转存等操作叫做抓包。抓包可以是抓取电脑端请求的数据,还可以抓取移动端(手机APP)的数据包。
通过对网络上传输的数据进行抓取,可以对其进行分析,对于软件的Debug很大的帮助。当然也可以通过抓取用户发送的涉及用户名和密码的数据包来获取用户的密码。
一般情况下,数据按照各种网络协议按照一定的格式在网络上进行传输,网络上传输的数据是以帧为单位,在对需要发送的数据进行包装的时候,会把数据的接收方、发送的的地址(MAC地址、IP地址等)一起进行包装并进行发送。根据发送方和接收方的地址,会有一条数据包的传输路径,在这条路径上,发送的数据包,会经过网络上很多台主机,标准的TCP/IP协议是这样处理的:当有数据经过主机时,主机会通过存放在数据包里面的地址来进行判断,这个数据包是否是发送自己的,如果不是发给自己的,主机就不会对它进行解析,简单的进行丢弃(转发)。如果是发送给自己的,那么主机就会对其进行解析和存储。
如果想要存储那些不是发送给自己的数据包,可以把网络适配卡设置为杂乱模式。这样它就会接收经过它的每一个数据包了。
目前主流的移动端抓包工具为:TcpDump、WireShark、Fiddler, 他们的对比如下。
Android平台下的网络数据抓包工具,Android模拟器中自带 TcpDump 文件。
用 TcpDump 对网络数据抓包,手机不用走代理——将网络数据包添加到 WireShark 中分析即可。
缺点:
PC端截获、分析通过该网卡的所有网络通信的数据包(针对移动端时候,就要对移动端设置 代理服务器)强大的工具,完整查看网络中的每层、每个协议、每个数据包的详细组成信息;TCP、UDP、HTTP、HTTPS等协议的数据包均可获取;
缺点:
HTTP协议的代理工具,抓取、分析电脑中所有进出该网卡、与网络进行数据交互的数据(针对移动端抓包时,需要设置代理服务器),主要针对的是 HTTP/HTTPS协议;能够清晰查看 数据包 中的内容——HTTPS中的数据包可以解密出来;
优点:
缺点:
网络
利器 -- 抓包工具总结
移动端网络数据抓包工具对比分析
fiddler和wireshark工具介绍及对比 - catherine的心路历程 - 博客大巴
⑧ Wireshark
Wireshark作为网络工具,一直被推崇;wireshark可以通过TCP的端口号的个数,或者Stream index的个数,来判定有几个线程;可以通过分段分片的消息,判定是否分片;可以通过mss判定MTU的大小。
抓eNb的WireShark pcap
tcpmp -p sctp -i eth2 -w aa.pcap
epc内部抓不同口,开两个ssh,抓取S1U和SGI的数据包
tcpmp -i eths1u -s 0 -w s1u.cap
tcpmp -i ethsgi -s 0 -w sgi.cap
Wireshark的时序图产生一个TCP序号vs.时间的图形。
在Wireshark的菜单Statistics ->TCP Stream Graph -> Time-Sequence Graph下,有两种格式的时序图,stevens和tcptrace。Stevens时序图描述了流量(序号)随着时间的变化,主要用于查看流量变化的情况,是否有中断、丢包、大时延的情况,命名取自W.Richard Stevens写的经典书籍《TCP/IP协议详解》。
Tcptrace时序图除了stevens时序图的内容外,还记录了对端ACK值和接收窗口的变化,内容较stevens时序图要丰富。Tcptrace原是Ohio University的Shawn Ostermann写的一个工具。
正常情况下,如果TCP速率稳定,那么在stevens时序图上看到的将是一条笔直上升的斜线,它的斜率等于速率,下面是放开限速的情况下的速率图,速率为100Mbps。
最好的情况下对应的WireShark的抓包
相比Stevens时序图,tcptrace时序图增加了对端ACK值和接收窗口变化的序号。如下图,中间黑色的粗线代表了发送的包,下方浅色的线代表了上一个ACK确认的包序号,上方浅色的线表征了TCP窗口,它等于上一个TCP ACK序号再加上TCP链路的window size。
下图为限速的情况下的序列图,下行限速1Mbps:
TCP segment of a reassembled PDU指的不是IP层的分片,IP分片在wireshark里用Fragmented IP protocol来标识。TCP segment of a reassembled PDU指TCP层收到上层大块报文后分解成段后发出去。
数据报的分段和分片确实发生,分段发生在传输层,分片发生在网络层。但是对于分段来说,这是经常发生在UDP传输层协议上的情况,对于传输层使用TCP协议的通道来说,这种事情很少发生。
网络层IP协议会检查每个从上层协议下来的数据包的大小,并根据本机MTU的大小决定是否作“分片”处理。分片最大的坏处就是降低了传输性能,本来一次可以搞定的事情,分成多次搞定,所以在网络层更高一层(就是传输层)的实现中往往会对此加以注意。
有些高层因为某些原因就会要求我这个面包不能切片,我要完整地面包,所以会在IP数据包包头里面加上一个标签:DF(Do not Fragment)。
这样当这个IP数据包在一大段网络(水管里面)传输的时候,如果遇到MTU小于IP数据包的情况,转发设备就会根据要求丢弃这个数据包,然后返回一个错误信息给发送者。
TCP数据丢弃会造成网络丢包的发生
在TCP传输过程中(不包括三次握手和四次挥手),同一台主机发出的数据包应该是连续的,即后一个包的Seq号等于前一个包的Seq+Len。也可以说,后一个包的Seq会大于或等于前一个包的Seq。当Wireshark发现后一个包的Seq号小于前一个包的Seq+Len时,就会认为是乱序了,因此提示 [TCP Out-of-Order] 。如图所示,3362号包的Seq=2685642小于3360号包的Seq=2712622,所以就是乱序。
小跨度的乱序影响不大,比如原本顺序为1、2、3、4、5号包被打乱成2、1、3、4、5就没事。但跨度大的乱序却可能触发快速重传,比如打乱成2、3、4、5、1时,就会触发足够多的Dup ACK,从而导致1号包的重传。
当乱序或者丢包发生时,接收方会收到一些Seq号比期望值大的包。它每收到一个这种包就会Ack一次期望的Seq值,以此方式来提醒发送方,于是就产生了一些重复的Ack。Wireshark会在这种重复的Ack上标记[TCP Dup ACK] 。
以图为例,服务器收到的7号包为“Seq=29303, Len=1460”,所以它期望下一个包应该是Seq+Len=29303+1460=30763,没想到实际收到的却是8号包Seq=32223,说明Seq=30763那个包可能丢失了。因此服务器立即在9号包发了Ack=30763,表示“我要的是Seq=30763”。由于接下来服务器收到的10号、12号、14号也都是大于Seq=30763的,因此它每收到一个就回复一次Ack=30763,从图中可见Wireshark在这些回复上都标记了[TCP Dup ACK]。
当发送方收到3个或以上[TCP Dup ACK],就意识到之前发的包可能丢了,于是快速重传它(这是RFC的规定)。以图6为例,客户端收到了4个Ack=991851,于是在1177号包重传了Seq=991851。
如果一个包真的丢了,又没有后续包可以在接收方触发[Dup Ack],就不会快速重传。这种情况下发送方只好等到超时了再重传,此类重传包就会被Wireshark标上[TCP Retransmission]。以图为例,客户端发了原始包之后,一直等不到相应的Ack,于是只能在100多毫秒之后重传了。
⑨ tcpmp抓包 帮我分析一下原因.我迷茫了!
貌似ICMP数据包被服务端丢弃了,UDP端口号得不到啊
⑩ 服务器丢包怎么解决 服务器如何解决丢包的情况
1、本地网络故障:可以用户本身可以进行解决,先查看是什么原因导致的本地网络故障。有部分情况是因为管理员账号被黑,然后被大量的发送数据包,导致的网络堵塞,进而导致服务器丢包。
2、中转网络故障:中转网络故障具体指的是,访问服务器跳出本地路由直到跟机房核心交换,在这中间的路由网络。中转网络故障非常难以判断,无论是用户还是机房人员,都没办法直接进行干预操作,好在中转网络故障会自行恢复,一般也不要等待太长时间。
3、机房网络故障:机房网络故障的形成原因是机房硬件设备故障跟自然灾害。机房网络故障是相对常见的原因,特别是高防服务器机房,因为可以抵挡各种流量的网络攻击,因而有时会被攻击导致出现丢包的情况。