当前位置:首页 » 网络连接 » 计算机网络http捕获实验
扩展阅读
万里通网络设置 2024-11-28 15:43:26
网络连接共享被启用时 2024-11-28 15:29:45
原装平板电脑多少钱 2024-11-28 15:19:04

计算机网络http捕获实验

发布时间: 2024-05-13 05:52:35

1. 计算机网络-Http/Https基础

一、前言

主要包括:1、http基础:TCP/IP,TCP协议,IP协议,DNS协议,URI与URL;

2、http协议:http报文,http方法,http状态码,常见问题

名词解释:

(1)HTTP(HyperText Transfer Protocol)超文本传输协议

(2)URL(Uniform Resource Locator)统一资源定位符

(3)URI(Uniform Resource Identifer)统一资源标识符

(4)TCP(Transmission Control Protocol)传输控制协议

(5)IP(Internet Protocol)网际协议

(6)UDP(User Data Protocol)用户数据报协议

(7)MAC地址(Media Access Control)媒体访问控制地址/物理地址/硬件地址

(8)ARP协议(Address Resolution Protocol)地址解析协议

二、HTTP基础

2.1TCP/IP

TCP/IP是互联网相关的各类协议族的总称,而http是TCP/IP协议族中的一个子集。

TCP/IP协议族可以分为四层:

(1)应用层:决定向用户提供 应用服务时通信的活动 ,TCP/IP协议族内预存了各类通用的应用服务,如:http,ftp,dns等。

(2)传输层:提供处于网络连接中的两台计算机之间的 数据传输 ,包含两个协议:tcp,udp。

(3)网络层:用来处理 网络上流动的数据包 ,在众多的选项中选择一条传输线路,将数据包传送到对方计算机。包含的协议:IP协议。

(4)数据链路层:用来 处理连接网络的硬件 部分。

2.2 IP协议

IP协议属于网络层,负责处理网络上流动的数据包。为了保证传送成功,需要满足各类条件,其中两个重要的条件时IP地址和MAC地址。

(1)IP地址,指明了节点被分配到的地址;

(2)MAC地址,指网卡所属的固定地址;

(3)IP地址可以和MAC地址进行配对,IP地址可以变换,但是MAC地址基本上不会更改;

(4)使用ARP地址解析协议可以根据通信方的IP地址反查出对应的MAC地址

2.3 TCP协议

TCP协议位于传输层,提供 可靠的字节流服务 (也就是说,将大数据分隔成以报文段为单位的数据包进行管理)。

为了确保数据准确无误的到达目标处,TCP协议通常采用三次握手策略。

如果在握手的过程中某一个阶段莫名的 中断 了, TCP协议会再次以相同的顺序发送相同的数据包

2.4DNS协议

DNS协议位于应用层,提供域名到IP地址之间的解析服务。

2.5 URI和URL

URI是某一个协议方案表示的 资源的定位标识符 ,协议方案是指访问资源所使用的协议类型,如:http,ftp,file等。

URL用字符串标识某一个互联网资源 ,而 URL表示资源的地点,URL是URI的子集。

2.6 HTTP协议

HTTP协议用于客户端和服务器端之间的通信。请求必定由客户端发出,而服务器端回复响应。

HTTP协议不保存状态,为 无状态协议 。这是为了更快的处理大量事务,确保协议的可伸缩性而特意设计的。

但是随着Web的不断发展,这一特性也引发了一些问题,如:如何保持登录状态、如何记录用户信息等,为了解决这一问题,引入了Cookie技术。

2.6.1常见状态码

2XX 成功

200 OK,表示从客户端发来的请求在服务器端被正确处理

204 No content,表示请求成功,但响应报文不含实体的主体部分

205 Reset Content,表示请求成功,但响应报文不含实体的主体部分,但是与 204 响应不同在于要求请求方重置内容

206 Partial Content,进行范围请求

3XX 重定向

301 moved permanently,永久性重定向,表示资源已被分配了新的 URL

302 found,临时性重定向,表示资源临时被分配了新的 URL

303 see other,表示资源存在着另一个 URL,应使用 GET 方法获取资源

304 not modified,表示服务器允许访问资源,但因发生请求未满足条件的情况

307 temporary redirect,临时重定向,和302含义类似,但是期望客户端保持请求方法不变向新的地址发出请求

4XX 客户端错误

400 bad request,请求报文存在语法错误

401 unauthorized,表示发送的请求需要有通过 HTTP 认证的认证信息

403 forbidden,表示对请求资源的访问被服务器拒绝

404 not found,表示在服务器上没有找到请求的资源

5XX 服务器错误

500 internal sever error,表示服务器端在执行请求时发生了错误

501 Not Implemented,表示服务器不支持当前请求所需要的某个功能

503 service unavailable,表明服务器暂时处于超负载或正在停机维护,无法处理请求

2.6.2HTTP报文头部(HTTP首部)

| 通用字段 | ** 作用** |
| Cache-Control | 控制缓存的行为 |
| Connection | 浏览器想要优先使用的连接类型,比如:keep-alive |
| Date | 创建报文时间 |
| Pragma | 报文指令 |
| Via | 代理服务器相关信息 |
| Transfer-Encoding | 传输编码方式 |
| Upgrade | 要求客户端升级协议 |
| Warning | 在内容中可能存在错误 |

| ** 请求字段** | ** 作用** |
| Accept | 能正确接收的媒体类型 |
| Accept-Charset | 能正确接收的字符集 |
| Accept-Encoding | 能正确接收的编码格式列表 |
| Accept-Language | 能正确接收的语言列表 |
| Expect | 期待服务端的指定行为 |
| From | 请求方邮箱地址 |
| Host | 服务器的域名 |
| If-Match | 两端资源标记比较 |
| If-Modified-Since | 本地资源未修改返回 304(比较时间) |
| If-None-Match | 本地资源未修改返回 304(比较标记) |
| User-Agent | 客户端信息 |
| Max-Forwards | 限制可被代理及网关转发的次数 |
| Proxy-Authorization | 向代理服务器发送验证信息 |
| Range | 请求某个内容的一部分 |

| Referer | 示浏览器所访问的前一个页面 |
| TE | 传输编码方式 |

| 响应字段 | 作用 |
| Accept-Ranges | 是否支持某些种类的范围 |
| Age | 资源在代理缓存中存在的时间 |
| ETag | 资源标识 |
| Location | 客户端重定向到某个 URL |
| Proxy-Authenticate | 向代理服务器发送验证信息 |
| Server | 服务器名字 |
| WWW-Authenticate | 获取资源需要的验证信息 |

| 实体字段 | 作用 |
| Allow | 资源的正确请求方式 |
| Content-Encoding | 内容的编码格式 |
| Content-Language | 内容使用的语言 |
| Content-Length | request body 长度 |
| Content-Location | 返回数据的备用地址 |
| Content-MD5 | Base64加密格式的内容 MD5检验值 |
| Content-Range | 内容的位置范围 |
| Content-Type | 内容的媒体类型 |
| Expires | 内容的过期时间 |
| Last_modified | 内容的最后修改时间 |

2.6.3 HTTP方法

三****、HTTPS基础

HTTPS 还是通过了 HTTP 来传输信息,但是信息通过 TLS 协议进行了加密。

3.1 TLS

TLS 协议位于传输层之上,应用层之下。首次进行 TLS 协议传输需要两个 RTT ,接下来可以通过 Session Resumption 减少到一个 RTT。(RTT表示发送端发送数据到接收到对端数据所需的往返时间)

在 TLS 中使用了两种加密技术,分别为:对称加密和非对称加密。

对称加密:

对称加密就是两边拥有相同的秘钥,两边都知道如何将密文加密解密。

非对称加密:

有公钥私钥之分,公钥所有人都可以知道,可以将数据用公钥加密,但是将数据解密必须使用私钥解密,私钥只有分发公钥的一方才知道。

3.2 TLS 握手过程如下图:

(1)客户端发送一个随机值,需要的协议和加密方式

(2)服务端收到客户端的随机值,自己也产生一个随机值,并根据客户端需求的协议和加密方式来使用对应的方式,发送自己的证书(如果需要验证客户端证书需要说明)

(3)客户端收到服务端的证书并验证是否有效,验证通过会再生成一个随机值,通过服务端证书的公钥去加密这个随机值并发送给服务端,如果服务端需要验证客户端证书的话会附带证书

(4)服务端收到加密过的随机值并使用私钥解密获得第三个随机值,这时候两端都拥有了三个随机值,可以通过这三个随机值按照之前约定的加密方式生成密钥,接下来的通信就可以通过该密钥来加密解密

通过以上步骤可知,在 TLS 握手阶段,两端使用非对称加密的方式来通信,但是因为非对称加密损耗的性能比对称加密大,所以在 正式传输数据 时,两端使用 对称加密 的方式通信。

PS:以上说明的都是 TLS 1.2 协议的握手情况 ,在 1.3 协议中,首次建立连接只需要一个 RTT,后面恢复连接不需要 RTT 了。

四、GET和POST的区别

从技术上说:

1、get请求能缓存,post不能;

2、post相对于get来说,安全一点点,因为get请求都会包含在URL里,会被浏览器保存历史记录,post不会,但是在抓包的情况是一样的。

3、post可以request body来传递比get更多的数据,get米有这个技术。

4、url长度有限制,会影响get请求,长度限制是浏览器限制规定的,不是rfc(互联网通信协议)规定的。

5、post支持更多的 编码类型 且不对 数据类型 限制

2. 在计算机网络中怎样抓包

计算机网络里抓包就是将网络传输发送与接收的数据包进行截获、重发、编辑、转存等操作,也用来检查网络安全等等。
以Sniffer软件为例说明:数据在网络上是以很小的称为帧(Frame)的单位传输的,帧由几部分组成,不同的部分执行不同的功能。帧通过特定的称为网络驱动程序的软件进行成型,然后通过网卡发送到网线上,通过网线到达它们的目的机器,在目的机器的一端执行相反的过程。接收端机器的以太网卡捕获到这些帧,并告诉操作系统帧已到达,然后对其进行存储。就是在这个传输和接收的过程中,嗅探器会带来安全方面的问题。每一个在局域网(LAN)上的工作站都有其硬件地址,这些地址惟一地表示了网络上的机器(这一点与Internet地址系统比较相似)。当用户发送一个数据包时,如果为广播包,则可达到局域网中的所有机器,如果为单播包,则只能到达处于同一碰撞域中的机器。在一般情况下,网络上所有的机器都可以“听”到通过的流量,但对不属于自己的数据包则不予响应(换句话说,工作站A不会捕获属于工作站B的数据,而是简单地忽略这些数据)。如果某个工作站的网络接口处于混杂模式(关于混杂模式的概念会在后面解释),那么它就可以捕获网络上所有的数据包和帧。

3. wireshark镐庝箞鎶揿寘

wireshark鎶揿寘鏂规硶濡备笅锛

镎崭綔璁惧囷细镵旀兂绗旇版湰鐢佃剳銆

璁惧囩郴缁燂细Win10绯荤粺銆

镎崭綔杞浠讹细wireshark 2.6.5銆

1銆佸湪鐢佃剳涓锛屾墦寮wireshark杞浠躲

4. 计算机网络——应用层-Web&HTTP

计算机网络系列博文——目录

20世纪90年代初
因特网应用

Web应用的组成

由对象组成。对象是一个文件,如HTML文件,JPEG图像,Java程序,视频片段等。
对象可通过一个URL地址寻址。
Web页面常由一个HTML基本文件和多个引用对象构成。

URL(Uniform Resoure Locator):统一资源定位器 RFC1738

用以寻址Web对象
由一个存放对象的服务器主机名和对象路径名构成。

HTTP 由客户端程序和服务端程序实现,二者通过交换HTTP报文会话。
HTTP规范定义了HTTP客户端和服务端之间的通信协议。

Web浏览器实现HTTP客户端,请求、接收、展示Web对象
Web服务器实现HTTP服务端,响应客户的请求,发送对象

HTTP使用TCP作为支撑运输层协议。

端口:80

无状态协议 服务器不保存关于客户的任何信息
服务器向客户发送被请求的文件,而不存储任何关于客户的状态信息。

往返时间(Round-Trip Time,RTT)
一个短分组从客户到服务器然后再返回客户所花费的时间。

某客户和服务器的一次会话中,每个请求/响应对通过一个单独的TCP连接传输

HTTP 1.0版本使用非持续性连接

对多个待获得的web对象,客户端一次只请求一个对象,待前一个对象接收完毕后再发送对下一个对象的请求。

时间分析

浏览器通常支持并行的TCP连接。并行TCP连接数通常为5~10个。
对多个待获得的web对象,客户端一次可同时建立多个TCP连接,以同时请求多个web对象。
时间分析

某客户和服务器的一次会话中,所有请求/响应对经同一TCP连接传输

HTTP 1.1版本在默认方式下采用持续连接,但也可由客户端/服务器配置为非持续连接。

客户端只有收到前一个响应后才发送新的请求
可理解为同个TCP内的串行

时间分析

客户端只要遇到一个引用对象就尽快发出请求
可理解为同个TCP内的并行
HTTP 1.1的默认选项

时间分析

TCP 三次握手
1.客户向服务器发送一个小TCP报文段;
2.服务器用一个小TCP报文段做出确认和响应;
3.客户向服务器返回确认和一个HTTP请求报文;
4.服务器返回相应HTML文件;

HTTP规范
RFC 1945 , RFC 2616

用ASCII文本书写
HTTP协议有两类消息,请求消息(request)和响应消息(response)

请求行 HTTP请求报文的第一行

方法

首部行 请求行后继的其它行,包含一些会话信息

空行 回车换行,分隔首部行和实体体

实体体(entity body)
GET方法下实体体为空
POST方法下实体体包含表单信息

状态行

常见状态码

首部行

空行

实体体
包含了所请求的对象

HTTP是无状态协议,但cookie技术允许服务器识别用户
cookie在无状态的HTTP之上建立一个用户会话层

参见 [RFC 6265]

cookie组件

cookie技术的争议在于它可能泄露用户的隐私

代表原Web服务器来响应HTTP请求的网络实体

Web缓冲器通常由ISP购买并安装

允许缓存器证实其缓存的副本是新的。
如果缓存器有web对象最新的版本,则初始服务器不需要向缓存器发送该web对象

在HTTP请求消息中声明所持有版本的日期
If-modified-since: <date>

如果缓存的版本是最新的,则响应消息中不包含对象
HTTP/1.0 304 Not Modified

内容分发网络(Content Distribution Network,CDN)
基于缓存器技术,CDN公司在因特网上安装许多地理上分散的缓存器,使得大流量本地化。
有共享CDN(Akamai,Limelight),专用CDN(谷歌,微软)

5. 如何用python爬取网站数据

这里简单介绍一下吧,以抓取网站静态、动态2种数据为慧返拍例,实验环境win10+python3.6+pycharm5.0,主要内容如下:

抓取网站静态数据(数据在网页源码中):以糗事网络网站数据为例

1.这里假设我们抓取的数据如下,主要包括用户昵称、内容、好笑数和评论数这4个字段,如下:

对应的网页源码如下,包含我们所需要的数据:

2.对应网页结构,主要代码如下,很简单,主要用到requests+BeautifulSoup,其中requests用于请求页面,BeautifulSoup用于解析页面:

程序运行截图如下,已经成功爬取到数据:

抓取网站动态数据(数据不在网页源码中,json等文件中):以人人贷网站数据为例

1.这里假设我们爬取的是债券数据,主要包括年利率世型、借款标题、期限、金额和进度这5个字段信息,截图如下:

打开网页源码中,可以发现数据不在网页源码中,按F12抓包分析时,才发现在一个json文件中,如下:

2.获取到json文件的url后,我们就可以爬取对应数据了,这里使用的包与上面类似,因为是json文件,所以还用了json这个包(解析json),主要内容如下:

程序运行截图如下,前羡已经成功抓取到数据:

至此,这里就介绍完了这2种数据的抓取,包括静态数据和动态数据。总的来说,这2个示例不难,都是入门级别的爬虫,网页结构也比较简单,最重要的还是要会进行抓包分析,对页面进行分析提取,后期熟悉后,可以借助scrapy这个框架进行数据的爬取,可以更方便一些,效率更高,当然,如果爬取的页面比较复杂,像验证码、加密等,这时候就需要认真分析了,网上也有一些教程可供参考,感兴趣的可以搜一下,希望以上分享的内容能对你有所帮助吧。