HTTP协议

一、HTTP协议—超文本传输协议

1、报文格式

分为请求行、请求头部和请求数据

请求行
请求方法、空格、URL(服务器地址)、空格、协议版本、回车符(-r)、换行符(-n)

请求头部(key:value格式)
头部字段名:值、回车符、换行符

头部字段名:值、回车符、换行符
回车符、换行符

接下来就是请求数据

2、HTTP分块编码

chunked代表分块编码

数据量很大,需要分块编码

比如:小c要加油学习!

2\r\n
小c\r\n
3\r\n
要加油\r\n
3\r\n
学习!\r\n
0\r\n

3、HTTP协议基本操作

1、超文本表示文本中含有链接,可以通过链接跳转到某一页面

2、HTTP协议的概念

  • HTTP是一种通信协议,它允许将超文本标记语言(HTML)文档从Web服务器传送到客户端的浏览器
  • HTTP是一个属于应用层的面向对象的协议,由于其简捷、决速的方式,适用于分布式超媒体信息系统

3、HTTP事务处理过程

当客户端访问Web站点时,首先会通过DNS服务查询到域名的 IP地址,然后浏览器通过IP地址生成HTTP请求,并通过TCP/IP协议发送给Web服务器。Web服务器收到请求后根据请求生成响应内容,并通过TCP/IP协议返回给客户端。

4、HTTP协议的特点

1、支持客户/服务器模式
客户/服务器模式工作的方式是由客户端向服务器发出请求,服务器端响应请求,并进行相对服务

2、简单快速

  • 客户向服务器请求服务时,只需传送请求方法和路径
  • 由于HTTP协议简单,使得HTTP服务器的程序规模小,因而通信速度很快

3、灵活

  • HTTP允许传输任意类型的数据对象
  • 正在传输的类型由Content-Type(Content-Type是HTTP包中用来表示内容类型的标识)加以标记

4、无连接

  • 限制每次连接只处理一个请求
  • 服务器处理完客户端的请求,并收到客户的应答后,即断开连接
  • 采用这种方式可以节省传输时间

5、无状态
HTTP是无状态协议。无状态指的是客户端向服务端发送请求之后,服务器仅返回响应,并不针对请求做任何的保留和记忆
无状态意味着如果后续处理需要前面的信息,则它必须重传,这样可能导致每次连接传送的数据量增大,但是,服务器不需要先前信息时,它的应答就比较快。

二、HTTP请求方法

1、GET

GET方法用来请求访问已被URL识别的资源

2、post

  • post方法的功能与get类似
  • 数据放在请求体中,没有直接放在请求头的URL中,较为安全,一般用于提交表单的数据,理论上URL的长度没有限制

get与post的区别

1、get是不安全的,因为在传输过程中,数据被放在请求的URL中;post的所有操作对用户来说都是不可见的

2、get传送的数据量较小,这主要是受URL长度的限制;post传送的数据量较大,一般被默认为不受限制

3、get限制From表单的数据集的值必须为ASCII字符;二Post支持整个ISO10646字符集

4、get执行效率比post高

3、put

从客户端向服务器端传送的数据取代指定的内容

put与post最大的不同:put是幂等的,而post不是幂等的,幂等表示取代同一个地方的内容,即更新数据,如更换头像。非幂等比如说在论坛发表评论,不会取代之前已发的内容。

4、HEAD

一般用来测试某个地址是否可以连通

5、DELETE

请求服务器删除指定资源

三、HTTP的状态码

状态代码有三位数字组成,第一个数字定义了响应 的类别,共分五种类别:

1xx:指示信息—表示请求已接受,继续处理
2xx:成功—表示请求已被成功接收,理解,接受
3xx:重定向—要完成请求必须进行更进一步的操作
4xx:客户端错误—请求有语法错误或者请求无法实现
5xx:服务器端错误—服务器未能实现合法的请求

常见状态码:

  • 200 ok //客户端请求成功
  • 400 Bad Request //客户端请求有语法错误,不能被服务器所理解
  • 401 Unauthorized //请求未经授权,这个状态代码必须和www-Authenticate报头域一起起作用
  • 403 Forbidden //服务器收到请求,但是拒绝提供服务
  • 404 Not Found //请求资源不存在(eg:输入了错误的URL)
  • 500 Intenal Server Error //服务器发生不可预期的错误
  • 503 Server Unavailable //服务器当前不能处理客户端的请求,一段时间后可能恢复正常

四、HTTP的长连接与短链接

HTTP协议是基于请求/响应模式的,因此因此只要服务端给了响应,本次HTTP请求就结束了

HTTP/1.0中,默认使用的是短连接,也就是浏览器和服务器每进行一次HTTP操作后,就建立一次连接,结束就中断

HTTP/1.1起,默认使用长连接,用以保持连接特性

HTTP的长连接格式:Connection:keep-alive

HTTP长连接与短连接的摘要过程

短连接:
建立连接—数据传输—关闭连接…建立连接—数据传输—关闭连接

长连接:
建立连接—数据传输…(保持连接)…数据传输—关闭连接

五、HTTP缓存

1、简介

若每次相同的URL都重新请求服务器的时候,会导致服务器的压力较大,故引出了缓存机制;
缓存的内容一般就是CSS等改动频率比较低的静态资源,往往都是存在浏览器端,防止这些“多余”的请求重复的访问服务器

2、描述缓存的报文头字段

  • cache-control:通用报文头,缓存控制字段
    常见取值如下:
  • no-cache:所有内容都不缓存
  • no-cache:缓存,但是浏览器使用缓存前,都会请求服务器判断缓存资源是否是最新
  • max-age=x(单位:秒):请求缓存后的x秒不再发起请求
  • s—maxage=x(单位 秒):代理服务器请求源站缓存后的x秒不再发起请求(只对CDN缓存有效)
  • public:客户端和代理服务器(CDN)都可缓存
  • private:只有客户端可以缓存

3、HTTP缓存工作方式

场景一:让服务器与浏览器约定一个文件过期时间—Expires(时间没到别来找服务器,返回文件以及过期时间Expires)

场景二:让服务器与浏览器在约定文件过期时间的基础上,再加一个文件最新修改时间的对比Last-Modified(时间到了,俩人再对比一个最新文件修改时间)

场景三:在前两个基础上,再加一个文件内容唯一对比标记。

4、缓存改进方案

1、MD5/Hash缓存
对一个资源添加MD5或者Hash修改之后同时修改其请求路径,本地没有此路径的缓存,则会发起新的请求获取改变的内容,解决浏览器无法跟过缓存时间主动感知文件变化的问题

2、CDN缓存
CDN是一个边缘服务器,相当于服务器的小弟

CDN缓存工作方式:
第一次请求:服务器成功返回f.j.s给CDN,CDN进行缓存,同时CDN返回给浏览器,浏览器自己也进行了缓存
后续请求:浏览器向服务器发起请求,CDN直接响应

六、断点续传和多线程下载

1、简介

HTTP是通过在Header里两个参数实现的,客户端发请求时对应的是Range,服务器端响应时对应的是Content—Range

2、请求头Range

指定第一个字节的位置和最后一个字节的位置

一般格式:
Range:(unit=first byte pos)-[last byte pos]
左开右闭,但实际执行时两边都是闭区间

3、响应头 Content-Range

在发出带Range的请求后,服务器会在Content-Range头部返回当前接受的范围和文件总大小

一般格式:Content-Range:bytes(unit first byte pos)-[last byte pos]/[entity length]

在响应完成后,返回的响应头内容也不同:
HTTP/1.1 200 ok (不适宜断点续传方式)
HTTP/1.1 206 Partical Content(使用断点续传方式)

4、断点续传过程

若客户端下载一个1024k的文件,已经下载了其中512k,网络中断,客户端请求续传,因此需要在HTTP头中申明本次需要续传的片段。

Range:bytes=51200-
这个头通知服务端从文件的512k位置开始传输文件直到文件全部传输完毕。

服务端收到断点续传请求,从文件的512k位置开始传输,并且在HTTP头中增加 Content-Range:bytes 51200-/102400

并且此时服务端返回的HTTP状态码应该是206,而不是200.

七、HTTP与HTTPS的区别

1、HTTP是超文本传输协议,被用于在Web浏览器和网站服务器之间传递信息,信息是明文传输,可以直接读懂其中的信息,因此就不能传输一些敏感信息。

HTTPS在HTTP的基础上加入了SSL/TLS协议,SSL/TLS依靠证书来验证服务器的身份,并为浏览器和服务器之间的通信加密。

HTTPS是有SSL/TLS+HTTP协议构建的可进行加密传输、身份认证的网络协议,要比HTTP协议安全。

HTTTPS协议的主要作用可以分为两种:一种是建立一个信息安全通道,来保证数据传输的安全;另一种就是确认网站的真实性。

2、HTTPS需要到CA申请证书,一般免费证书比较少,所以需要一定费用

3、HTTP与HTTPS使用的是完全不同的连接方式,用的端口也不一样,前者是80,后者是443

4、HTTP的连接很简单,是无状态的。HTTTPS的协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议,比HTTP安全。

5、HTTPS在HTTP基础之上增加了加密处理,认证机制和完整性保护,即 HTTPS=HTTP+加密+认证
+完整性保护

八、HTTP协议与TCP/IP协议的关系

HTTP的长连接和短连接本质上是TCP长连接和短连接。
  
HTTP属于应用层协议,在传输层使用TCP协议,在网络层使用IP协议。IP协议主要解决网络路由和寻址问题,TCP协议主要解决如何在IP层之上可靠的传递数据包,使在网络上的另一端收到发端发出的所有包,并且顺序与发出顺序一致。TCP有可靠,面向连接的特点。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值