HTTP协议解读

HTTP是超文本传输协议,用于分布式信息系统的应用层协议。HTTP请求/响应包括连接、发送请求、接收响应、释放连接等步骤。Wireshark可以用来抓取TCP和HTTP包,展示客户端与服务器的交互。HTTP方法主要有GET和POST,GET用于获取资源,POST用于提交数据。常见的HTTP状态码表示请求的处理结果。
摘要由CSDN通过智能技术生成

目录

一、什么是http?

二、http协议是怎么产生的?

         2.1、HTTP 请求/响应的步骤:

2.2、使用Wireshark抓TCP、http包

 三、http协议格式

3.1、请求(request)格式

​3.2、URL格式

3.3、方法(method)

3.3.1、get方法

3.3.2、post方法

3.3.3、get  VS post

3.4、常见的状态码

 4、通过http传输

 4.1、http上传

 4.2、http下载 


一、什么是http?

       超文本传输协议(英文:HyperText Transfer Protocol,缩写:HTTP)是一种用于分布式、协作式和超媒体信息系统的应用层协议。HTTP是万维网的数据通信的基础。

        

二、http协议是怎么产生的?

        当我们在浏览器中输入一个网址,此时就会给对应的服务器发送一个http请求,对方的服务器收到这个请求后,经过处理就会返回一个http响应。事实上,当我们访问一个网站时,可能涉及不止一次的http请求/响应的过程。

2.1、HTTP 请求/响应的步骤

1. 客户端连接到Web服务器一个HTTP客户端,通常是浏览器,与Web服务器的HTTP端口(默认为80)建立一个TCP套接字连接。例如,http://www.baidu.com。

2. 发送HTTP请求通过TCP套接字,客户端向Web服务器发送一个文本的请求报文,一个请求报文由请求行、请求头部、空行和请求数据4部分组成。

3. 服务器接受请求并返回HTTP响应Web服务器解析请求,定位请求资源。服务器将资源复本写到TCP套接字,由客户端读取。一个响应由状态行、响应头部、空行和响应数据4部分组成。

4. 释放连接TCP连接若connection 模式为close,则服务器主动关闭TCP连接,客户端被动关闭连接,释放TCP连接;若connection 模式为keepalive,则该连接会保持一段时间,在该时间内可以继续接收请求;

5. 客户端浏览器解析HTML内容客户端浏览器首先解析状态行,查看表明请求是否成功的状态代码。然后解析每一个响应头,响应头告知以下为若干字节的HTML文档和文档的字符集。客户端浏览器读取响应数据HTML,根据HTML的语法对其进行格式化,并在浏览器窗口中显示。

2.2、使用Wireshark抓TCP、http包


在上图中,可清晰地看到客户端浏览器(ip为192.168.1.101)与服务器的交互过程:

1)No1:浏览器(192.168.1.101)向服务器(103.28.8.212)发出连接请求。此为TCP三次握手第一步,此时从图中可以看出,为SYN,seq:X (x=0)

2)No2:服务器(103.28.8.212)回应了浏览器(192.168.1.101)的请求,并要求确认,此时为:SYN,ACK,此时seq:y(y为0),ACK:x+1(为1)。此为三次握手的第二步;

3)No3:浏览器(192.168.1.101)回应了服务器(103.28.8.212)的确认,连接成功。为:ACK,此时seq:x+1(为1),ACK:y+1(为1)。此为三次握手的第三步;

4)No4:浏览器(192.168.1.101)发出一个页面HTTP请求;

5)No5:服务器(103.28.8.212)确认;

6)No6:服务器(103.28.8.212)发送数据;

7)No7:客户端浏览器(192.168.1.101)确认;

8)No14:客户端(192.168.1.101)发出一个图片HTTP请求;

9)No15:服务器(103.28.8.212)发送状态响应码200 OK

 三、http协议格式

3.1、请求(request)格式

3.2、URL格式

        URL (Uniform Resource Locator 统一资源定位符),互联网上的每个文件都有一个唯一的URL,它包含的信息指出文件的位置以及浏览器应该怎么处理它。

 

URL的具体格式:

资源在哪台主机上——域名 (domain) 或者ip来体现一主机 (host)
和主机上的哪个进程去获取资源——端口 (port)
具体定位到是该进程管理的哪个资源——资源路径/路径 (path)
URL设计之处,不仅仅为HTTP协议使用。所以需要标识出本次资源对应的协议(protocol / schema)
针对本次请求,除了资源本身之外的特殊要求。(查询字符串 query string、文档片段 fragment)


3.3、方法(method)

 3.3.1、get方法

GET 是最常用的 HTTP 方法,常用于获取服务器上的某个资源。

        GET 请求的特点:

        首行里面的第一个部分就是 GET
        URL 里面的 query string 可以为空,也可以不为空 %E8%9B%8B%E7%B3%95
        GET 请求的 header 有若干个键值对结构
        GET 请求的 body 一般是空的

 GET 请求示例: 搜狗首页请求

3.3.2、post方法

    POST 方法也是一种常见的方法,多用于提交用户输入的数据给服务器(如登录页面)。

        POST 请求的特点:

        首行第一个部分就是 POST
        URL 里面的 query string 一般是空的
        POST 请求的 header 里面有若干个键值对
        POST 请求的 body 一般不为空(body 的具体数据格式,由 header 中的 Content-Type 来描述; body 的具体数据长度,由 header 中的 Content-Length 来描述

POST 请求示例: QQ 邮箱登录请求

 3.3.3、get  VS post

        GET 和 POST 其实没有本质区别,使用 GET 的场景完全可以使用 POST 代替,使用 POST 的场景一样可以使用 GET 代替。但是在具体的使用上,还是存在一些细节的区别;

        GET 习惯上会把客户端的数据通过 query string 来传输(body 部分是空的);POST 习惯上会把客户端的数据通过 body 来传输(query string 部分是空的);

        GET 习惯上用于从服务器获取数据;POST 习惯上是客户端给服务器提交数据;

一般情况,程序员会把 GET 请求的处理,实现成“幂等”的;对于 POST 请求的处理,不要求实现成“幂等”;

        GET 请求可以被缓存,可以被浏览器保存到收藏夹中;POST 请求不能被缓存。

3.4、常见的状态码

 

 4、通过http传输

 4.1、http上传

  1.  在服务端安装运行hfs软件,双击软件:

          

         2、右键单击左侧空白处,选择从磁盘添加共享目录

         

       3、选择好目录,然后选Real folder

         

         4、右键共享的文件夹,选择最后一项

        

        5、配置权限,将1里面的三个选项中的anyone都勾选,然后点击apply,点击ok。

        

         6、文件上传操作,从另一测试机浏览器访问服务端IP(服务端hfs默认端口为80,如果服务端端口80有冲突可以自行修改,此时客户端访问就需要用IP+端口方式)

        

        7、文件上传进入到目的目录后,点击upload,选择文件进行上传即可。

4.2、http下载 

        HTTP下载与上传使用同一个软件hfs,按照上述①~⑤配置好服务端之后,在另一台电脑上浏览器访问服务端地址,进入文件共享界面后点击文件名即可进行文件下载。

        

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值