概述
感觉做后台都绕不开网络数据的交互,毕竟在当下这个互联网的大环境下,太多数据都不会是一家独享,太多用户都要求第三方认证(比如说微博支持微信等各种第三方账号登录)。那A和B的数据该如何对接起来呢?做linux后台的亮出自己的tcpdump神剑,让所有的网络数据无所遁形。
我在实习的时候初见tcpdump,可以说是对它神烦了。各种参数组合在一起,变成一条长长的命令,这是什么鬼嘛。不过却又不得不感叹它的功能强大了,单独选择某一个网口抓包选它,抓取指定IP地址的网络包选它,指定端口抓包选它,也是不得不服开发这条命令的大佬呀。于是痛定思痛在这里做下一个决定,把tcpdump好好归纳总结一下,争取吃个透,吃不透就把这里当成以后翻阅的笔记吧!
开篇一张图,剩下全靠百度。
先来看下man tcpdump的结果,先来抠脚翻译一下tcpdump:把网络上的通信量转储下来。网络上的通信量当然就是交互的数据报文呀。
再来直接说一下关于tcpdump的参数详解:
通过百度,百度直接帮我找到了IBM上的一个关于tcpdump的详细文档,突然就不想在这里收集细节献丑了,那就直接贡献一个链接:tcpdump详解
最后说说自己日常是怎么用tcpdump的
tcpdump -s 0 -i eth0 -w tcpdump.pcap host 192.168.172.234 port 51111
-s 参数,snaplen, 也就是数据包的截取长度,仔细看man就会明白的!默认截取长度为60个字节,但一般ethernet MTU都是1500字节。所以,要抓取大于60字节的包时,使用默认参数就会导致包数据丢失!只要使用-s 0就可以按包长,截取数据!
-i选择某个网口抓包,曾经天真的以为网口都是eth0,直到有一次设置成eth0始终抓不到包就长记性了。
-w将所有信息写入一个文件,pcap是wireshark识别的一种文件格式。
host和port就是指明ip地址和端口了。
我一般用wireshark来分析tcpdump抓下的数据包,这里举一个http报文的例子
大概就是这样了,我曾经用此方法分析过几次http报文的数据交互,当时各种头部信息不正确导致对方服务器各种500之类的报错也是很头痛呀。主要是对方研发使用java等语言编程,封包之后API会夹带一些固有参数,而对方研发往往自己都不知道它们需要的数据最终是一个什么状态,也就只好这样打开天窗说话了。
总结一下:
用此方法和别人比对数据明了清晰,你发了什么收到了什么直接用截图说话了,就像是把小房间的门直接打开了,里面有什么都清清楚楚了。
最后
以上就是殷勤飞机为你收集整理的瞎说一下linux后台不得不知的tcpdump的全部内容,希望文章能够帮你解决瞎说一下linux后台不得不知的tcpdump所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复