实验过程:此次实现使用了两个服务器AB,服务器A使用ncat开启datetime服务(端口13),服务器B使用telnet访问A的datetime服务,并在服务器A里使用tcpdump转存传输的数据并进行分析。
实验前知识准备:
ncat是一个强大的网络工具,可以用来搭建一个小型server。详情请点击:使用ncat建立简单服务器
tcpdump是一个抓取网络数据包的强大工具,使用请自行查找。
实验开始:
服务器A所执行命令:
$ ncat -l 13 --keep-open --send-only --exec "/bin/date" &
$ tcpdump -n -X port 13
-n 是指显示IP地址,-X是指打印数据并显示ASCII码。
服务器B所执行命令:
$ telnet 119.29.106.112 13
实验结果截图:
数据分析:
数据传输是典型的TCP,共捕捉到8个packet,中间只有一个datetime数据发送到服务器B。
数据分析只分析packet4:
先看数据:从内存地址看,到0x51,即共5*16+1=81bytes。网络传输的数据存放方式是大端,符合人类思维。第一个32bits:0x4500 0x0051 对应的分别是IPv4,20bytesIP头部长度,以及数据总长度0x51->81bytes。最后就是TCP数据,最后那个就是换行符啦’\n’~以此类推,把所有需要标注的都分别标注在IP Header图以及右边的TCP Header 图中,读者自行慢慢尝试识别出来。
重新看回第一行tcpdump帮我们所解释数据的表示就相当好理解。 时间,IP数据报,源地址.端口>目标地址.端口 : Flags[P.]指PSH,win 227当然是window size值为227,options就是TCP共32bytes-20bytes的内容,length 29指的是这TCP所带的数据共29字节。
其它说明&备注:
1.tcpdump用到混杂模式以捕捉数据,须以root身份执行。
2.ncat要注意版本,好像有些系统的ncat是不可以用来搭建server。