目录
- Wireshark
- tcpdump
Wireshark
-
Wireshark中的关键字
- Seq和Ack是随机生成的,wireshark将Seq和Ack的初始值都设为0,即用“相对值”代替“真实值”方便查看。使用Edit——Preferences——Protocols——TCP选项中的Relative Sequence Numbers来选择启用
- 在TCP中,同一台主机发出的包应该是连续的,即后一个包的seq等于前一个包的Seq+Len
- Ack可以理解为应答。A发给B的Ack是告诉B,我已收到你发的数据包,收到Ack号这里了,你下次要发Seq为Ack号的给我——B的Ack为A的Seq+Len
- Len:数据段的长度,不包含TCP头
-
WireShark中的标记
- TCP Out-of-Order:TCP传输过程中同一台主机发出的包是连续的,即后一个包的Seq等于前一个包的Seq+Len。当Wireshark发现后一个包的Seq小于前一个包的Seq+Len时就认为是乱序了,会提示TCP Out-of-Order。小跨度的乱序影响不大,但跨度大的乱序可能触发快速重传
- TCP Dup ACK:当乱序或丢包时,接收方会收到一些Seq号比期望值大的包,每次收到这个包就会Ack一次期望的Seq,以此提醒发送方,于是就产生了一些重复的Ack,Wireshark就会在这些重复的Ack上标记TCP Dup ACK
- TCP Fast Retransmission:当发送方收到三个或以上的TCP Dup ACK,就意识到之前发送的包可能丢了,于是快速重传(RFC规定)
- TCP Retransmission:如果一个包真丢了,又没有后续包可以在接收方触发Dup ACK,就不会快速重传,之中情况下只能等待超时重传,这类包被标记为TCP Retransmission
- TCP zerowindow:当Win等于0时就会被标记
- TCP window Full
- TCP segment of a reassembled PDU——不知道是干啥的
- Continuation to #
- Time-to-live exceeded
- TCP Previous segment not captured
-
Wireshark搜索/过滤关键字
- 常用的关键字,“eq” 和 “==”等同,“and” 表示并且,“or”表示或者。“!” 和 “not” 都表示取反。
- 搜索字符串xxx:tcp contains “xxx”
- 按协议过滤,如:tcp,http等,直接输入,或tcp||http
- 按ip过滤:
- 按源IP过滤:ip.src==172.0.0.1 或ip.src eq 172.0.0.1
- 按目的IP过滤:ip.dst==172.0.0.1或ip.dst eq 172.0.0.1
- 直接按ip过滤:ip.addr == 172.0.0.1或ip.addr eq 172.0.0.1筛选出所有和这个ip相关的包
- 根据端口过滤
- tcp.port==965
- 只显示目标端口:tcp.dstport==5150
- 只显示来源端口:tcp.srcport == 80
- 过滤端口范围:tcp.port >= 1 and tcp.port
- 根据数据报中携带的信息搜索:
- 按报长过滤:tcp.len==12
- 按序号搜索:tcp.seq == 11230
- 根据流搜索:
-
Wireshark菜单功能
- 编辑:
- 首选项(Preferences)
- 分析:
- 专家信息,在分析网络性能等方便经常用到,可以看到SYN总量的统计
- error::可以看到重传包等
- warning:
- note:
- chat:
- 专家信息,在分析网络性能等方便经常用到,可以看到SYN总量的统计
- 统计:
- 会话(conversation):可以看到一共建立了多少条连接,端口号等信息
- 编辑:
-
Wireshark Packet List面板,按网络模型排列:
- Frame x:物理层的数据帧概况
- Ethernet(数据链路层以太网帧头部信息):
- Destination:目标mac地址
- Source:源mac地址
- Internet Protocol Version 4(网络层):
- Total Length:IP包的总长度,包括应用层数据长度和tcp头,ip头
- Flags:
- Time to live(TTL):初始值一般是64,每经过一个路由器就减1
- Protocol:上层协议
- Header checksum:头部数据的校验和:不知道干啥的
- Source:源IP地址
- Destination:目标IP地址
- Transmission Control Protocol(传输层),按TCP头顺序:
- Source Port/Destination:源/目标端口号
- [Stream index: 1]:
- [TCP Segment Len:1388]:
- Sequence number:序列号,【Next Sequence number:下一个要发送的序列号】
- Acknowledgement number:确认序列号
- Header Length:头部长度
- Flags:
- Window size value:这个值是滑动窗口的大小,这个值*window scale等于win值
- Calculated window size:这个值是真是的窗口大小
- Window size scaling factor:这个值应该是系数
- 三者之间的关系是:Calculated window size = Window size value * Window size scaling factor
- Checksum:TCP数据段的校验和
- Options:
- Window scale:三次握手时会把这个值告知对方,对方收到后把这个值当作2的指数,算出来的值作为接收窗口的系数(接受窗口*该系数就是真正的接收窗口值)
- SEQ/ACK analysis:
- iRTT:RTT时间,往返时间
- Bytes in flight:拥塞窗口大小
- Timestamps:
- Data(有可能是应用层,如NFS协议等)
- 其他操作:
- 添加列:需要添加的地方右键应用为列
-
Packet Bytes面板:以十六进制和ASCII格式显示数据包的信息状态栏:
- 专家信息
- 注释
- 包数
- Profile
-
Wireshark的其他使用技巧:
- 在Packet Details面板中右键单击任何协议可以启动查看相关的wiki信息
ping的用法:问题汇总: - 计算在途数据报:发送方最后一个报的 seq+len 减去最后收到的ack
- 只要很少的丢包重传就足以对性能造成巨大影响
- 发送窗口和MSS有什么区别:发送窗口决定了一口气能发出去多少字节,MSS决定这些字节要分多少个包发完
- 在Packet Details面板中右键单击任何协议可以启动查看相关的wiki信息
tcpdump
参数:
- -i:指定网卡
- 所有网卡:any;
- 环回包:lo
- host:指定这台主机接收和发送的数据
- -s:指定抓到的每个包的前多少个字节,比如我只想抓每一个frame的前80个字节,就用-s 80,0表示抓取全部
https://www.cnblogs.com/f-ck-need-u/p/7064286.htmlhttps://www.cnblogs.com/lvdongjie/p/10911564.html7.TCP参数过滤tcp.flags 显示包含TCP标志的封包。tcp.flags.syn == 0x02 显示包含TCP SYN标志的封包。tcp.window_size == 0 && tcp.flags.reset != 1去掉重传的包:!(tcp.analysis.retransmission),重传:tcp.analysis.retransmission8.包内容过滤———————————————–tcp[20]表示从20开始,取1个字符tcp[20:]表示从20开始,取1个字符以上注: 些两虚线中的内容在我的wireshark(linux)上测试未通过。关键字过滤/查找:
* frame.number>21 && frame.number
1、Wireshark的数据包详情窗口,如果是用中括号[]括起来的,表示注释,在数据包中不占字节2、在二进制窗口中,如“DD 3D”,表示两个字节,一个字节8位3、TCP数据包中,seq表示这个包的序号,注意,这个序号不是按1递增的,而是按tcp包内数据字节长度加上,如包内数据是21字节,而当前IP1发到IP2的包的seq是10的话,那下个IP1发到IP2的包的seq就是10+21=31——同一个方向看seq,这一个seq=上一个seq+len7、8、在网络不堵即滑动窗口一点都不堵的情况下,第一个包的ack号就是第二个包的seq号,如果堵了,由于是滑动窗口缓存处理队列,所以这个值会错开9、如果A发到B连续几个包,seq号不变,ack号一直在变大,说明A一直在收B的数据,一直在给B应答10、如果A发到B连续几个包,seq号一直变大,ack号一直没变,说明A一直在向B发数据,不用给B应答,而是在等B的应答11、可以接收多个数据包后,一次性给一个应答,不用每个数据包一一对应给应答12、发了一个包,很久没有收到应答后,会重发包,在Wireshark抓包工具提示“[TCP Retransmission]”,在数据包详情窗口点开可以看到是对哪个数据包的重传14、如果出现这个错误“[]”,说明乱序了,前一个包没有收到,收到后面的包了,这时也会重传包tcp segment of a seassembled PDU: 说明发送端发送的TCP缓存数据过大,需要进行分片发包,分片发包过程中,发送端发送的数据报文中的Ack(Acknowledgment number)编号保持一致retransmission:重传常见问题:为什么会发送RST?https://blog.csdn.net/u014774781/article/details/48349107https://blog.csdn.net/guowenyan001/article/details/11766929
服务器托管,北京服务器托管,服务器租用 http://www.fwqtg.net
相关推荐: WPF 入门笔记 – 03 – 样式基础及控件模板
🥑原学习路线是按照圣殿骑士的《WPF基础到企业应用系列》的路线走的,但是布局之后直接依赖属性学起来有些僵硬,不太好理解,尝试了文章的前部分内容后放弃,调整为本篇博文内容。笔记路线将按照痕迹g给出的《WPF基础入门总结》中提及的路线进行,实际以我自己的学习过程为…