手机版

http协议详解(超详细)

时间:2021-10-18 来源:互联网 编辑:宝哥软件园 浏览:

Http学习系列

1.基础概念篇

1.1 介绍

HTTP是超文本传输协议的缩写。它的发展是万维网联盟和互联网工程任务组(IETF)合作的结果,最终发布了一系列RFC,RFC 1945定义了HTTP/1.0。最著名的是RFC 2616。RFC 2616定义了今天广泛使用的——HTTP 1.1版本。超文本传输协议是一种将超文本从万维网服务器传输到本地浏览器的传输协议。可以使浏览器更高效,减少网络传输。它不仅保证了计算机正确、快速地传输超文本文档,而且还确定了传输文档的哪一部分以及首先显示内容的哪一部分(例如,文本先于图形)。HTTP是应用层协议,由请求和响应组成,是标准的客户端-服务器模型。HTTP是一种无状态协议。

1.2 在TCP/IP协议栈中的位置

HTTP协议通常在TCP协议上承载,有时也在TLS或SSL协议层承载。这时,它就成了我们常说的HTTPS。如下图所示:

HTTP的默认端口号是80,HTTPS的默认端口号是443。

1.3 HTTP的请求响应模型

HTTP协议始终意味着客户端发起请求,服务器发回响应。见下图:

因此,HTTP协议的使用受到限制,当客户端没有发起请求时,服务器不可能向客户端推送消息。HTTP协议是无状态协议,这个请求和同一个客户端的最后一个请求没有对应关系。00-1010一个HTTP操作称为事务,其工作过程可以分为四个步骤:1)首先,客户端和服务器端需要建立连接。只需点击一个超链接,HTTP的工作就开始了。2)连接建立后,客户端以统一资源标识符(URL)和协议版本号的格式向服务器发送请求,后面是MIME信息,包括请求修饰符、客户端信息和可能的内容。3)服务器收到请求后,以状态行的形式给出相应的响应信息,包括信息的协议版本号和成功或错误的代码,后面是MIME信息,包括服务器信息、实体信息和可能的内容。4)客户端接收到的服务器返回的信息通过浏览器显示在用户的显示屏上,然后客户端与服务器断开连接。如果在上述过程的一个步骤中出现错误,错误信息将返回给客户端并在显示屏上输出。对于用户来说,这些过程都是由HTTP自己完成的。用户只需用鼠标点击,等待信息显示即可。00-1010打开Wireshark,选择工具栏上的“捕捉”-“选项”。界面选择如图1所示:

图1设置捕获选项。一般读者只需要选择顶部下拉框,选择合适的Device,然后点击“Capture Filter”,这里选择“HTTP TCP端口(80)”,然后点击上图中的“Start”即可开始抓取包。

图2选择捕获过滤器例如,在浏览器中打开http://image.baidu.com/,捕获如图3所示的包:

图3捕获包。在上图中,我们可以清楚地看到客户端浏览器(ip为192.168.2.33)与服务器的交互过程:1)No1:浏览器(192.168.2.33)向服务器(220.181.50.118)发送连接请求。这是TCP三次握手的第一步。这时从图中可以看出是SYN,seq:X (x=0)2)No2:服务器(220.181.50.118)响应浏览器(192.168.2.33)的请求,要求确认。此时为SYN,ACK,此时为seq:y(y (y为0))。这是三次握手的第二步;3)No3:浏览器(192.168.2.33)响应服务器(220.181.50.118)的确认,连接成功。Is: ACK,此时,seq: x1 (1)和ack: y1 (1)。这是三次握手的第三步。4)No4:浏览器(192.168.2.33)发送页面HTTP请求;5)No5:服务器(220.181.50.118)确认;6)No6:服务器(220.181.50.118)发送数据;7)No7:客户端浏览器(192.168.2.33)确认;8)No14:客户端(192.168.2.33)发送图片HTTP请求;9)No15:服务器(220.181.50.118)发送状态响应码200 OK……

1.4 工作流程

。每个标题字段由域名、冒号(:)和域值组成。域名不区分大小写。在域值之前可以添加任意数量的空格字符。标题字段可以扩展到多行。每行的开头,至少使用一个空格或制表符。在抓取包裹的图片中,打开No14可以看到如图4所示:

图4 HTTP请求消息的响应消息如图5所示:

图5 http状态响应信息

1.5 使用Wireshark抓TCP、http包

主机头字段指定了请求资源的Intenet主机和端口号,并且必须指示请求url的原始服务器或网关的位置。HTTP/1.1请求必须包含主机头字段,否则系统将返回状态代码400。图5:

1.6 头域

Referer头字段中主机的行为允许客户端指定请求uri的源资源地址,这可以允许服务器生成回退链表,该链表可用于登录和缓存优化。它还允许出于维护目的跟踪过时或不正确的连接。如果请求的uri没有自己的uri地址,则无法发送引用者。如果指定了部分uri地址,该地址应该是相对地址。在图4中,Referer行的内容是:

1.6.1 host头域

用户代理头字段的内容包含发送请求的用户的信息。在图4中,用户代理行的内容是:

00-1010 cache-control指定请求和响应遵循的缓存机制。在请求消息或响应消息中设置缓存控制不会修改另一个消息处理过程中的缓存处理。在请求中,缓存指令包括无缓存、无存储、最长期限、最长过期、最小刷新、仅当缓存,响应消息中的指令包括公共、私有、无缓存、无存储、无转换、必须更新、代理更新、最大。在图5中,报头字段是:

1.6.2 Referer头域

Date报头字段指示消息发送的时间,时间的描述格式由rfc822定义。例如,日期:mon,31dec200104:25:57gmt。当“日期”描述的时间代表世界标准时间时,在转换为当地时间时,需要知道用户的时区。在图5中,报头字段如下图所示:

1.6.3 User-Agent头域

1.6.4 Cache-Control头域

传输层的实际循环,它是在两个相互通信的应用程序之间建立的。连接头可能出现在http1.1、请求和响应头中,这意味着当客户端和服务器通信时如何处理长链接。在http1.1中,默认情况下,客户端和服务器都支持长链接。如果客户端使用http1.1协议但不想使用长链接,则需要指示connection的值为close在头部。如果服务器端不想支持长链接,也有必要在响应中明确声明connection的值为close。无论请求或响应的头中是否包含值为close的连接,都表示当天处理完请求后,当前使用的tcp链接将会断开。当客户端将来发出新请求时,它必须创建一个新的tcp链接。

1.6.5 Date头域

HTTP HTTP通信的基本单位,包括结构化的八位字节序列,通过连接进行传输。00-1010从客户端到服务器的请求消息包括应用于资源的方法、资源的标识符和协议的版本号。00-1010从服务器返回的消息包括HTTP协议的版本号、请求的状态(如“成功”或“未找到”)以及文档的MIME类型。00-1010 URIs识别的网络数据对象或服务。

1.7 HTTP的几个重要概念

数据资源或服务资源反射的特殊表示,可以包含在请求或响应消息中。实体包括实体标题信息和它自己的内容。

1.7.1连接:Connection

为发送请求而建立连接的应用程序。00-1010初始化请求的客户端。它们是浏览器、编辑器或其他用户工具。

1.7.2消息:Message

接受连接并向请求返回信息的应用程序。00-1010是给定资源可以驻留或创建的服务器。

1.7.3请求:Request

一个中间程序,它可以充当服务器或客户端,并为其他客户端建立请求。请求通过可能的翻译在内部或其他服务器上传递。在发送请求的信息之前,代理必须尽可能对其进行解释和重写。代理经常作为客户端通过防火墙的入口,也可以作为帮助应用,处理用户代理没有通过协议完成的请求。00-1010一台服务器作为其他服务器的中介。与代理不同,网关接受请求,就好像它是所请求资源的源服务器一样。发出请求的客户端没有意识到它正在与网关打交道。网关经常被用作通过防火墙的服务器入口,它也可以被用作协议翻译器来访问存储在非HTTP系统中的资源。00-1010是中继两个连接的中间程序。一旦被激活,该通道就被认为不属于HTTP通信,尽管该通道可能已经被HTTP请求初始化。当中继连接的两端都关闭时,信道消失。当门户必须存在或中介无法解释中继通信时,通常使用通道。反应信息的本地存储。

版权声明:http协议详解(超详细)是由宝哥软件园云端程序自动收集整理而来。如果本文侵犯了你的权益,请联系本站底部QQ或者邮箱删除。