Tcpdump
用tcpdump抓包,首先得指定从哪个网卡来的流量
我这里是ens33 用-i 指定网卡 抓什么端口的包 port 现在是抓icmp 我就直接写icmp 加一个条件(从哪里来)用and,例如三个条件用两个and,两个条件加一个and 这里跟防火墙不一样,防火墙不用加and直接把条件用空格隔开。 源地址从哪里来src -n是把协议,地址都改成数字的形式。-v是让它显示的稍微详细一点。
tcpdump -i ens33 -nnv icmp and src 192.168.26.10
现在它正在ens33监听,符合这些条件的数据包
26.10发送到26.137的一个icmp 包echo request 每个数据包都会有一个独立的id号 seq1 第一次ping用的是1,第二次就是2。 发的数据包的长度是64个字节不加src,就抓icmp协议,这个范围就广一点,不光抓进来的包,只要经过网卡的都抓,出去的也算。
再ping一次看看它抓到什么了,
抓到两个,10给137发了一个request,137给10回了一个reply,看到这两个步骤就说明ping成功了一次,如果是两次就会抓到四条,四次抓到八条。
重新抓
ping3次,
抓到六条,一来一回,这是它真正的数据包交互的过程。
拿出一次,分析一下
它ping通我只需要这两步,这两步,任何一步,只要防火墙断掉,它就ping不通,只要保证我出去的就行了,我出去的是137给10发一个request 10给我发一个reply我就ping通他了,这个是我ping通它的过程,只要这个过程断不掉就可以ping通它。
虽然都是137往外发包,但是上面的发的是回复包,下面的是发的请求包,我ping你,是我给发请求包,你给我reply。你ping我是你给我发请求,我给你回reply。
先指定从哪个网卡来的流量,-v显示的稍微详细一点 必须加网卡,不加网卡不行,-nv不加也行,不加无非数字变成协议的名字,如果有解析主机名称会变成主机名称,就不是ip地址了,v的话就信息少一点。
#tcpdump -i enss -nnv icmp
#tcpdump -i enss tcp and port 80 别人访问我的nginx服务器,用tcp and 80
比如现在我的nginx能访问,就抓这个包
没有加-v也是可以的。
加-nnv
客户端10开了一个随机端口39342,它要访问137的80端口,发了一个syn包,紧接着137的80给10的39432发了一个ack的包,紧接着10客户端用39432端口给137的80端口发一个ack确认,这个三次握手就结束了,建立完成了,这是三次握手的过程,接下来就是访问页面的过程。一直到最后还有四次挥手的过程,还有抓到的数据包不一定是四次挥手。