本文主要是介绍计算机网络:利用ethereal分别对TCP套接字的实现及UDP套接字的实现捕包分析 ;利用ethereal分析协议HTTP、FTP和DNS,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
目录
- 实验内容
- 实验目的
- 实验预备知识
- 实验过程描述
- 实验一:HTTP GET/response交互
- 实验二:Ethereal分组俘获
- 实验三:获取长文件
- 实验四:嵌有对象的HTML文档
- 实验五:HTTP认证
- 实验六:跟踪DNS
- 实验七
- 实验八
- 实验九
- 实验结果
- 实验一结果
- 实验二结果
- 实验三实验结果
- 实验五结果
- 实验六跟踪DNS结果
- 实验七实验结果
- 实验八实验结果
- 实验九实验结果
- 实验当中问题及解决方法
实验内容
- 利用ethereal分别对TCP套接字的实现及UDP套接字的实现捕包分析
- 利用ethereal分析协议HTTP、FTP和DNS
实验目的
1、 分析HTTP协议
2、 分析DNS协议
3、 分析TCP套接字的实现及UDP套接字的实现
实验预备知识
- HTTP协议
- DNS协议
- TCP报文
- UDP报文
实验过程描述
实验一:HTTP GET/response交互
(1) 启动Web browser。
(2) 启动Ethereal分组嗅探器。在窗口的显示过滤说明处输入“http”
(3) 开始Ethereal分组俘获。
(4) 在打开的Web browser窗口中输入一下地址(浏览器中将显示一个只有一行文字的非常简单的HTML文件):
http://gaia.cs.umass.edu/ethereal-labs/HTTP-ethereal-file1.html
(5) 停止分组俘获。
抓到两个包如下:
实验二:Ethereal分组俘获
(1) 启动浏览器,清空浏览器的缓存
(2) 启动Ethereal分组俘获器。开始Ethereal分组俘获。
(3) 在浏览器的地址栏中输入以下URL: http://gaia.cs.umass.edu/ethereal-labs/HTTP-ethereal-file2.html
(4) 在浏览器中重新输入相同的URL
(5) 停止Ethereal分组俘获,在显示过滤筛选说明处输入“http”
实验结果如下:
实验三:获取长文件
1.启动浏览器,将浏览器的缓存清空。
2.启动Ethereal分组俘获器。开始Ethereal分组俘获。
3.在浏览器里输入
http://gaia.cs.umass.edu/ethereal-labs/HTTP-ethereal-file3.html
浏览器将显示一个相当大的美国权力法案。
4.停止Ethereal分组俘获,在显示过滤筛选说明处输入http
实验结果如下:
实验四:嵌有对象的HTML文档
1.启动浏览器,将浏览器的缓存清空。
2.启动Ethereal分组俘获器。开始Ethereal分组俘获。
3.在浏览器的地址栏中输入以下URL: http://gaia.cs.umass.edu/ethereal-labs/HTTP-ethereal-file4.html,浏览器将显示一个具有两个图片的短HTTP文件
4.停止Ethereal分组俘获,在显示过滤筛选说明处输入“http”,分组列表子窗口中将只显示所俘获到的HTTP报文。
实验结果:
实验五:HTTP认证
1.启动浏览器,将浏览器的缓存清空。
2.启动Ethereal分组俘获器。开始Ethereal分组俘获。
3.在浏览器的地址栏中输入以下URL: http://gaia.cs.umass.edu/ethereal-labs/protected_pages/HTTP-ethereal-file5.html,浏览器将显示一个HTTP文件,输入所需要的用户名和密码(用户名:eth-students,密码:networks)。
4.停止Ethereal分组俘获,在显示过滤筛选说明处输入“http”
实验结果:
实验六:跟踪DNS
- 以管理员身份进入Dos环境,用ipconfig /flushdns清空主机上DNS缓存
- 启动浏览器,将浏览器的缓存清空
- 启动Ethereal分组俘获器,在显示过滤筛选说明处输入“ip.addr==10.236.134.77”
- 开始Ethereal分组俘获
- 在浏览器的地址栏中输入:http://www.ietf.org
- 停止分组俘获
实验结果:
实验七
1.开始Ethereal分组俘获。
2.在DOS上执行命令:nslookup www.mit.edu。
3.停止分组俘获。
实验结果:
实验八
重复上面的实验,只是将命令替换为:nslookup –type=NS mit.edu
实验九
重复上面的实验,只是将命令替换为:nslookup www.aiit.or.kr bitsy.mit.edu
结果如下:
实验结果
实验一结果
1.你的浏览器运行的是HTTP1.0,还是HTTP1.1?你所访问的服务器所运行的HTTP版本号是多少?
我的浏览器和服务器所运行的HTTP的版本都是HTTP1.1
在报文里找到如下字段:
2.你的浏览器向服务器指出它能接收何种语言版本的对象?
zh-CN
在报文里找到如下字段:
3. 你的计算机的IP地址是多少?服务器gaia.cs.umass.edu的IP地址是多少?
我的IP是10.236.134.77 服务器的IP是128.119.245.12
4.从服务器向你的浏览器返回的状态代码是多少?
200
5.你从服务器上所获取的HTML文件的最后修改时间是多少?
6.返回到你的浏览器的内容一共多少字节?
126字节
实验二结果
7.分析你的浏览器向服务器发出的第一个HTTP GET请求的内容,在该请求报文中,是否有一行是:IF-MODIFIED-SINCE?
没有
8.分析服务器响应报文的内容,服务器是否明确返回了文件的内容?如何获知?
明确返回了
371字节,内容如下
9.分析你的浏览器向服务器发出的第二个“HTTP GET”请求,在该请求报文中是否有一行是:IF-MODIFIED-SINCE?如果有,在该首部行后面跟着的信息是什么?
浏览器再次请求服务器的时候,包含if-Modified-Since:,后面跟着的信息是在缓存中获得的最后修改时间。
10.服务器对第二个HTTP GET请求的响应中的HTTP状态代码是多少?服务器是否明确返回了文件的内容?请解释。
状态码是:304
没有返回,因为服务器把收到的if-Modified-Since和Last-Modified做对比,一致,说明没有被修改,就返回304浏览器只需要从缓存中获取信息即可。
实验三实验结果
11.你的浏览器一共发出了多少个HTTP GET请求?
一个 GET请求
- 承载这一个HTTP响应报文一共需要多少个data-containing TCP报文段?
四个 如下:
13.与这个HTTP GET请求相对应的响应报文的状态代码和状态短语是什么? 200 OK
实验四实验结果:
14.你的浏览器一共发出了多少个HTTP GET请求?这些请求被发送到的目的地的IP地址是多少?
发出了三个HTTP GET请求,目的地址的IP:128.119.245.12
;128.119.245.12;159.182.31.51
15.浏览器在下载这两个图片时,是串行下载还是并行下载?请解释。
串行下载,看下图所示抓到的包,都是一个HTTP GET一个响应报文再下一个HTTP GET…按先后排序的,所以是串行。
实验五结果
16.对于浏览器发出的最初的HTTP GET请求,服务器的响应是什么(状态代码和状态短语)?
状态码:401 状态短语:Unauthorized
- 当浏览器发出第二个HTTP GET请求时,在HTTP GET报文中包含了哪些新的字段?
Authorization和Credentials
实验六跟踪DNS结果
(18)定位到DNS查询报文和查询响应报文,这两种报文的发送是基于UDP还是基于TCP的?
都是基于UDP的
(19)DNS查询报文的目的端口号是多少?DNS查询响应报文的源端口号是多少?des-port:53 src-port:51036
(20)DNS查询报文发送的目的地的IP地址是多少?利用ipconfig命令(ipconfig/all)决定你主机的本地DNS服务器的IP地址。这两个地指相同吗?
DNS报文发送的目的地的IP:211.137.191.26
发现相同
(21)检查DNS查询报文,它是哪一类型的DNS查询?该查询报文中包含“answers”吗?
两个查询报文,一个是A类查询(IPv4),一个是AAAA类查询(IPv6),查询报文不包含“answers”
(21)检查DNS查询响应报文,其中提供了多少个“answers”?每个answers包含哪些内容?提供了4个,具体包含如下:
(22)考虑一下你的主机发送的subsequent(并发)TCP SYN分组, SYN分组的目的IP地址是否与在DNS查询响应报文中提供的某个IP地址相对应?
看这个AAAA类的DNS查询响应报文中的地址,可以和SYN分组的目的地址对应
如下:
(24)打开的WEB页中包含图片,在获取每一个图片之前,你的主机发出新的DNS查询了吗?
没有
实验七实验结果
(25)DNS查询报文的目的端口号是多少?DNS查询响应报文的源端口号是多少?
DNS查询报文的目的端口号和DNS查询响应报文的源端口号都是 53
(26)DNS查询报文发送的目的地的IP地址是多少?这个地址是你的默认本地DNS服务器的地址吗?
目的IP
是默认的本地DNS服务器的地址,因为抓包前没有清DNS缓存,上个实验访问过一次了
(27)检查DNS查询报文,它是哪一类型的DNS查询?该查询报文中包含“answers”吗?
查询报文有A类的也有AAAA类的,查询报文不包含answers
(28)检查DNS查询响应报文,其中提供了多少个“answers”?每个answers包含哪些内容?提供了三个answers,内容如下:
实验八实验结果
(29)DNS查询报文发送的目的地的IP地址是多少?这个地址是你的默认本地DNS服务器的地址吗?
目的IP是211.137.191.26是本地DNS服务器地址
(30)检查DNS查询报文,它是哪一类型的DNS查询?该查询报文中包含“answers”吗?NS类的,不包含
(31)检查DNS查询响应报文,其中响应报文提供了哪些MIT名称服务器?响应报文提供这些MIT名称服务器的IP地址了吗?如下图,没有提供IP
实验九实验结果
(32)DNS查询报文发送的目的地的IP地址是多少?这个地址是你的默认本地DNS服务器的地址吗?如果不是,这个IP地址相当于什么?DNS查询报文发送的目的地的IP见上图
本地DNS服务器:
从抓到的包来看DNS查询报文是先向三个本地DNS服务器发,但是由于抓包前清空了本地DNS缓存,所以返回的响应报文里面没有answers,然后,发现DNS查询报文又向IP为18.72.0.3服务器发包。
(33)检查DNS查询报文,它是哪一类型的DNS查询?该查询报文中包含“answers”吗?
向本地DNS服务器发送的DNS查询报文有A类的也有AAAA类的,不包含answers。向18.72.0.3发送的DNS查询报文为PTR类的还有A类和AAAA类的,不包含answers。
(34)检查DNS查询响应报文,其中提供了多少个“answers”?每个answers包含哪些内容?
有一个answers 内容如下:
实验当中问题及解决方法
1、不明白什么是DNS的查询类型
解决:百度
DNS的查询类型有20种,比较常用的查询类型有有A,NS,CNAME,PTR,MX等五种类型。
1)A:由DNS域名到IP地址的查询,即正向查询,编程中由函数gethostbyname实现。
2)PTR:由IP到域名的查询,即逆向查询,编程中由函数gethostbyaddr。
3)NS:查询解析的名字服务器(Name server)。
4)CNAME:查询DNS的别名。
5)MX:邮箱服务器查询。
2. 在做实验八实验九的时候,总是出现DNS请求超时解析不不来的问题。如下:
解决方法:更换DNS服务器
Ipconfig /all 查到DNS服务器有四个——2001:da8:7007:107::66
;2001:da8:7007:107::77;211.137.191.26;202.102.154.3
每个试一遍发现有一个好用的。
4. 安装java虚拟机,运行TCPClient和TCPServer和UDP Client和UDP Server进行相应的捕包,出现了下面的报错;
原因是看TCP Server代码,服务器端口是一直开着的,客户端收到大写转小写就把端口关了,如果重复运行TCPServer.java的话会报错,因为端口被重复多次使用,解决方法就是换一个端口号。
5. 运行TCPClient和TCPServer和UDP Client和UDP Server进行相应的捕包,发现用校园网不行,得用自己手机的热点才能捕到包
6. 如果运行TCPClient和TCPServer在同一个主机上是捕不到包的,应该是进程间相互通信,不通过网络。
这篇关于计算机网络:利用ethereal分别对TCP套接字的实现及UDP套接字的实现捕包分析 ;利用ethereal分析协议HTTP、FTP和DNS的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!