从http到https浅析(一)

1.什么是HTTP协议?

HTTP(Hypertext Transfer Protocol) 超文本传输协议, 是网络应用层上的一种用于传输浏览器与服务器之间数据的协议. 

HTTP是一种基于请求/响应式的,无状态的协议(即协议本身并不存储当前状态).

2.HTTP的发展历史?以及他们的区别?

HTTP协议发展

HTTP 0.9

 1991

HTTP1.0

1996

HTTP 1.1

1996

HTTP 2.0

2015

协议只支持GET方法

只支持HTML格式的响应

每个TCP连接只能发送一个请求。发送数据完毕,连接就关闭,如果还要请求其他资源,就必须再新建一个连接

支持GET.PUT.HEAD方法

可以传送任意格式的内容

每个TCP连接只能发送一个请求

支持PUT.PATCH.HEAD.OPTIONS.DELETE方法

客户端请求的头信息新增了Host字段,用来指定服务器的域名
引入了持久连接(persistent connection),即TCP连接默认不关闭

引入头信息亚索机制

浏览器和服务器都可以同时发送多个请求或回应
数据包不按顺序发送

非持续型的连接, 举例:

1.HTTP客户在自己主机上发起一个连接服务器www.colacs.cn的TCP请求.

2.HTTP客户通过通过套接字往该服务器发送一个HTTP报文(message).请求一个 /index.html.

3.HTTP服务器从传输层提供的套接字接口得到这个HTTP报文,从存储器(RAM或磁盘)中取出index.html,把它封装到响应报文中,发送给套接字接口.

4.HTTP服务器随后通知TCP断开该TCP连接.(直到TCP确认客户端已经收到响应报文)

5.HTTP客户端收到了index.html后,通知TCP断开连接.从HTML取出需要继续获取的资源,例如,图片链接

6.继续从2-5的过程(建立链接又断开的过程).

缺点: 1.在每次连接中,在服务器和客户端都要分配TCP的缓冲区和保持TCP变量.给服务器带来负担.2.要进行多次TCP的握手分手连接,RTT交付时延增加.

所以以连接式来进行.当一段默认时间内没有继续请求页面,则断开连接.

3.具体的HTTP请求

第一行是请求行,后继叫做首部行. 

请求行包含三个字段:方法, url目录 协议版本.  方法:GET, POST, PUT, HEAD和DELETE,OPTIONS.一般使用GET和POST两种方法.之后的内容就是主机地址,连接方式(keep-alive持续连接). 浏览器版本(User-Agent),客户机支持接收的内容(ACCEPT),接收编码等等的消息.

 

同理,响应报文,分为三个部分,1.初始状态行,2. 首部行 3. 实体. 

状态行是HTTP版本号,  返回的状态码(表示当前服务器对reqeust的响应), 以及响应对应的状态(对状态码的解释). 首部行的内容,大致是服务器地址, Date:返回首部行产生的事件, Content-type:返回资源的类型, Transfer-Encoding:传输的编码, Last-Modified:在服务端最后一次更改的时间(对于本地缓存判断很有用).Expires:表示当前长连接的过期时间.

撸到这里肯定想知道返回头的状态码的常规操作:

200 ok:请求成功,信息返回在响应报中

301 Moved Permanently: 请求的对象已经被永久转移,新的url在响应报文的location:首部行中.浏览器会自动去访问location的地址

302 Found  临时的重定向.

304 Not Modified: 表示当前请求的资源并没有被更改(可以直接使用缓存中的资源)

400 Bad Request: 一个通用的差错码, 表示请求不能被服务器理解

401 Unauthorized 未授权访问.某些需要权限的访问未认证通过

403 Forbidden 禁止访问当前资源

404 Not Found: 被请求的文档不在服务器上.

500 Internal Server Error 内部错误.

503 Server Unavailable  服务不可达.

505 Http version Not Supported: 服务器版本不支持当前的请求报文.

4.cookie是什么?

cookie是用户与服务器的交互方式.

常规操作:

1.HTTP响应报中包含一个cookie的首部行, 即上面的Set-cookie.

2.客户的请求报中带上这个代表身份的值.

其中客户端的浏览器中缓存这个cookie,在之后的访问中使用. 而后端把cookie存入到数据库中.

作用呢? 

上面提到http是无状态的,所以为了让他有状态(如登录了一个网站后,之后的操作都是绑定的用户的各种姿势的操作).因此需要有这样的值在客户与服务器直接维护着这一身份.那么cookie就应运而生了. session也是类似的效果,每次登录都可能会产生这样的一个值,当关闭这个网站后,就删除这个值.(expires值常设为1969)

存在问题?

如果cookie被窃取,可能被恶意用户直接拿cookie来登录. 而服务提供方,可以通过cookie绑定唯一的用户来给用户做一些定制化的东西,而定制化的本身是牺牲了用户的信息.如,可能记录用户访问记录,点击记录等等消息.

 

5.引入Web缓存的作用(与HTTP相关操作)

web缓存也叫做web代理.它是服务器和客户端直接的一个中介, 起着转发请求报和响应报的作用.当然最重要的作用就是它可以缓冲响应的信息.这样就可以提高整体的服务的能力.这样的话服务器的带宽可以相应的减少,只需要保证代理服务器到客户的传输路劲的带宽就行.即使用一种类似Cache的作用. 

以上就是常规的HTTP操作.之后介绍HTTPS

引用:https://en.wikipedia.org/wiki/Hypertext_Transfer_Protocol

计算机网络:从顶到底

图解HTTP

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值