ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

网络抓包与HTTP协议

2021-11-06 19:30:14  阅读:146  来源: 互联网

标签:HTTP 请求 网络 TCP 服务器 连接 抓包


目录

一、HTTP协议

(1)HTTP协议概述

HTTP是一个客户端终端(用户)和服务器端(网站)请求和应答的标准(TCP)。通过使用网页浏览器、网络爬虫或者其它的工具,客户端发起一个HTTP请求到服务器上指定端口(默认端口为80)。我们称这个客户端为用户代理程序(user agent)。应答的服务器上存储着一些资源,比如HTML文件和图像。我们称这个应答服务器为源服务器(origin server)。在用户代理和源服务器中间可能存在多个“中间层”,比如代理服务器、网关或者隧道(tunnel)。

尽管TCP/IP协议是互联网上最流行的应用,HTTP协议中,并没有规定必须使用它或它支持的层。事实上,HTTP可以在任何互联网协议上,或其他网络上实现。HTTP假定其下层协议提供可靠的传输。因此,任何能够提供这种保证的协议都可以被其使用。因此也就是其在TCP/IP协议族使用TCP作为其传输层。

通常,由HTTP客户端发起一个请求,创建一个到服务器指定端口(默认是80端口)的TCP连接。HTTP服务器则在那个端口监听客户端的请求。一旦收到请求,服务器会向客户端返回一个状态,比如"HTTP/1.1 200 OK",以及返回的内容,如请求的文件、错误消息、或者其它信息。

(2)工作原理

HTTP是基于客户/服务器模式,且面向连接的。典型的HTTP事务处理有如下的过程:
(1)客户与服务器建立连接;
(2)客户向服务器提出请求;
(3)服务器接受请求,并根据请求返回相应的文件作为应答;
(4)客户与服务器关闭连接。
客户与服务器之间的HTTP连接是一种一次性连接,它限制每次连接只处理一个请求,当服务器返回本次请求的应答后便立即关闭连接,下次请求再重新建立连接。这种一次性连接主要考虑到WWW服务器面向的是Internet中成千上万个用户,且只能提供有限个连接,故服务器不会让一个连接处于等待状态,及时地释放连接可以大大提高服务器的执行效率。
HTTP是一种无状态协议,即服务器不保留与客户交易时的任何状态。这就大大减轻了服务器记忆负担,从而保持较快的响应速度。HTTP是一种面向对象的协议。允许传送任意类型的数据对象。它通过数据类型和长度来标识所传送的数据内容和大小,并允许对数据进行压缩传送。当用户在一个HTML文档中定义了一个超文本链后,浏览器将通过TCP/IP协议与指定的服务器建立连接。
HTTP支持持久连接,在HTTP / 0.9和1.0中,连接在单个请求/响应对之后关闭。在HTTP / 1.1中,引入了保持活动机制,其中连接可以重用于多个请求。这样的持久性连接可以明显减少请求延迟,因为在发送第一个请求之后,客户端不需要重新协商TCP 3-Way-Handshake连接。另一个积极的副作用是,通常,由于TCP的缓慢启动机制,连接随着时间的推移而变得更快。
该协议的1.1版还对HTTP / 1.0进行了带宽优化改进。例如,HTTP / 1.1引入了分块传输编码,以允许流传输而不是缓冲持久连接上的内容。HTTP流水线进一步减少了延迟时间,允许客户端在等待每个响应之前发送多个请求。协议的另一项附加功能是字节服务,即服务器仅传输客户端明确请求的资源部分。
从技术上讲是客户在一个特定的TCP端口(端口号一般为80)上打开一个套接字。如果服务器一直在这个周知的端口上倾听连接,则该连接便会建立起来。然后客户通过该连接发送一个包含请求方法的请求块。
HTTP规范定义了9种请求方法,每种请求方法规定了客户和服务器之间不同的信息交换方式,常用的请求方法是GET和POST。服务器将根据客户请求完成相应操作,并以应答块形式返回给客户,最后关闭连接。

(3)工作过程

一次HTTP操作称为一个事务,其工作整个过程如下:
1 ) 、地址解析

如用客户端浏览器请求这个页面:http://localhost.com:8080/index.htm

从中分解出协议名、主机名、端口、对象路径等部分,对于我们的这个地址,解析得到的结果如下:
协议名:http
主机名:localhost.com
端口:8080
对象路径:/index.htm

在这一步,需要域名系统DNS解析域名localhost.com,得主机的IP地址。

2)、封装HTTP请求数据包

把以上部分结合本机自己的信息,封装成一个HTTP请求数据包

3)封装成TCP包,建立TCP连接(TCP的三次握手)

在HTTP工作开始之前,客户机(Web浏览器)首先要通过网络与服务器建立连接,该连接是通过TCP来完成的,该协议与IP协议共同构建Internet,即著名的TCP/IP协议族,因此Internet又被称作是TCP/IP网络。HTTP是比TCP更高层次的应用层协议,根据规则,只有低层协议建立之后才能,才能进行更层协议的连接,因此,首先要建立TCP连接,一般TCP连接的端口号是80。这里是8080端口

4)客户机发送请求命令

建立连接后,客户机发送一个请求给服务器,请求方式的格式为:统一资源标识符(URL)、协议版本号,后边是MIME信息包括请求修饰符、客户机信息和可内容。

5)服务器响应

服务器接到请求后,给予相应的响应信息,其格式为一个状态行,包括信息的协议版本号、一个成功或错误的代码,后边是MIME信息包括服务器信息、实体信息和可能的内容。

实体消息是服务器向浏览器发送头信息后,它会发送一个空白行来表示头信息的发送到此为结束,接着,它就以Content-Type应答头信息所描述的格式发送用户所请求的实际数据

6)服务器关闭TCP连接

TCP连接在发送后将仍然保持打开状态,于是,浏览器可以继续通过相同的连接发送请求。保持连接节省了为每个请求建立新连接所需的时间,还节约了网络带宽。

(4)HTTP状态码

所有HTTP响应的第一行都是状态行,依次是当前HTTP版本号,3位数字组成的状态代码,以及描述状态的短语,彼此由空格分隔。

状态代码的第一个数字代表当前响应的类型:

1xx消息——请求已被服务器接收,继续处理
2xx成功——请求已成功被服务器接收、理解、并接受
3xx重定向——需要后续操作才能完成这一请求
4xx请求错误——请求含有词法错误或者无法被执行
5xx服务器错误——服务器在处理某个正确请求时发生错误
虽然 RFC 2616 中已经推荐了描述状态的短语,例如"200 OK",“404 Not Found”,但是WEB开发者仍然能够自行决定采用何种短语,用以显示本地化的状态描述或者自定义信息。
在这里插入图片描述

二、网络抓包

(1)抓包作用

通过对网络上传输的数据进行抓取,可以对其进行分析,对于软件的Debug很大的帮助。当然也可以通过抓取用户发送的涉及用户名和密码的数据包来获取用户的密码。
(1)网络通讯的真实内容
(2)网络故障分析
(3)程序网络接口分析
(4)木马通讯数据内容

(2)简介

抓包是指对网络传输中发送与接收的数据包进行拦截、重发、编辑和转存的操作。
在开发网络爬虫时,给定URL,开发者必须清楚客户端是如何向服务器发送请求的,以及客户端发出请求后服务器返回的数据是什么。只有了解这些内容,开发者才能在程序中拼接URL,针对服务返回的数据类型制定具体的解析策略。因此,网络抓包是实现网络爬虫必不可少的技能之一,也是网络爬虫开发的起点。

(3)使用情境

对于很多初学者而言,由于不了解网络抓包,而直接去请求某个URL,可能导致无法获取自己想要的数据。在此,对网络抓包的使用情境做如下说明。

直接请求URL能够获得数据时,可以不用进行网络抓包分析。但当使用程序直接请求URL无法找到网页中的数据时(多为JSON),则需要采取网络抓包措施,获取数据对应的真实请求URL。
执行表单请求时,需要采取网络抓包措施,如需模拟登录网站才能获得的数据。基于网络抓包,可以捕获表单请求提交的详细参数(如用户名、密码等)。
将捕获的请求信息添加到程序中,如利用网络抓包获取一些浏览器请求网页的头信息和请求方法等。

(4)常用抓包工具

1.httpwatch:
httpwatch与IE和firefox浏览器集成,但不支持chrome;httpwatch界面清晰直观,发送请求后可以快速简单的查看Cookies, Headers, Query Strings and POST data,能够通过页面分组处理多页面场景。

2.Fiddler:
Fiddler是一个独立的应用,可以调试PC、Mac或Linux系统和移动设备 的之间的通信,支持大部分框架如java、.net、java、Ruby,需要设置代理

3.wireshark
wireshark是一款专业的通过抓取网络数据包进行网络检测,网络协议分析工具,可实时监测网络传输数据,全面透视整个网络的动态信息。

4.firebug
Firebug是firefox下的一个扩展,它除了能进行网络分析还能够调试所有网站语言,如js、Html、Css等,支持各种浏览器如IE、Firefox、Opera,、Safari。

三、Wireshark抓包

(1)Wireshark简介

Wireshark(前称Ethereal)是应用最广泛的网络数据包分析软件之一,功能十分强大。它可以实时捕获并详细显示各种类型数据包,可以通过多种方式过滤数据包,还可以进行多种统计分析。 [2] Wireshark是一个网络抓包软件,网络抓包分析软件的主要功能是通过抓取网络数据包,然后最大限度分析出网络数据包的详细的资料。

(2)使用wireshark抓包

1.打开wireshark,选择WLAN,捕获–>选项
在这里插入图片描述
2.抓包
在这里插入图片描述

(3)抓包分析

1.http发送get请求是在tcp进行三次握手之后,所以在过滤器(红框内)输入http来筛选信息,就选取其中一次来观察三次握手的过程
在这里插入图片描述
2.对着刚刚选取的那一行记录,鼠标右键,点击追踪流里的tcp流
在这里插入图片描述
在这里插入图片描述

3.然后这条封包上面就会出现三条tcp
在这里插入图片描述
4.第一次请求
在这里插入图片描述
5.第二次请求
在这里插入图片描述
6.第三次请求
在这里插入图片描述

(4)用Fiddler查看返回数据

1.和风天气的数据,他会返回
在这里插入图片描述
2.在Fillder里查看
在这里插入图片描述

四、总结

通过这次实验,知道了怎么简单的抓包,同时也对计算机网络内的各种协议更熟悉了,TCP的三次握手的过程,以及三次握手发送的请求是什么都有一个较为清楚的认知了。还有很多知识不是很了解,具体过程不是很清晰。

五、参考链接

百度百科

HTTP协议超级详解

HTTP协议:工作原理

什么是抓包

2.7 网络抓包

标签:HTTP,请求,网络,TCP,服务器,连接,抓包
来源: https://blog.csdn.net/m0_49297422/article/details/121182328

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有