http协议那些事

2 篇文章 0 订阅

我们需要学习哪些内容呢?
http中的内容很多,我们可以先抽出一个框架(http模型)来整体学习,之后再进一步学习http运行机制。

当输入网址后发生什么##

http请求模型
这里写图片描述
client:客户端,向服务器发送请求。
server:服务端,提供服务和数据。
服务器和客户端不一定是两台不同的设备,有可能是一台或者多台,主要看操作。
浏览器行为与http协议
这里写图片描述
一个完整的流程:
1、首先用户输入网址(域名)并回车,浏览器准备向服务器发请求,在向服务器发请求之前,浏览器需要先判断一下网络通还是不通,就是第二幅图。
2、 浏览器要先跨过一道门,这个门就是网关,也可以是防火墙,这个门就把电脑和互联网给隔开了,我们也可以理解为门里面是局域网,门外面是互联网。
在这个门这里还有一个验证,主要是为了安全。
3、在使用windows时,计算机连不到网上的时候,电脑的右下角网络那里的状态有时候会出现个感叹号“!”。我们可以看到图中的地址后面有显示感叹号“!”,这说明电脑能连接到网上,但是连接不到互联网上,这就说明图2的 “门”起了作用。
出现感叹号的情况还有另外一个原因就是DNS解析有问题,第三幅图是在进行dn解析,在浏览器输入网址baidu.com之后,浏览器并不知道这个域名是指向哪个服务器,所有的计算机都有一个ip地址,是互联网识别计算机的的唯一凭证。但是我们输入的网址一般都是一个字符串,互联网是无法识别的,这时候就需要一个DNS服务器来对这个字符串进行解析,来解决这个问题。DNS实际上就是一个数据库,它主要保存你的网址和域名,以及域名所对应的IP地址。我们可以看到图中有好多的IP地址。
4、第四图:当浏览器知道了IP之后,就要在网络上“跋涉”,互联网并不是一个网线直接连接的,大部分是通过了好多透明设备。
5、当到达了对应的服务器之后,这个服务器可能是一台主机,也可能是一个集群。http到这里的时候还没有完成第一步呢,到这里只是建立了一个tcp协议(tcp协议是http的底层协议)的一个连接,是“发送请求”这个动作的准备工作。
6、到找到对应的服务器之后,这才是真生的去请求。,要请求得先验证这个是否是你要找的服务器,若是,则进行请求-响应,请求和响应式成对出现的。
7、拿到响应数据之后,我们返回。注意这里来时的路和回去的路不一定是相同的。路线的选择受限于网络。
8、浏览器渲染给用户看。

http协议详解

什么是http协议
1、http协议是超文本传输协议。从www浏览器传输到本地浏览器的一种传输协议,网站是基于http协议的,例如网站的图片、css、js等都是基于http协议进行传输的。
2、http协议是由客户机到服务器的请求(request)和从服务器到客户机的响应(response)进行约束和规范。

什么叫事务
当你要做一件事,这件事情要经过很多小步骤,这些小步骤必须按照顺序依次执行完成,当其中一个步骤发生了错误,则整个操作失败,这就叫做“事务”。

了解TCP/IP协议栈
这里写图片描述
TCP是http底层协议,这个要从协议栈来说起,栈是一种数据结构,栈结构上是分层次的,操作是受限制,栈主要特性是先入后出。栈可以基于数组去实现,但是栈不是数组。
我们一般把7层的称作ISO-OSI协议(ISO标准组织规定的一种标准),把4层的称作TCP/IP协议(事实上的协议,现在互联网上正在用的)。有时候会分为5层,即右边最后一层分为两层。右边的协议是能套到左边的标准中去的。
women
1、应用层:
为用户提供所需要的各种服务。例如:HTTP、FTP、DNS、SMTP等,这些协议都是直接面向功能的。
2、**传输层:**传输层是应用层的底层协议。
为应用层实体提供端到端的通信功能,保证数据包的顺序传送及数据的完整性。该层定义了两个主要的协议:传输控制协议(TCP)和用户数据报协议(UDP)。TCP是比较稳定,可靠的协议,它的功能是建立在UDP功能之上的,TCP就像打电话,双方有确认交流,能保证链路稳定,他是一对一的;而UDP不太稳定和可靠,它类似于聊微信和QQ,你不能确定对方在不在,无法保证连通。还有一个例子就是广播,它是单向传播的。他可以实现一对多的特点。
3、网络层网络层是传输层的底层协议。
主要解决主机到主机的通信问题。IP协议是国际互联网最重要的协议。
TCP和UDP的底层依赖更加细致的IP协议。
4、网络接口层可以理解成网卡。
负责监视数据在主机和网络之间的交换。
计算机要想进行网络通信,必须经过网卡。网络接口层再分细致点,可以分为数据链路层和物理层。网卡实际上在数据链路层之下,是属于物理层的。数据链路层是你和网卡进行通信的那块进行监视的,发送数据。
除了物理层之外,物理层之上的所有层均为软件。

在TCP/IP协议栈中的位置
这里写图片描述
首先我们要知道,http和https是两种不同的协议。现在我们使用http的场合越来越少了,https的使用场合越来越多。https比http多了链路加密协议TLS、SSL。

网卡和网关的区别:
网卡是一个部件。你想上网就必须有网卡,就好比想走路必须要有腿一样。
网关有两种形式,一种是硬件网关,就是一个设备,一种是软件网关,必须依靠电脑来运行。两种网关的功能是一样的,就是限制网络通信的出入。
路由器也是一个设备。路由器的地位和网关的地位是类似的。路由器就相当于“驿站”,也是一个硬件,也有用软件实现的。

http的工作过程
一次http操作称为一个事务,其工作过程可分为四部:
1、首先客户机与服务器需要建立连接,即TCP。只要单击某个超级连接,http工作开始。

2、建立连接后,客户机发送一个请求给服务器,例如get或者post等。请求方式的格式为:统一资源标识符(URL)、协议版本好、后边是MIME信息(指的是源数据或者基本数据)包括请求修饰符、客户机信息和可能的内容(一些附加数据,例如:get请求就没有附件数据,post的话会有附件数据)。

3、服务器收到请求后,给予相应的响应信息。其格式为一个状态行,例如200、包括信息的协议版本一个成功或错误的代码,后面是MIME信息包括服务器信息实体信息可能的内容

4、客户端接受服务器返回的信息,通过浏览器进行数据解析和渲染显示在用户的显示屏上,不同的客户端做的事情不一样,然后客户机与服务器断开连接(断开连接也是属于TCP)。

如果在以上过程中某一步出现错误,那么产生错误的信息将返回到客户端、有显示屏输出。对于用户来说,这些过程是由http自己完成的,用户只要用鼠标点击,等待消息显示就可以了。

请求与响应
http请求组成:请求行、消息报头、请求正文。
http响应组成:状态行、消息报头、响应正文。
请求行组成:以一个方法符号开头,后面跟着请求的URL和协议的版本。
状态行的组成:服务器http协议的版本、服务器发回的响应状态码和状态码的文字描述。

Accept 客户端能够接收的内容类型
Accept-Encoding 指定浏览器可以支持的web服务器返回内容压缩编码类型。即告诉服务器对数据可以进行适当的操作。
Accept-Language 浏览器可接受的语言。
Cache-Control 指定请求和响应遵循的缓存机制。
Connection: keep-alive 意思是TCP保持活跃。这是为什么呢?因为TCP反复的断开和连接会造成消耗资源的后果。TCP断开和连接操作属于IO操作。

http状态码
这里写图片描述
1、1XX:一般用在大数据的异步处理中。

请求方法
这里写图片描述
1、get与post请求二者之间的本质区别是什么?
答:get请求的时候不附加数据,post请求的时候可以附加数据。这个附加不是在url上附加,而是在http中的header中添加。
2、HEAD请求方法,可以看做是get的极简版,它只返回请求报头和状态,不会返回资源。
3、restful协议
一般使用put和delete的时候较少,主要用于操作数据库的时候,这时是严格使用restful协议的。

实体报头
这里写图片描述

cookie与session
这里写图片描述
1、两者的区别?
产生地点:
2、

cookie的使用
这里写图片描述
解析:第一次发送请求的时候是没有cookie的,第一次返回的时候cookie从服务器返回到客户端,用于身份验证;之后的再每次请求,都要把cookie以及请求参数等资源一起发给服务器,这时服务器根据cookie来确认身份等功能,从服务器中查找session来进行判断等等功能。
session的使用
这里写图片描述
缓存机制
这里写图片描述
缓存的优点:减少服务器资源消耗。
这里写图片描述
1、缓存协商是http请求的一部分,缓存协商有多种。
这里写图片描述
1、Etag机制,若是Etag机制,去检查Etag,若标志了Etag,则要向服务器发送请求,这个请求If-None-Match要在头里设定。
2、last-Modifies机制,这个检查时间戳的。
3、过期机制就是前面两种1、2、;优先检查Etag机制。他们要都交给服务器进行决策,服务器会把接收到的If-None-Match和If-Modified-Since与服务器中的相对比,若相同则走图中的304,若不同则图中的走200。

Etag/If-None-Match策略
1、Etag:web服务器响应请求时,告诉浏览器当前资源在服务器的唯一标识(生成规则由服务器决定)。
2、If-None-Match:当资源过期时(使用Cache-control标识的max-age),发现资源具有Etage声明,则再次向web服务器请求时带上头If-None-Match(Etag的值)。web服务器收到请求后发现头If-None-Match则与被请求资源的相应校验串进行比对,决定返回200或者304。

Last-Modified/If-Modified-Since策略
1、Last-Modified:标示这个响应资源的最后修改时间。web服务器在响应请求时,告诉浏览器资源的最后修改时间。
2、If-Modified-Since:当资源过期时(使用Cache-control标识的max-age),发现资源具有Last-Modified声明,则再次想web服务器请求时带上头If-Modified-Since,表示请求时间。web服务器收到请求后发现有头If-Modified-Since则与被请求资源的最后修改时间进行比对。若最后修改时间较新,说明资源又被改动过、则响应整片资源内容(写在响应消息包体内),http200;若最后修改时间较久,说明资源无更新,则响应http304(无须包体,节省浏览),告知浏览器继续使用所保存的cache。

http协议安全

HTTP的链路安全
1、加密重要数据
2、对非重要数据签名
3、使用安全连接https协议
解析:
http是明文发送,为防止有人在网络上窃听,我们需要对重要的信息数据进行加密。 加密手段也有很多。若是没有用https,那我们就要对重要数据进行加密,比如口令,身份信息等。一般来说应用最多的是口令,我们在本地做一个MD5,之后把这个MD5串上传,服务器也不知道你的具体密码是什么,MD5是单向不可逆的。
若是用的https的话,就不用这么麻烦,https是整个链路加密,就算你把包截下来,也没有办法解密,只有浏览器何服务器才可以解密。
签名机制:他和http的关系不到,主要用来身份验证,保证文件信誉上的机制。我们在设置https中的证书的时候,就用到了这个签名机制。

下一代标准http2
1、使用二进制格式传输,更高效,更紧凑。(http1使用的是纯文本传输)
2、对报头压缩,降低开销。(http1不能对报头压缩,只能对内容做压缩)
3、多路复用,一个网络连接实现并行请求。多路复用是通信上的概念,只用一个tcp连接就可以并行的多个请求,(http1中在tcp上传输是串行操作,一个tcp只能传输一个请求。)
4、服务器主动推送,减少请求延迟。(http1是一个无状态的协议,只能是客户端请求,服务器才能响应。)
注意了解websocket。
http2并不是开放了更多的TCP功能。

后台服务与http

反向代理与web服务

什么是代理?什么又是反向代理?
正向代理图:
这里写图片描述
正向代理是从局域网到互联网上去。

反向代理图:
这里写图片描述
反向代理是从互联网到局域网中。
反向代理服务器的意义:
反向代理除了可以节省IP之外,还可以做内网发布,负载均衡。

注意:
代理服务器上可以自己做一些限制。
代理的主要功能:帮助你提速,跨域。
路由器不是代理,他只是网络中的一个节点。

反向代理用途
这里写图片描述

反向代理做负载均衡的例子
这里写图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值