计算机网络:利用ethereal分别对TCP套接字的实现及UDP套接字的实现捕包分析 ;利用ethereal分析协议HTTP、FTP和DNS

本文主要是介绍计算机网络:利用ethereal分别对TCP套接字的实现及UDP套接字的实现捕包分析 ;利用ethereal分析协议HTTP、FTP和DNS,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

目录

  • 实验内容
  • 实验目的
  • 实验预备知识
  • 实验过程描述
    • 实验一:HTTP GET/response交互
    • 实验二:Ethereal分组俘获
    • 实验三:获取长文件
    • 实验四:嵌有对象的HTML文档
    • 实验五:HTTP认证
    • 实验六:跟踪DNS
    • 实验七
    • 实验八
    • 实验九
  • 实验结果
    • 实验一结果
    • 实验二结果
    • 实验三实验结果
    • 实验五结果
    • 实验六跟踪DNS结果
    • 实验七实验结果
    • 实验八实验结果
    • 实验九实验结果
  • 实验当中问题及解决方法

实验内容

  1. 利用ethereal分别对TCP套接字的实现及UDP套接字的实现捕包分析
  2. 利用ethereal分析协议HTTP、FTP和DNS

实验目的

1、 分析HTTP协议
2、 分析DNS协议
3、 分析TCP套接字的实现及UDP套接字的实现

实验预备知识

  1. HTTP协议
  2. DNS协议
  3. TCP报文
  4. 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

  1. 以管理员身份进入Dos环境,用ipconfig /flushdns清空主机上DNS缓存
  2. 启动浏览器,将浏览器的缓存清空
  3. 启动Ethereal分组俘获器,在显示过滤筛选说明处输入“ip.addr==10.236.134.77”
  4. 开始Ethereal分组俘获
  5. 在浏览器的地址栏中输入:http://www.ietf.org
  6. 停止分组俘获

实验结果:
在这里插入图片描述

实验七

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请求

  1. 承载这一个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

  1. 当浏览器发出第二个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的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/552759

相关文章

C#实现将Excel表格转换为图片(JPG/ PNG)

《C#实现将Excel表格转换为图片(JPG/PNG)》Excel表格可能会因为不同设备或字体缺失等问题,导致格式错乱或数据显示异常,转换为图片后,能确保数据的排版等保持一致,下面我们看看如何使用C... 目录通过C# 转换Excel工作表到图片通过C# 转换指定单元格区域到图片知识扩展C# 将 Excel

Java字符串操作技巧之语法、示例与应用场景分析

《Java字符串操作技巧之语法、示例与应用场景分析》在Java算法题和日常开发中,字符串处理是必备的核心技能,本文全面梳理Java中字符串的常用操作语法,结合代码示例、应用场景和避坑指南,可快速掌握字... 目录引言1. 基础操作1.1 创建字符串1.2 获取长度1.3 访问字符2. 字符串处理2.1 子字

基于Java实现回调监听工具类

《基于Java实现回调监听工具类》这篇文章主要为大家详细介绍了如何基于Java实现一个回调监听工具类,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录监听接口类 Listenable实际用法打印结果首先,会用到 函数式接口 Consumer, 通过这个可以解耦回调方法,下面先写一个

使用Java将DOCX文档解析为Markdown文档的代码实现

《使用Java将DOCX文档解析为Markdown文档的代码实现》在现代文档处理中,Markdown(MD)因其简洁的语法和良好的可读性,逐渐成为开发者、技术写作者和内容创作者的首选格式,然而,许多文... 目录引言1. 工具和库介绍2. 安装依赖库3. 使用Apache POI解析DOCX文档4. 将解析

Qt中QGroupBox控件的实现

《Qt中QGroupBox控件的实现》QGroupBox是Qt框架中一个非常有用的控件,它主要用于组织和管理一组相关的控件,本文主要介绍了Qt中QGroupBox控件的实现,具有一定的参考价值,感兴趣... 目录引言一、基本属性二、常用方法2.1 构造函数 2.2 设置标题2.3 设置复选框模式2.4 是否

C++使用printf语句实现进制转换的示例代码

《C++使用printf语句实现进制转换的示例代码》在C语言中,printf函数可以直接实现部分进制转换功能,通过格式说明符(formatspecifier)快速输出不同进制的数值,下面给大家分享C+... 目录一、printf 原生支持的进制转换1. 十进制、八进制、十六进制转换2. 显示进制前缀3. 指

springboot整合阿里云百炼DeepSeek实现sse流式打印的操作方法

《springboot整合阿里云百炼DeepSeek实现sse流式打印的操作方法》:本文主要介绍springboot整合阿里云百炼DeepSeek实现sse流式打印,本文给大家介绍的非常详细,对大... 目录1.开通阿里云百炼,获取到key2.新建SpringBoot项目3.工具类4.启动类5.测试类6.测

pytorch自动求梯度autograd的实现

《pytorch自动求梯度autograd的实现》autograd是一个自动微分引擎,它可以自动计算张量的梯度,本文主要介绍了pytorch自动求梯度autograd的实现,具有一定的参考价值,感兴趣... autograd是pytorch构建神经网络的核心。在 PyTorch 中,结合以下代码例子,当你

SpringBoot集成Milvus实现数据增删改查功能

《SpringBoot集成Milvus实现数据增删改查功能》milvus支持的语言比较多,支持python,Java,Go,node等开发语言,本文主要介绍如何使用Java语言,采用springboo... 目录1、Milvus基本概念2、添加maven依赖3、配置yml文件4、创建MilvusClient

JS+HTML实现在线图片水印添加工具

《JS+HTML实现在线图片水印添加工具》在社交媒体和内容创作日益频繁的今天,如何保护原创内容、展示品牌身份成了一个不得不面对的问题,本文将实现一个完全基于HTML+CSS构建的现代化图片水印在线工具... 目录概述功能亮点使用方法技术解析延伸思考运行效果项目源码下载总结概述在社交媒体和内容创作日益频繁的