http and ip.src==192.168.1.100 # 先用ipconfig|more命令查看自己的IP地址
smtp || pop || imap #文本Email流量
ip.src == 192.168.1.100
ip.dst == 192.168.1.100
ip.addr == 192.168.1.100
ip.addr == 192.168.1.100 or ip.addr == 192.168.1.101
!tcp.port == 3389 #排除RDP流量 tcp.flags.syn == 1 #具有SYN标志位的TCP数据包 tcp.flags.rst == 1 #具有RST标志位的TCP数据包 !arp #排除ARP流量 http #所有HTTP流量 tcp.port==23 || tcp.port==21 #Telnet或FTP流量
udp.length == 26 #这个长度是指udp本身固定长度8加上udp下面那块数据包之和 tcp.len >= 7 #指的是ip数据包(tcp下面那块数据),不包括tcp本身 ip.len == 94 #除了以太网头固定长度14,其它都算是ip.len,即从ip本身到最后 frame.len == 119 #整个数据包长度,从eth开始到最后
http.request.method == "GET" http.request.uri == "/blog/awk_sed.txt" http.request.full_uri == "http://ixyzero.com/blog/awk_sed.txt"
ip.addr == 107.170.214.214 and tcp.len > 0
搜索“100 Wireshark Tips”
参考链接:
- wireshark 过滤法则
- WireShark 过滤语法
- http://packetlife.net/blog/2010/jun/7/understanding-tcp-sequence-acknowledgment-numbers/
- http://networkengineering.stackexchange.com/questions/7480/tcp-length-and-tcp-data-wireshark-filters
- https://ask.wireshark.org/questions/4178/how-do-i-determine-a-tcp-segments-length
《 “Wireshark使用tips” 》 有 5 条评论
patoolkit – 专注于流量安全性分析的 Wireshark 插件
https://github.com/pentesteracademy/patoolkit
CaptureFilters
https://wiki.wireshark.org/CaptureFilters
`
Capture filters (like tcp port 80) are not to be confused with display filters (like tcp.port == 80). The former are much more limited and are used to reduce the size of a raw packet capture. The latter are used to hide some packets from the packet list.
捕获filter和展示filter是不一样的概念,前者的限制比较多且多用于减小原始捕获包的大小,后者用于隐藏不相关的包方便查看和分析。
Capture filters are set before starting a packet capture and cannot be modified during the capture. Display filters on the other hand do not have this limitation and you can change them on the fly.
捕获filter必须要在启动捕获之前进行设置,而展示filter则没有这个限制。
`
DisplayFilters
https://wiki.wireshark.org/DisplayFilters
`
展示filter的语法里面用 == 的比较多
`
Wireshark User’s Guide
https://www.wireshark.org/docs/wsug_html_chunked/
`
记录一个在日常办公中抓包分析的小tip:
现在很多网站都是https协议的加密流量(不像之前的http协议),你从Wireshark里看不到内容详情的,甚至连域名都看不到(应该只能看到src和dst的的IP+port),但是在从域名到IP的时候会走一次DNS解析,你可以在这一步知道域名是什么(如果怕DNS缓存的话,可以先手动清除一下缓存,同时把不相关的应用都先关掉,从而更有针对性的做分析)。
# DNS
tcp.port == 53 || udp.port == 53
`
从输入URL到页面加载完成发生了什么?
https://juejin.cn/post/6985831026903744548
`
从前端的角度出发,我觉得首先回答必须包括以下几个基本的点:
1. 浏览器查找当前 URL 是否存在缓存,并比较缓存是否过期。
2. DNS 解析 URL 对应的 IP 。
3. 根据 IP 建立 TCP 连接(三次握手)。
4. HTTP 发起请求。
5. 服务器处理请求,浏览器接收 HTTP 响应。
6. 渲染页面,构建 DOM 树。
7. 关闭 TCP 连接(四次挥手)。
`
从输入 URL 到页面加载完成的过程中都发生了什么事情?
https://fex.baidu.com/blog/2014/05/what-happen/
从输入 URL 到页面加载完成的过程中都发生了什么事情?
https://www.jianshu.com/p/71cf7f69eca8
`
1.浏览器接收URL
2.将URL与缓存进行比对如果请求的页面在缓存中且未过期,则直接进行第8步
2.1 彻底缓存的机制(http首部字段):cache-control,Expires
2.2 当缓存过期时,浏览器会向服务器发起请求询问资源是否真正过期,这就是缓存协商。对应http首部字段:last-modified,Etag
2.3 贴一个缓存机制的图(来自浅谈Web缓存)
2.4 除了http首部设置缓存,HTML5的manifest文件也可以设置缓存。但现在已经被标准舍弃,也就没有讨论的必要。
3.如果网络地址不是一个 IP 地址,通过DNS解析域名返回一个IP地址
4.浏览器与服务器通过三次握手(SYN,SYN/ACK,ACK)建立TCP 连接
5.浏览器向服务器发送HTTP请求。
6.服务器收到请求,从它的文档空间中查找资源并返回HTTP响应。
7.浏览器接受 HTTP 响应,检查 HTTP header 里的状态码,并做出不同的处理方式。
8.如果是可以缓存的,这个响应则会被存储起来。
9.解码
10.渲染
11.关闭TCP连接或继续保持连接
`
访问一个网站的全过程
https://cncsl.github.io/2020/1103/%E8%AE%BF%E9%97%AE%E4%B8%80%E4%B8%AA%E7%BD%91%E7%AB%99%E7%9A%84%E5%85%A8%E8%BF%87%E7%A8%8B/