使用tcpdump 观察DNS IP TCP通信过程

使用tcp查看DNS通信过程

(base) root@ubuntu:~# sudo tcpdump -i -X  ens33 -nt -s 5000 port domain
tcpdump: -X: No such device exists
(SIOCGIFHWADDR: No such device)
(base) root@ubuntu:~# sudo tcpdump -i ens33 -nt -s 5000 port domain
IP 192.168.0.107.46401 > 192.168.0.1.53: 1876+ [1au] A? www.baidu.com. (42)
IP 192.168.0.1.53 > 192.168.0.107.46401: 1876 3/0/1 CNAME www.a.shifen.com., A 180.101.49.12, A 180.101.49.11 (104)

命令行
使用port domain 来过滤数据包,表示只抓取使用domain服务的数据包
数据内容有两条
第一条是查询报文 源 > 目的
数值1876是DNS报文的标识,也出现在应答中。“+”表示启用递归查询,“A?”表示采用A类型查询方式 www.baidu.com查询中的域名 (42)DNS报文的长度
第二条是反馈DNS报文 3/0/1 表示报文中有三个应答资源记录,0个授权资源记录,1个额外信息记录。CNAME www.a.shifen.com., A 180.101.49.12, A 180.101.49.11 代表三个应答资源记录。CNAME 表示紧随其后的是机器别名,A紧随其后的是IP地址;104应答报文长度。

再开一个终端

(base) root@ubuntu:~# host -t A www.baidu.com
www.baidu.com is an alias for www.a.shifen.com.
www.a.shifen.com has address 180.101.49.11
www.a.shifen.com has address 180.101.49.12

host
参数
-t 告诉DNS协议使用哪种查询类型,A类型 通过机器的域名获得其IP地址
输出
1)www.baidu.com 是 www.a.shifen.com.的别名
2)两个IP地址

IP地址解析

(base) root@ubuntu:~# telnet 127.0.0.1
Trying 127.0.0.1...
Connected to 127.0.0.1.
Escape character is '^]'.
Ubuntu 18.04.6 LTS
ubuntu login: 

再开一个终端

(base) root@ubuntu:~# tcpdump -ntx -i lo
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on lo, link-type EN10MB (Ethernet), capture size 262144 bytes
IP 127.0.0.1.34552 > 127.0.0.1.23: Flags [S], seq 1745940003, win 65495, options [mss 65495,sackOK,TS val 210102712 ecr 0,nop,wscale 7], length 0
	0x0000:  4510 003c b6a2 4000 4006 8607 7f00 0001
	0x0010:  7f00 0001 86f8 0017 6810 ee23 0000 0000
	0x0020:  a002 ffd7 fe30 0000 0204 ffd7 0402 080a
	0x0030:  0c85 e9b8 0000 0000 0103 0307

telnet使用的端口号是23,而客户端使用的临时端口号34552

分析IP头部信息

十六进制十进制IP头部信息
0x44IP版本号
0x55头部长度为5个32位(20字节)
0x10TOS选项中最小延时服务开启
0x3c60数据总长度
0xb6a2数据包标识
0x4禁止分片标识
0x000分片偏移
0x4064TTL被设置为64
0x06协议字段为6,表示上层协议是TCP协议
0x8607IP头部校验和
0x7f00 0001源端IP地址 127.0.0.1
0x7f00 0001目的端IP地址 127.0.0.1

TCP头分析

十六进制十进制IP头部信息
0x86f834552源端口号
0x001723目的口号
0x6810ee2334552序号
0x000000000确认号
0xa10TCP头部长度为10个32位(40字节)
0x002设置SYNC标志
0xffd7接收通告窗口大小
0xfe30头部校验和
0x0000没有设置URG标识
0x0204最大报文段长度选项的kind值和length值
0xffd765495最大报文段长度
0x0402允许SACK选项
0x080a时间戳的kind值和length值
0x0c85e9b8210102712时间戳
0x0000 00000回显应答时间戳
0x01空操作选项
0x0303窗口扩大因子的Kind值和length值
0x077窗口扩大因子为7

IP分片

以太网的MTU是1500字节,因此携带的数据包最多1480(TP头部占用20)

用IP数据报封装1481长度的ICMP报文,需要分片。
1)除最后一个分片其他分片都将设置MF标识
2)ICMP头部只有一份
在这里插入图片描述
电脑1

root@ubuntu:~# ping 192.168.0.107 -s 1473
PING 192.168.0.107 (192.168.0.107) 1473(1501) bytes of data.
1481 bytes from 192.168.0.107: icmp_seq=1 ttl=64 time=0.244 ms
1481 bytes from 192.168.0.107: icmp_seq=2 ttl=64 time=0.170 ms

电脑2

root@ubuntu:~# tcpdump -ntv -i ens33 icmp
IP (tos 0x0, ttl 64, id 23248, offset 0, flags [+], proto ICMP (1), length 1500)
    192.168.0.103 > 192.168.0.107: ICMP echo request, id 2708, seq 1048, length 1480
IP (tos 0x0, ttl 64, id 23248, offset 1480, flags [none], proto ICMP (1), length 21)
    192.168.0.103 > 192.168.0.107: ip-proto-1

第一个分片 偏移 0 MF被设置1 所以flags[+] 长度1500
第二个分片 偏移1480 没有分片 所以flags[none] 长度21

TCP连接建立数据通信关闭过程

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

为了维护世界和平_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值