作者回复: 很棒! 这个方式也很好,通过搜索特定消息内容(比如某个http事务的唯一uuid)的方式,找到两边抓包文件里同一个报文。这个消息越确定越唯一,匹配的范围就越小越精确。 在二层就是用frame contains 在三层就是用ip contains 在四层就是tcp contains 在七层就可能是http contains
作者回复: 差不多,很全面了,给你点赞! 你也可以参考另外一个同学的回答,就是在数据链路层,用frame contains "xxx"这个wireshark过滤器,在两个文件中找到同样的报文。当然前提是这个"xxx"应该足够唯一,否则是多个的话,得结合其他信息(比如ip,端口号,序列号等等)来综合判断。 一般来说,我个人用的比较多的就是两种: 1. 用裸序列号(也叫原始序列号) 2. 用应用载荷数据,比如frame contains, ip contains, tcp contains, http contains都可以
作者回复: 就是指乱序报文的数量。比如有一个抓包文件里有1万个报文,其中10个是乱序报文(wireshark会提示的,在专家信息里可以看到),那么就是千分之一,是支持范围内,或者说不会明显影响到传输。 你可以这样得到百分比: 1. 计算全部报文数量:capinfos file.pcap | grep packets 2. 计算乱序报文数量:tshark -n -q -r file.pcap -z "io,stat,0,tcp.analysis.out_of_order" 3. 两者相除,或者肉眼也能看出来比例大概在什么数量级了
作者回复: 嗯这个在计划中的,后续陆续对抓包文件做数据脱敏,然后整理出来,放到gitee上方便大家的学习
作者回复: 你的总结太好了,学习委员就是你了:) 这个排查分析的思路虽然不包含具体的操作,但对我的排查工作的开展非常有指导意义,希望对你也有帮助
作者回复: 一方收到3个DupAck会启动快速重传,注意是3个DupAck,而加上原始Ack就是4个同确认号的Ack了,比你这里说的多一个:)
作者回复: 经过了LB(包括这里的haproxy和nginx),那么LB前后的TCP连接是没有关系的,在TCP层面的信息毫无联系,所以就不能按这节课里的方法(对比两侧的抓包文件)来对比客户端抓包和服务端(在LB后面)抓包。不过我们还是可以在以下两种抓包场景里做比较: 1. 比较客户端抓包和LB抓包(LB的客户侧) 2. 比较LB抓包(LB的服务侧)和服务端抓包 但是因为1和2是不同的TCP连接,无法从TCP元数据(IP,port,序列号等等)上找到关联关系。不过,可以在应用层数据上找到这种关系。比如客户侧的某个请求有个特定的uuid,那么LB转发到服务侧后,这个uuid还是保留的,就可以通过它来找到两侧TCP的关系。 这个话题很大,在后续课程里会陆续提到的~
作者回复: 你好,你具体指的是客户端或者服务端的哪个报文,或者是对哪个图有困惑呢?
作者回复: 比较奇怪,一般发生序列号改变的话,是经过了LB的,你是这种场景吗
作者回复: 恩,如果我们在通信两端都做了抓包,那么同一个报文就会在两个文件中都出现(假设没有丢包),通过这种方法,找到同一个tcp流