用tcpdump来看3次握手4次挥手tcp连接过程以及解析

孤者浪人 提交于 2019-12-01 19:25:17

ser 端代码


cli端代码


命令 tcpdump -i  lo -nnA 'port=6000' 这个的意思是监听6000号端口 记得加上lo 不能是ech0网卡 这个是回环地址

由于是本机回环 使用IP都是一样的 端口号不同


用 netstat -pan|grep cli 也可以

19:36:06.190761 IP 192.168.243.128.37147 > 192.168.243.128.6000: Flags [S], seq 946003763, win 65495, 

options [mss 65495,sackOK,TS val 28598343 ecr 0,nop,wscale 6], length 0

////////////////////////截出来第一次握手

19:36:06.190820 IP 192.168.243.128.6000 > 192.168.243.128.37147: Flags [S.], seq 3620774452, ack 946003764, win 65483, options [mss 65495,sackOK,TS val 28598344 ecr 28598343,nop,wscale 6], length 0

//////////////////////第二次握手

19:36:06.190862 IP 192.168.243.128.37147 > 192.168.243.128.6000: Flags [.], ack 1, win 1024, 

woptions [nop,nop,TS val 28598344 ecr 28598344], length 0

//////////////////////第三次握手


options 表示选项

mss表示是发送端通告的最大报文长度

sackOK表示发送端支持SACK选项 SACK选项是为了更好的确定数据的准确接收的

TS val发送端的时间戳 ecr 接收端的时间戳

wscale 表示窗口因子大小

例如 第一次握手



[zhangsunqian@localhost ~]$ ./cli
请输入:aaa
[zhangsunqian@localhost ~]$ ./ser

aaa

21:52:06.684156 IP 192.168.243.128.37174 > 192.168.243.128.6000: Flags [P.], seq 1:4, ack 1, win 1024, options [nop,nop,TS val 36138676 ecr 36137330], length 3
E..7..@.@..U.........6.p.r.h^.......h|.....
.'n..'iraaa
21:52:06.685711 IP 192.168.243.128.6000 > 192.168.243.128.37174: Flags [.], ack 4, win 1024, options [nop,nop,TS val 36138678 ecr 36138676], length 0
E..4..@.@............p.6^....r.k....E......

.'n..'n. 

每次接收数据服务器都会回复 并且数据就放在末尾 如上

接着关闭cli


综上

如图

    

为什么最后一次握手ack=0 

(网络协议解析软件,有一个宗旨,就是将枯燥乏味的0、1二进制流解析成用户友好的显示,让协议分析尽量简单、直白。

TCPDUMP第三个ACK显示的偏移值(Offeset),即相对于初始序列号(原点)的偏移值,但需要明确的是,TCPDUMP捕获的原始报文里是绝对值(应该是长长的一串数字),只是显示成一个偏移量。



作者:车小胖
链接:https://www.zhihu.com/question/66005703/answer/237644085
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。)
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!