http基础

http是应用层的协议。
当浏览器输入一个URL按回车的时候会经历以下步骤:
1、redirectStart:进行重定向,浏览器可能已经记录了你当前输入的这个URL永久跳转到一个新的URL上了。
2、看缓存 有可能你请求的资源已经缓存过了,查看APP cache,检查当前请求资源是否已被缓存。若没有被缓存则去实际的服务器上请求资源。
3、请求实际服务器的时候,当然涉及到域名与IP地址的转换,需要走DNS服务器,获取请求URL对应的IP地址。
4、经过三次握手建立TCP连接
5、发送request请求。
6、服务端返回结果。

关于上述第四步,三次握手,可以通过抓包看到:
在这里插入图片描述

需要注意的问题:
同一个tcp连接中,可以发送多个http请求,并不是一个http请求对应一个TCP连接,http1.0版本及之前版本的确是一个http请求对应一个tcp连接,返回结果结束,就关闭连接。但是http1.1之后,考虑到效率问题,同一个tcp连接中,可以发送多个http请求了。

http2.0 所有数据都是以二进制方式传输。
头信息可以被压缩了,因为之前版本例如 context Type这些字段都是以字符流传输,现在改为二进制。
新增推送功能:之前版本加载页面,例如加载一个html,是先请求到html,再通过html里的图片链接,css链接等再次发送请求。http2.0可以在收到请求的时候,除了返回html以外,还可以同步推送css,js等给客户端浏览器,让之前的串行变成并行。提高了效率。

URI:包含了URL与URN
URN:永久资源定位,请求一个资源,这个资源可能会改动,改动之后URL无法再次访问到,一般报404,URN是用于解决即使资源改动了位置,依然可以使用之前的URL访问到该资源,目前没有成熟的方案去实现。

http请求包:
在这里插入图片描述
分为:
首行(不属于headers头部):
1、包含method:对于一个完成度比较高的web来说,对于同一个url不同方法对应的处理不一样,例如GET获取一个资源,post上传一个资源,delete删除一个资源,put更新一个资源,不过这些method只是写在纸上的一种规范,更新你完全也可以用GET,但是并不好,这就像 老师让你不许骂人,但是你完全可以骂人,虽然骂人不文明…
2、包含路由信息,例如http://www.baidu.com 这里的baidu.com就是路由信息,在上图中为:/test/hi-there.txt
3、协议版本,上图中为:http 1.0版本

头部:除了http的首行以外,剩下的都是header,那怎么区分header和body呢?header与body之间有一个完整的空行,来区分。
主要包含body中的一些信息,这里之后再更新

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值