http协议介绍

    xiaoxiao2021-03-25  92

    http协议介绍

    1 介绍

    HTTP是Hyper Text Transfer Protocol(超文本传输协议)的缩写。它的发展是万维网协会(World Wide Web Consortium)和Internet工作小组IETF(Internet Engineering Task Force)合作的结果,(他们)最终发布了一系 列的RFC,RFC 1945定义了HTTP/1.0版本。其中最著名的就是RFC 2616。RFC 2616定义了今天普遍使用的一个版本——HTTP 1.1。

    HTTP协议是用于从WWW服务器传输超文本到本地浏览器的传送协议。它可以使浏览器更加高效,使网络传输减少。它不仅保证计算机正确快速地传输超文本文档,还确定传输文档中的哪一部分,以及哪部分内容首先显示(如文本先于图形)等。

    HTTP是一个应用层协议,由请求和响应构成,是一个标准的客户端服务器模型。HTTP是一个无状态的协议。

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

    HTTP协议通常承载于TCP协议之上,有时也承载于TLS或SSL协议层之上,这个时候,就成了我们常说的HTTPS。如图 1‑1所示:

    图 1‑1 HTTP协议在协议栈中的位置

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

    3 HTTP的请求响应模型

    HTTP协议永远都是客户端发起请求,服务器回送响应。见图 1‑2: 

    图 1‑2 HTTP的请求响应模型

    这样就限制了使用HTTP协议,无法实现在客户端没有发起请求的时候,服务器将消息推送给客户端。

    HTTP协议是一个无状态的协议,同一个客户端的这次请求和上次请求是没有对应关系。

    4 工作流程

    一次HTTP操作称为一个事务,其工作过程可分为四步:

    1)首先客户机与服务器需要建立连接。只要单击某个超级链接,HTTP的工作开始。

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

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

    4)客户端接收服务器所返回的信息通过浏览器显示在用户的显示屏上,然后客户机与服务器断开连接。

    如果在以上过程中的某一步出现错误,那么产生错误的信息将返回到客户端,有显示屏输出。对于用户来说,这些过程是由HTTP自己完成的,用户只要用鼠标点击,等待信息显示就可以了。

    5 使用Wireshark抓TCP、http包

    打开Wireshark,选择工具栏上的“Capture”->“Options”,界面选择如图 1‑3所示。选择需要监听的网卡,并选择“Capture Filter”为“HTTP TCP port(80)”,点击“Start”开始抓包。

     图 1‑3 使用wireshock抓包

    例如在浏览器中打开http://image.baidu.com/,抓包如图 1‑4所示:

    图 1‑4 抓包结果

    在上图中,可清晰的看到客户端浏览器(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为0),ACK:x+1(为1)。此为三次握手的第二步;

    3)No3:浏览器(192.168.2.33)回应了服务器(220.181.50.118)的确认,连接成功。为:ACK,此时seq:x+1(为1),ACK:y+1(为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

    ……

    6 HTTP头信息解读

    http报文有两类报文:从客户到服务器的请求报文和从服务器到客户的响应报文。两种报文都由5个成员组成,其中请求报文的结构如下:

    请求行(request-line)或状态行(status-line)通用头(general-header)请求头(request-header)实体头(entity-header)实体主体(entity-body)

    http请求主要由三个部分构成,分别是:

    方法-URI-协议/版本(如:GET /kaixin.asp HTTP/1.1)请求头(如:Accept: image/gif, image/jpeg... Accept-Language: zh-cn Accept-Encoding: gzip User-Agent: Mozilla/4.0 .... Host: localhost:8082 Connection: Keep-Alive)请求正文(如:使用post方法所提交的内容就可以写在请求正文中)

    http应答也主要由三个部分构成,分别是

    协议-状态代码-描述(如:HTTP/1.1 200 OK)应答头(如:Cache-Control: private Content-Length:6 Content-Type: text/html Server: Microsoft-IIs/7.0 Set-Cookie: xxxx X-Powered-By: ASP.NET Date: Fri, 24 Jan 2010 16:43:34 GMT)
    转载请注明原文地址: https://ju.6miu.com/read-26002.html

    最新回复(0)