服务器端查询网络tcp日记神器 tcpdump。
tcpdump主要用于记录tcp请求的具体情况。
1、tcpdump的基本使用方法
tcpdump -i eth1 用于查询网上eth1上的网络情况
tcpdump -i eth1 -w /mnt/test.cap 将记录写在/mnt/test.cap文件中
tcpdump -i eth1 -w /mnt/test.cap host 113.33.12.86 记录通过host的所有的请求
tcpdump -i eth1 -w /mnt/test.cap host 113.33.12.86 port 80 记录80端口的请求
tcpdump -i eth1 -w /mnt/test.cap src host 113.33.12.86 记录来源(流出)是113.33.12.86的请求日志
tcpdump -i eth1 -w /mnt/test.cap dst host 113.33.12.86 记录目标(流向)是113.33.12.86的请求日志
上述可以解决99%的问题
2、日志查看利器 wireshark
在windows里使用wireshark查看tcpdump的日志,这两个是绝配
3、tcpdump 结合网络知识中的三次握手和四次挥手
(1)TCP连接建立(三次握手)
客户端A,服务器B,初始序号seq,确认号ack
初始状态:B处于监听状态,A处于打开状态
A -> B : seq = x (A向B发送连接请求报文段,A进入同步发送状态SYN-SENT)
B -> A : ack = x + 1,seq = y (B收到报文段,向A发送确认,B进入同步收到状态SYN-RCVD)
A -> B : ack = y+1 (A收到B的确认后,再次确认,A进入连接状态ESTABLISHED)
连接后的状态:B收到A的确认后,进入连接状态ESTABLISHED
为什么要握手要三次
防止失效的连接请求突然传到服务器端,让服务器端误认为要建立连接。
(2)TCP连接释放(四次挥手)
A -> B : seq = u (A发出连接释放报文段,进入终止等待1状态FIN-WAIT-1)
B -> A : ack = u + 1,seq = v (B收到报文段,发出确认,TCP处于半关闭,B还可向A发数据,B进入关闭等待状态WAIT)
B -> A : ack = u + 1,seq = w (B重复发送确认号,进入最后确认状态LAST-ACK)
A -> B : ack = w + 1,seq = u + 1 (A发出确认,进入时间等待状态TIME-WAIT)
经过时间等待计时器设置的时间2MSL后,A才进入CLOSED状态
为什么A进入TIME-WAIT后必须等待2MSL
保证A发送的最后一个ACK报文段能达到B
防止失效的报文段出现在连接中
参考:
http://www.cnblogs.com/ggjucheng/archive/2012/01/14/2322659.html
tcpdump应用
猜你喜欢
转载自haiyupeter.iteye.com/blog/2381549
今日推荐
周排行