Http网络请求原理

一、简介
HTTP 是一种应用层协议,它通过TCP实现了可靠的数据传输,能够保证数据的完整性,正确性,而TCP对于数据控制的优点也能够体现在HTTP上,使得HTTP的数据传输吞吐量,效率得到保证。
详细的交互流程:
1、客户端执行网路请求,从URL中解析出服务器的主机名
2、将服务器的主机名转换成服务器的IP地址
3、将端口号从URL中解析出来
4、建立一条客户端与Web服务器的TCP连接
5、客户端通过输出流向服务端发送一条HTTP请求
6、服务器从客户端回送一条HTTP响应报文
7、客户端从输入流获取报文
8、客户端解析报文、关闭连接
9、客户端将结果显示在UI上

二、HTTP的请求方法
HTTP协议提供了几种请求方式,每种请求方式都有不同的作用,被大家熟知的方式有:
GET、POST、PUT、DELETE、HEAD、TRACE、OPTIONS

1、GET请求
GET请求时最常用的请求方法,它的作用是获取服务器的某个资源。
它的传参方式为: 参数名=参数值,并通过&连接,第一个参数前加 ? 号,
例如 www.baidu.com/api?username=myname&password=1243
2、POST请求
POST请求方法起初用来想服务器传递数据的,实际上POST请求通常用来提交HTML的表单。表单中填好的数据会被传输给服务器,然后由服务器对这些数据进行处理。,它的参数在请求体中
例如:

POST login.php HTTP/1.1
HOST: www.baidu.com
Content-Type: text/plain
Content-Length:30

username=xxxx&pwd=123456

3、PUT请求
与GET从服务器读取资源相反,PUT方法会向服务器写入资源。有些发布系统允许用户创建Web页面,并用PUT直接将其输出到Web服务器。
例如:
请求:

请求报文
PUT new-art.txt HTTP/1.1
Host www.baidu.com
Content-Type: text/html
Content-Lengh:128

This is file content

响应报文:
HTTP/1.1 200 Ok
Content-Type:text/html
Content-Length:1024
location:http://www.baidu.com/new-art.txt

http://www.baidu.com/new-art.txt

该请求会在 www.baidu.com的网站目录下穿阿金一个new-art.txt,文件内容 “This is file content"。当然这里 www.baidu.com 是我随意写的

4、DELETE请求
DELTE方法所做的事情就是请服务器删除请求URL所指定的资源,但是客户端应用程序无法保证删除操作一定会被执行,因为HTTP规范允许服务器在不通过客户端的情况下撤销请求,DELETE方法和GET请求一样,参数都需要放在请求的URL中

示例:

请求报文:
DELTE /test/xxx.html HTTP/1.1
Host:www.baidu.com

返回报文
HTTP1.1 200/OK
Content-Type:text/plain
Content-Length:20

Success

删除 xxx.html文件

5、HEAD请求
HEAD方法与GET方法的行为很类似,但服务器在响应中返回首部,不会返回实体的主体部分。这就允许客户端子为获取实际资源的情况下,对资源进行减产,使用HEAD可以在不获取资源的情况了解资源情况(比如了解资源是否存在)
例如:

请求报文
HEAD /text/xxx.html HTTP/1.1
Host: www.baodu.com

响应报文
HTTP/1.1 200 OK
Content-Type: text/html
ContentLength:1024

6、TRACE请求
客户端发送一个请求时,这个请求可能要穿过防火墙,代理、网关或其他一些应用程序。每个中间节点都可能会修改原始的HTTP请求,TRACE方法允许客户端在最终将请求发给服务器是,看看那它变成什么样子。
TRACE请求会子啊目的服务器端发起一个”环回“诊断,形成最后一站的服务器会弹回一条TRACE响应,并在响应主体中携带它收到的原始请求报文,这样客户端就可以查看在所有中间HTTP应用程序组成的请求/响应链,原始报文是否以及如何被毁坏或修改过
示例:

客户端发送请求报文:
TRACE /index.html HTTP/1.1
Host:www.baidu.com
Accept:"

经过代理:
TRACE /index.html HTTP/1.1
Host:www.baidu.com
Accept:"
Via: 1.1 proxy.vpn.com

服务器返回给代理:
HTTP/1.1 200 OK
Content-Type: text/plain
Content-Lengty:21

TRACE /index.html HTTP/1.1
Host:www.baidu.com
Accept:"
Via 1.1 proxy.vpn.com

代理返回给客户端

HTTP/1.1 200 OK
Content-Type: /text/plain
Content-Lengty:21
via: 1.1 proxy.vpn.com

TRACE /index.html HTTP/1.1
Host:www.baidu.com
Accept:"
Via 1.1 proxy.vpn.com


7、OPTIONS请求
OPTIONS方法请求Web服务器告知其支持各种功能。可以询问服务器通常支持哪些方法,或者对那些特殊资源支持哪些方法(有些服务器可能只支持一些特殊类型的对象使用特定的操作)这为客户端提供了一种手段,使其不用实体访问那些资源就能判定访问各种资源的最优方式。
示例:

请求报文:
OPTIONS /text HTTP 1.1
Host:www.baidu.com

响应报文:
HTTP/1.1 200 OK
Allow: GET、POST、PUT、
ContentLength: 0
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值