当前位置:首页 > 网站技术 > 前端技术 > 正文内容

HTTP之协议结构、通讯原理以及http特性和使用方法

小彬2020-08-03前端技术169

1、http协议

HTTP之协议结构、通讯原理以及http特性和使用方法 

超文本传输协议(http)是一种通信协议,它允许将超文本标记语言(html)文档从web服务器传送到客户端的浏览器


http是一个属于应用层的面向对象的协议

web是一种基于超文本和http的、全球性的、动态交互的、跨平台的分布式图形信息系统

建立在internet上的中网络服务,为浏览者在internet上查找和浏览信息提供了图形化的、易于访问的直观页面,其中的文档及超链接将Internet上的信息节点组成一个互为关联的网状结构

2、http协议的前世今生

HTTP之协议结构、通讯原理以及http特性和使用方法


3、透过TCP/IP看HTTP

http协议是构建在TCP/IP协议之上的,是TCP/IP协议的一个子集

TCP/IP协议是一系列与互联网相关联的协议集合起来的总称,分层管理是TCP/IP协议的重要特征。


TCP/IP协议族是由一个四层协议组成的系统,分别是应用层、传输层、网络层、数据链路层

HTTP之协议结构、通讯原理以及http特性和使用方法

应用层:编写的应用程序,决定了向用户提供的应用服务。应用层可以通过系统调用与传输层进行通信。如ftp,dns,http

传输层:通过系统调用应用层提供处于网络连接中的两台计算机之间的数据传输功能。在传输层有两种性质不同的协议 tcp和udp,(tcp面向链接,udp无链接)

网络层:用来处理在网络上流动的数据包,数据包是网络传输的最小数据单位。该层规定了通过怎样的路径(传输路线)到达对方计算机,并把数据包传输给对方

链路层:用来处理连接网络的硬件部分,包括控制操作系统、硬件设备驱动、NIC(网路适配器)以及光纤等物理可见部分。硬件上的范畴均在链路层的作用范围之内。


4、数据包的封装过程

HTTP之协议结构、通讯原理以及http特性和使用方法


5、http数据传输过程

发送端发送数据时,数据会从上层传输到下层,且每经过一层都会被打上该层的头部信息。

而接受端接受数据时,数据会从下层传输到上层,传输前会把下层的头部信息删除

HTTP之协议结构、通讯原理以及http特性和使用方法

使用TCP/IP协议进行通信的双方必须先建立连接,然后才能开始传输数据。为了确保连接双方可靠性,在双方建立连接时,tcp协议采用三次握手策略

传输层TCP/IP三次传输协议

第一次握手:客户端发送带有syn标志的连接请求报文段,然后进入syn_send状态,等待服务端的确认

第二次握手:服务端接收到客户端的syn报文段后,需要发送ack信息对这个syn报文段进行确认。

同时,还要发送自己的syn请求信息。服务端会将上述信息放到一个报文段(syn+ack报文段)中,一并发送给客户端,此时服务端会进入syn_recv状态

第三次握手:客户端接收到服务端的 syn+ack报文段后,会向服务端发送ack确认报文段,这个报文段发送完毕后,客户端和服务端都进入established状态,完成三次握手。

HTTP之协议结构、通讯原理以及http特性和使用方法

自我理解:

1,客户端先发

2,服务端先接收再发送(验证客户端的发送功能可用)

3,客户端先接收再发送(验证自己的发送是对的,验证服务端的接收是对的,验证服务端的发送是对的)

4,服务端接收(验证客户端的接收是对的,验证自己的发送是对的,验证自己的接收 是对的)


6、DNS域名解析

通常我们访问一个网站,使用的是主机名或者域名来进行访问的。因为相对于ip地址,域名更容易让人记住。

但是TCP/IP协议使用的是ip地址进行访问的,所以必须有个机制或服务把域名转成ip地址。

DNS服务就是用来解析这个问题的,它提供域名到IP地址之间的解析服务。

HTTP之协议结构、通讯原理以及http特性和使用方法


7、回溯HTTP事务处理过程

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

HTTP之协议结构、通讯原理以及http特性和使用方法

HTTP之协议结构、通讯原理以及http特性和使用方法


8、http协议特点

1.支持客户/服务器模式

客户/服务器模式工作的方式是由客户端向服务器发送请求,服务端响应请求,并进行相应服务。

HTTP之协议结构、通讯原理以及http特性和使用方法


2.简单快速

客户向服务器请求服务时,只需传送请求方法和路径(常用请求get,post,head,option)

每种方法规定了客户与服务器联系的类型不同

由于http协议简单,使得http服务器的程序规模小,因为通信速度很快、


3.灵活

http允许传输任意类型的数据对象

正在传输的类型有Content-Type(Content-Type是http包中用来表示内容类型的标识)加以标记


4.无连接

无连接的含义是限制每次连接只处理一个请求 

服务器处理完客户的请求,并收到客户的应答后,即断开连接

采用这种方式可以节省传输时间


5.无状态

http协议是无状态协议

无状态是指协议对于事务处理没有记忆能力。缺少状态意味着如果后续处理需要前面的信息,

则它必须重传,这样可能导致每次连接传送的数据量增大

另一方面,在服务器不需要先前信息时它的应答就较快


9、URI和URL

HTTP之协议结构、通讯原理以及http特性和使用方法

  URI可以分为URL、URN或同时具备locators和names特性的一个东西

 URN作用就好像一个人的名字,URL就像一个人的地址

 (URN确定了东西的身份,URL提供了找到它的方式)


 URL是URI的一种,但不是所有的URI都是URL

 URI和URL最大的差别是“访问机制”

 URN是唯一标识的一部分,是身份信息



10、http报文结构分析

HTTP的报文头大体可分为四类: 通用报文头、请求报文头、响应报文头、实体报文头

 在http一共规范47种报文头字段

HTTP之协议结构、通讯原理以及http特性和使用方法

HTTP之协议结构、通讯原理以及http特性和使用方法

HTTP之协议结构、通讯原理以及http特性和使用方法

HTTP之协议结构、通讯原理以及http特性和使用方法

 

 ACCEPT

 作用:浏览器端可以接受的媒体类型

 Accept: text/html 代表浏览器可以接受服务器回发的类型为text/html 就是我们常说的html文档,

 如果服务器无法返回text/html类型的数,服务器应该返回一个406错误(Non Acceptable)

 Accept:*/* 代表浏览器可以处理所有类型


 如果想要给显示的媒体类型增加优先级,则使用q=来额外表示权重值);重值q的范围是0~1 (可精确到小数点后3位),且1为最大值。不指定权重q值时,默认权重为q=1.0。当服务器提供多种内容时,将会首先返回权重值最高的媒体类型。


Accept-Encoding

作用:浏览器申明自己接收的编码方法,通常指定压缩方法,是

否支持压缩,支持什么压缩方法(gzip, deflate)


Accept-Language

作用:浏览器声明自己接收的语言 

Accept- Language: zh-cn,zh;q=0.7,en-us,en;q=0.3

客户端在服务器有中文版资源的情况下,会请求其返回中文版对应的响应,没有中文版时,则请求返回英文版响应


Connection

Connection: keep-alive:当一个网页打开完成后,客户端和服务器之间用于传输HTTP数据的TCP连接不会关闭,如果客户端再次访问这个服务器上的网页,会继续使用这一条已经建立的连接

Connection: close:当一个Request完成后, 客户端和服务器之间用于传输HTTP数据的TCP连接会关闭,当客户端再次发送Request,需要重新建立TCP连接


Host

作用:请求报头域主要用于指定被请求资源的Internet主机和端口号,它通常从HTTP URL中提取出来的


我们在浏览器中输入: http://www.fljf.com:8080

浏览器发送的请求消息中,就会包含Host请求报头域,如下:Host: www.fljf.com:8080


Referer

当浏览器向web服务器发送请求的时候,一般会带上Referer,告诉服务器我是从哪个页面链接过来的,服务器借此可以获得一些信息用于处理


User-Agent

作用:告诉HTTP服务器,客户端使用的操作系统和浏览器的名称和版本


Content-Type

作用: 说明了报文体内对象的媒体类型

text/html : HTML格式

text/plain :纯文本格式

text/xml : XML格式

image/gif : gif图片格式

image/jpeg : jpg图片格式

image/png: png图片格式

application/xhtml+xml : XHTML格式

application/xml : XML数据格式

application/atom+xml : Atom XML聚合格式

application/json : JSON数据格式

application/pdf : pdf格式

application/msword :Word文档格式

application/octet-stream :二进制流数据(如常见的文件下载)

application/x-www-form-urlencoded :表单提交

HTTP之协议结构、通讯原理以及http特性和使用方法

11、http请求方法剖析

HTTP/1.1 常用方法

①GET

用来请求访问已被URI识别的资源

指定的资源经服务器端解析后返回响应内容 

浏览器对于提交URL的长度也有所限制

②POST

与get类似,一般用来传输实体的主体

POST方法的主要目的不是获取响应主体的内容

主要拿来做表单提交请求

③PUT

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

put方法和post方法最大的不同是:put是幂等,而post是不幂等

更多时候将put方法用作传输资源(更新资源用put)

④HEAD

类似于get请求,只不过返回的响应中没有具体的内退,用于获取报头  

经常用来测试超链接的有效性

⑤DELETE

请求服务器删除指定的资源

OPTIONS

用来查询针对请求URI指定的资源支持的方法 

⑦TRACE

回显服务器收到的请求,主要用于测试或诊断 (容易引发一种攻击方式,跨正追踪)

⑧CONNECT

开启一个客户端与所请求资源之间的双向沟通的通道,它可以用来创建隧道 



12、HTTP响应状态码详解

是用以表示网页服务器超文本传输协议响应状态的3位数字代码

HTTP之协议结构、通讯原理以及http特性和使用方法

HTTP之协议结构、通讯原理以及http特性和使用方法

HTTP之协议结构、通讯原理以及http特性和使用方法

HTTP之协议结构、通讯原理以及http特性和使用方法

HTTP之协议结构、通讯原理以及http特性和使用方法


状态码实测实验:用telnet分析http协议的通讯过程



13、HTTP状态管理:cookie和session

Cookie实际上是一小段的文本信息。客户端请求服务器,如果服务器需要记录该用户状态,就向客户端浏览器颁发一个Cookie.

客户端浏览器会把Cookie保存起来。当浏览器再请求该网站时浏览器把请求的网址连同该Cookie一同提交给服务器。

服务器检查该Cookie,以此来辨认用户状态

javascript:alert(document.cookie)

HTTP之协议结构、通讯原理以及http特性和使用方法

HTTP之协议结构、通讯原理以及http特性和使用方法


Session

Session是另一 种记录客户状态的机制,保存在服务器上。客户端浏览器访问服务器的时候,服务器把客户端信息以某种形式记录在服务器上

客户端浏览器 再次访问时只需要从该Session中查找该客户的状态就可以了


保存session id 的方式

1cookie

2url重写

3隐藏表单


session的有效期:

1超时即失效

2程序调用HttpSession.invalidate()

3服务器进程被停止

HTTP之协议结构、通讯原理以及http特性和使用方法


cookie和session

1、存放位置不同,cookie在客户端,session在服务端

2、安全性(隐私策略)的不同;cookie存储在浏览器里,对客户是可见的

session存储在服务端,对客户端是透明的,不存在信息泄露的风险

3、有效期上的不同

cookie会存储在浏览器很长一段时间

session会定期清理超时的id,避免出现服务器过大压力(关闭浏览器即失效)

4、对服务器压力的不同

session保存在服务端,如果并发多人访问,会耗费大量内存

cookie保存在客户端,不太占用服务器



14、http协议结构和通讯原理

字符集与编码

编码规范:字库表,字符集,编码方式

常见四个编码规范介绍:ASCII码,GBK(中日朝语言),ISO-8859-1(希腊、泰语、阿拉伯语等等),Unicode(不能解码汉字)


URL的编码与解码

URL是采用ASCII字符集进行编码的,所以如果URL中含有非ASCII字符集中的字符,要对其进行编码

URL中一些保留字符,如“&”表示参数分隔符,如果想要在URL中使用这些保留字,那就需要编码


“%编码”规范

对URL中属于ASCII字符集的非保留字不做编码;对URL中的保留字需要取其ASCII内码,然后加上"%"前缀将该字符进行编码;

对于URL中的非ASCII字符需要取其Unicode内码,然后加上"%”前缀将该字符进行编码。


progress telerik fiddler web debugger 测试软件


15、http协议之身份认证

身份认证信息

1密码 

2动态令牌

3数字证书

4生物认证

5IC卡


常见认证方式

BASIC认证(基本认证) 

HTTP之协议结构、通讯原理以及http特性和使用方法



DIGEST认证(摘要认证) 

为弥补BASIC认证存在的弱点,从HTTP/1.1起就有了DIGEST认证

DIGEST认证同样使用质询/响应的方式,但不会像BASIC认证那样直接发送明文密码

HTTP之协议结构、通讯原理以及http特性和使用方法



SSL客户端认证

借由HTTPS的客户端证书完成认证的方式。凭借客户端证书认证,服务器可确认访问是否来自已登录的客户端


FormBase认证(基于表单认证)

并不是在HTTP协议中定义的

使用由web应用程序各自实现基于表单的认证方式

通过cookie和session的方式来保持用户的状态


16、HTTP的长连接和短连接

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

HTTP的长连接和短连接本质上是TCP场连接和短连接

(服务多次就是长连接,一锤子买卖就是短连接)

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

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


短连接:

建立链接--数据传输---关闭链接...建立链接--数据传输---关闭链接

长连接:

建立链接--数据传输---(保持链接)--数据传输---关闭链接


17、HTTP中介之代理


HTTP之协议结构、通讯原理以及http特性和使用方法

HTTP之协议结构、通讯原理以及http特性和使用方法

代理的作用

    抓包

    翻墙

    HTTP之协议结构、通讯原理以及http特性和使用方法

    匿名访问

    过滤器

    HTTP之协议结构、通讯原理以及http特性和使用方法



18、HTTP中介之网关

网关可以作为某种翻译器使用,它抽象出了一种能够达到资源的方法。网关是资源和应用程序之间的粘合剂

网关扮演的是“协议转换器”的角色

HTTP之协议结构、通讯原理以及http特性和使用方法



web 网关

Web网关在一侧使用HTTP协议, 在另一侧使用另一种协议。<客户端协议>/<服务器端协议>

(HTTP/)服务器端网关:通过HTTP协议与客户端对话,通过其他协议与服务器通信。

(/HTTP)客户端网关:通过其他协议与客户端对话,通过HTTP协议与服务器通信。


常见的网关类型

(HTTP/*)服务器端web网关

(http/https)服务器端安全网关

(https/http)客户端安全加速器网关

资源网关


19、HTTP缓存

缓存的内容是静态资源文件:css,js,img

HTTP之协议结构、通讯原理以及http特性和使用方法

Expires:响应头,代表资源过期时间,由服务器返回提供,是http1.0的属性,在与max-age共存的情况下,优先级更低

Last-Modified:响应头,资源最新修改时间,由服务器告诉浏览器

if-Modified-Since:请求头,资源最新修改时间,由浏览器告诉服务器,和Last-Modified是一对。他俩会进行对比

Etag:响应头,资源标识,由服务器告诉浏览器

if-None-Match:请求头,缓存资源标识,由浏览器告诉服务器(其实就是上次服务器给的Etag),和Etag是一对.他俩会进行对比、

HTTP之协议结构、通讯原理以及http特性和使用方法

HTTP之协议结构、通讯原理以及http特性和使用方法

HTTP之协议结构、通讯原理以及http特性和使用方法


缓存改进方案

1.md5/hash缓存

通过不缓存html,为静态文件添加MD5或者hash标识,解决浏览器无法跳过缓存期间时间主动感知文件变化的问题

2.cdn缓存 

CDN是构建在网络上的内容分发网络,依靠部署在各地的边缘服务器,通过中心平台的负载均衡、内容分发、调度等功能模块,使用户就近获取所需内容,降低网络拥塞,提高用户访问响应速度和命中率

HTTP之协议结构、通讯原理以及http特性和使用方法


20、HTTP内容协商机制:

指客户端和服务器端就响应的资源内容进行交涉,然后提供给客户端最为适合的资源。内容协商会以响应资源的语言,字符集,编码方式等作为判断的基准


三种识别方式

客户端驱动

  客户端发起请求,服务器发送可选项列表,客户端作出选择后在发送第二次请求。

服务器驱动

  服务器检查客户端的请求头部集并决定提供哪个版本的页面。

    

  某个中间设备(通常是缓存代理)代表客户端进行协商。

HTTP之协议结构、通讯原理以及http特性和使用方法


  服务端会根据浏览器的请求返回对应的内容协商机制

      Content-Type

      Content-Language

      Content-Type

      Content-Encoding

    服务器驱动内容协商---近似匹配

    Accept-Langage:en;q=0.5,fr;q=0.0,nl;q=1.0,tr;q=0.0

21、HTTP的断点续传和多线程下载


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

◆Range :

用于请求头中,指定第一个字节的位置和最后一个字节的位置,

一般格式:Range:(unit=first byte pos)-[last byte pos]

例子:Range:bytes=0-499,Range:bytes=500-999,Range:bytes=-500,Range:bytes=500-,Range:bytes=500-600,601-999


◆Content-Range

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

一般格式:

Content-Range: bytes (unit first byte pos) - [last bytebos]/[entity legth]

而在响应完成后,返回的响应头内容也不同:

HTTP/1.1 200 Ok (不使用断点续传方式)

HTTP/1.1 206 Partial Content (使用断点续传方式)

HTTP之协议结构、通讯原理以及http特性和使用方法

标签: http
分享给朋友:

相关文章

在nuxt中使用localStorage

在nuxt中使用localStorage

摘至: https://zhuanlan.zhihu.com/p/82481387使用 localStorage 进行缓存,操作比 cookie 更简单,且存储空间更大,用 vue.js 使...

 前端入门html、css、js知识汇总(2)

前端入门html、css、js知识汇总(2)

68.ECMAScript{   简单数据类型:undefined,null,boolean,number,string   复杂数据类型:object...

前端入门html、css、js知识汇总(1)

前端入门html、css、js知识汇总(1)

注:本文适合需要一点前端知识,如有不懂自行百度或去W3C官网、去菜鸟教程查询1.html不需要编译,直接由浏览器执行   html文件时一个文本文件   h...

前端日常编程代码便捷汇总

前端日常编程代码便捷汇总

1、使用form表单进行上传文件需要为form添加enctype="multipart/form-data" 属性,除此之外还需要将表单的提交方法改成post,如下 me...

实现iframe高度自适应的6种方法

实现iframe高度自适应的6种方法

iframe高度自适应JS自适应高度,其实就是设置iframe的高度,使其等于内嵌网页的高度,从而看不出来滚动条和嵌套痕迹。对于用户体验和网站美观起着重要作用。如果内容是固定的,那么我们可以通过CSS...

评论列表

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

分享:

支付宝

微信