Wireshark学习笔记
主要是林的Wireshark系列的读书笔记, 以后遇到trick一起放在这里
以后学到什么协议就放到这里
TCP Follow
Follow的时候依据的是, 通信双方的IP:Port
NAT
书中多次提到问题无法解决, 是因为NAT把某白名单里的IP给转换成了其他的QAQ
yep, 那FTP的被动模式, 应该也是会遇到这个问题?
STUN
STUN协议学习
+++++++++++++++++++++
+ Message Type 2 +
+ Message Length 2 +
+ Message ID 16 +
+++++++++++++++++++++
头部这是 2 + 2 + 16 = 20字节
对应的请求和响应有相同的Message ID
这个Message Length
是后面可选项的总长度
之后就是TLV(Type-Length-Value)格式的可选项
每一项都是
++++++++++++++++++++
+ Type 2 +
+ Length 2 +
+ Value Length +
++++++++++++++++++++
FTP
超古老的协议~
MTU
最大传输单元, 网络上传输的包的最大大小, 包含IP, TCP/UDP
获知对方的MTU是在TCP建立连接(三次握手的时候), 双方会把自己的MSS(Maximum Segment Size) 告诉对方. MTU = MSS + IP头 + TCP头, 是包含在TCP载荷里
(准确的是说[SYN] - [SYN, ACK] - [ACK] 中的第一步告诉对方, 第二步收到对方的)
发送方发送包的最大大小取决于双方小的一方, 比如一方的MSS是1460, 那么他的MTU就是(1460 + 20 + 20) = 1500
, 而另一方MSS是8960, MTU是8960 + 20 + 20 = 9000
那么就只能传输1500的包
在wireshark抓到的包, IP头里的total size
就是包总大小(比如TCP:IP+TCP+TCP载荷), 这里没算链路层的大小…为什么, MTU也不算链路层吗?
你是不是智障…MTU就是链路层对上层长度的一个限制, Linux下netstat -i
就可以得到各接口的MTU大小, 我的无线网卡是1500…
但其实…我们知道的只是两端的MTU, 在传输过程中, 可能经过MTU更小的节点, 这个时候就会被丢包, 但这个情况我们没办法…我们也不知道中间网络是什么样的
超时重传
…从这里, 我慢慢理解到其实不是我们本科教的东西没有用, 只是教育还是普适性的. 这些东西覆盖面很广, 不仔细的研究这一块内容, or 以后不做这一块的东西, 可能真的用不到, 让你什么东西都了解一下, 是告诉你有这些东西的存在, 感兴趣的自会去学
localhost 和 127.0.0.1
emmmmm, 网上有关于这个的奇怪言论…什么这个走网卡,那个不走网卡…我不是太明白…之后再看看
DNS
书上讲DNS的支撑协议可以是TCP, 也可以是UDP…
真是个奇异的协议, 以前只注意到能外带数据, 过防火墙, Rebinding 过waf…
根本没注意…这用两种协议, 学习了
一般情况下是使用UDP, 好像要强制使用TCP的时候才会用TCP
DNS查询的方式有两种
- 递归查询
??? - 迭代查询
根服务器 - 权威服务器 - …循环工作模式
查询一个对应着几个不同ip的同名记录, 会返回所有的IP, 但顺序会有所不同, 而一般会选中结果的第一个, 用这个特性可以做负载均衡
作者提到性能相关的Trick
Statistics -> Summary
我怎么找不到这个
Analyze -> Expert Infos
Statistics -> TCP StreamGraph -> TCP Sequence Graph
统计 -> TCP流形图 -> 时间序列(Stevens)
Wireshark对上层协议的识别
传输层协议识别
这个很容易, IP报头有相应的字段指出传输层的协议, TCP(6), UDP(17)…emmmm, 还有ICMP(1)这个是算网络层的协议…但, ICMP是封装在IP包里的…, 类似的还有IGMP(6), 其他的想到再补充
应用层协议识别
这个…看来看传输层没有相关的字段…应用层协议那么多..想一想也不会有相关的字段…
思考5s…应该是看端口号…如果不用常用端口号那应该就不知道了…
后记, 查了一下, 就是这样的, 还能设置某一个包的应用层协议类型
TO-DO
再次推荐了TCP/IP详解, 我想抽时间把这个卷1看一下
我的天…这个好厚啊….QAQ