Linux网络编程 tcpdump网络传输观察

2017/10/25
Liunx网络编程篇,会持续一段时间

直接流程吧

tcpdump

#### sudo tcpdump -i eth1 -ent '(dst 118.190.65.33 and src 118.190.65.43) or (dst 118.190.65.43 and src 118.190.65.33)' 查看arp协议包
#### tcpdump -i eth0 -tn -s  500 port domain 过滤域名
#### tcpdump -ntx -i lo 查看本机ip协议包
#### tcpdump -ntv -i eth0 icmp 只抓取icmp报文

ping 118.190.65.43 -S 1476 利用ping命令发包
  IP (tos 0x0, ttl 64, id 24574, offset 0, flags [DF], proto ICMP (1), length 84)
id 如果相同说明是同一个数据,不同的分片上
offset 数据的偏移量 分片之后的结果 说明在同一个icmp报文上

抓tcp
### sudo tcpdump -i eth1 -nt '(dst 118.190.65.33 and src 118.190.65.43) or (dst 118.190.65.43 and src 118.190.65.33)'
telnet ip 80端口

IP 118.190.65.33.42128 > 118.190.65.43.80: Flags [S], seq 2775744327, win 29200, options [mss 1460,sackOK,TS val 4038113053 ecr 0,nop,wscale 7], length 0

length 0 没有数据交换
flags [DF] 没有分片
flags [+] 数据进行了分片传输了
Flags [S] SYN标志 同步报文段
Flags [S.]
Flags [R.] 请求一个不存在的端口会造成这样的影响
Flags [F.]  结束报文段
Flags [P.]  TCP有数据交互

IP 118.190.65.43.80 > 118.190.65.33.42128: Flags [S.], seq 2368352194, ack 2775744328, win 28960, options [mss 1460,sackOK,TS val 2224884870 ecr 4038113053,nop,wscale 7], length 0

同意链接

IP 118.190.65.33.42128 > 118.190.65.43.80: Flags [.], ack 1, win 229, options [nop,nop,TS val 4038113053 ecr 2224884870], length 0
对第二个报文确认 
三次握手完毕


IP 118.190.65.33.42128 > 118.190.65.43.80: Flags [F.], seq 1, ack 1, win 229, options [nop,nop,TS val 4038115058 ecr 2224884870], length 0
IP 118.190.65.43.80 > 118.190.65.33.42128: Flags [F.], seq 1, ack 2, win 227, options [nop,nop,TS val 2224886875 ecr 4038115058], length 0
IP 118.190.65.33.42128 > 118.190.65.43.80: Flags [.], ack 2, win 229, options [nop,nop,TS val 4038115058 ecr 2224886875], length 0

后面三个关闭链接


#### tcpdump -n -i etch0 port 23 只抓取23端口的数据报文

#### 网络链接工具
nc -p 12345 127.0.0.1 80 链接80
ctrl+c杀死
然后在链接
提示 nc: bind failed: Address already in use
netstat -an | grep 12345 
tcp        0      0 127.0.0.1:12345         127.0.0.1:80            TIME_WAIT 状态
2msl 2倍的ttl生存周期之后才可以端口再次释放出来

端口扫描 nc非常强大
nc -z -v -n 172.31.100.7 21-25
nc -l 1567 建立聊天服务器

#### 客户端或者服务端tpc可以发送复位报文来终止链接

#### 如果断电或者异常退出的情况,服务端或者客户端仍然维护着已经断开链接的链接。但是实际上该链接已经掉了 那么这样的状态称为半打开状态

tcp报文所携带的数据分为 交互数据和成块数据  交互数据实时较高 比如telnet 成块数据比如ftp

tcp每发送四次报文,就会发送一个Flags [P.]的标志通知客户端进行数据的读取 已经有数据啦缓冲区 

tcp重传的策略 5次 分别为0.2s 0.4 0.8 1.6 3.2 如果5次失败ip和arp开始接管,直到客户端主动close

个人随笔

安静的等待,你若盛开,蝴蝶自来

承接高质量 网站开发 app开发 如有需要请点击About联系

@承鹏辉