tcpdump应用

服务器端查询网络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

猜你喜欢

转载自haiyupeter.iteye.com/blog/2381549