HTTP(超文本传输协议)

HTTP 是一个在计算机世界里专门在「两点」之间「传输」文字、图片、音频、视频等「超文本」数据的「约定和规范」。
从输入URL(统一资源定位符,俗称网址)到页面展示到底发生了什么?

1、DNS域名解析(查看浏览器缓存、操作系统缓存、本地DNS服务器、根服务器、顶级域名服务器、权威域名服务器,获得具体的IP地址)

2、建立TCP连接,三次握手(HTTP端口号80,HTTPS端口号443,还会加一层协议做加密和验证服务)

3、客户端发送HTTP请求

4、服务器处理并返回HTTP报文

5、浏览器解析并渲染界面

6、TCP四次挥手断开连接

答:首先进行URL输入,会检查输入的合法性,因为想要访问的数据所在服务器的IP才是在互联网的唯一标识,仅通过网址或者域名没办法找到对应的IP地址,所以要进行DNS域名解析,查找对应的IP进行访问。

客户端会首先在浏览器缓存内查询有没有对应的IP,再去操作系统中查找缓存,如果没有就去询问本地的DNS服务器,如果本地DNS服务器能找到直接返回,如果没有就去根域名服务器,根域名服务器、顶级域名服务器不会负责解析,但会逐层往下,作为有引路人指向权威服务器,就能得到对应的IP地址。

找到对应的IP之后,客户端与服务器进行TCP连接,三次握手,C发送SYN信号,S发送ACK确认和SYN信号,C回复ACK,确认双方都能接收发送信息。

客户端发送HTTP请求,请求想要的资源,服务器收到之后解析处理并返回结果报文,C接收响应,加载资源渲染界面。

浏览器加载完界面,用户关闭界面,断开与客户端的连接,TCP四次挥手。

HTTP响应

状态码:3位数,第一个数字定义为相应类别

1xx:指示信息——表示请求已被接收

2xx:成功——请求已被成功接收、理解、接受

3xx:重定向——进行附加操作才能完成请求

4xx:客户端错误——请求有错或请求无法实现

5xx:服务器错误——服务器处理失败

常见的字段:

host:指定服务器的域名

connection:keep-alive保持长连接,close关闭长连接

Content-Type 字段:本次数据是什么格式

..................................

HTTP 和 HTTPS 有什么区别?

HTTPHTTPS
端口号80443
URL前缀http:///https://
安全性运行在TCP协议之上,明文传输;C/S无法验证身份运行在SSL/TSL协议之上,传输内容都进行对称加密,但加密的密钥通过服务器证书进行了非对称加密。安全性高
资源消耗低,不需要加密握手,更快高,通信相对较慢
搜索引擎优化更安全,可能会优先显示

回答:端口号不同,URL前缀不同,HTTP运行在TCP协议之上,传输采用明文传输,HTTPS使用SSL/TLS进行加密通信,TCP三次握手之后还需要进行SSL/TSL四次握手,传输的内容都通过对称密钥加密,密钥则通过服务器进行进行非对称加密,安全性更高,因此用到的资源也会更多,速度会慢些。适用于对数据安全性要求较高的场景,比如账户登录,在线支付等。

https是如何通过TLS/SSL进行加密通信的?

答:对称加密(一个密钥能进行加密和解密,加密解密算法都已知)和非对称加密(私钥加密,公钥解密)混合的方式进行通信。

利用数字签名和数字证书保证S的安全性。客户端C、服务器S、第三方机构CA。

S信任CA,所以CA有S的公钥,CA向S颁发证书(里面有S的公钥),并用CA的私钥对消息摘要进行加密。

S获得CA的证书,并传给C。

C信任CA,并拥有CA的公钥,公钥解密之后得到消息摘要,并散列证书里的内容得到摘要,对比验证S证书的真实性。

C验证S证书的真实性,则得到S的公钥。

1、客户端向服务器索要并验证服务器的公钥;

2、双方协商产生会话密钥(非对称加密);

3、用会话密钥进行对称加密通信。

HTTP的缓存技术

答:对于一些重复的http请求,比如说每次得到的结果是一样的,可以将请求和响应的数据缓存在本地,下次请求时直接在本地获取,肯定可以提升性能。

强制缓存:是指由浏览器决定是否使用缓存,如果浏览器判断没有过期,则直接使用缓存。通过cache-control(相对时间)和expire(绝对时间)字段来确定。

浏览器第一次申请服务器资源时,服务器返回时会加上一个cache-control字段设置了过期时间大小,浏览器再次访问资源时会首先判断是否使用该缓存。

协商缓存:是指由浏览器和服务器共同协商本地缓存是否还有效。如果浏览器判断cache control已过期,则在请求的字段上加一个If-None-Match 字段,该字段的值就是 ETag 唯一标识;服务器再次收到请求后会根据这个唯一标识与服务器资源的标识进行比较,如果相等则不会返回资源,让浏览器重定向304(not modified),否则返回资源,并带上新的etag标识。http1.0应该是利用if modified since 和expire时间来与服务器资源最后一次修改时间比较的。

HTTP1.0  VS   HTTP1.1

答:从连接方式上来说,1.0采用的是短连接,即每次发起HTTP请求都要进行三次握手,请求完毕进行四次挥手。而1.1采用长连接,一个网页完成打开后TCP链接不会关闭。从状态码上来说,1.0新增了很多状态码,如410页面gone,206范围请求等。从资源缓存上来说,1.0主要使用if modified since和expire字段,而1.1则新增了如etag,cache-control等多种方式实现缓存策略。此外,1.0查询某个对象时,可能只需要一部分,但是会返回整个对象的内容,1.1之后支持range范围查询,状态码是206。1.1加入了host字段,能够支持虚拟主机下一个IP托管多个域名的问题。通过域名解析出对应的IP。

HTTP1.1  VS   HTTP2.0

答:

1、2.0支持多路复用,一个连接可以同时执行多个请求与响应,而1.1是串行的,每个请求和响应都需要独立的连接,2.0处理多个请求时更加高效。

2、2.0支持头部压缩,1.1仅支持body压缩,能够减少网络开销。

3、1.1数据传输采用文本格式,2.0支持二进制传输,二进制帧更紧凑高效,减少了数据传输量和消耗。

4、服务器推送,2.0请求某一数据时,服务器会把相关的内容也推送给客户端,减少了后续请求次数,而1.1需要客户端自己发送请求获取相关资源。

HTTP 是不保存状态的协议, 如何保存用户状态?

HTTP是不保存状态的协议,意味着连接过程中不会记录用户状态,身份认证等信息。于是服务器端会为每个用户建立一个seesionID,存储在服务器端,用这个ID关联会话数据,包括身份认证信息、购物车记录等。为了客户端跟踪绘画,服务器会讲这个sessionID发送给客户端,设置一个coockie存储,然后客户端可以根据这个sessionID发送给服务器,查找到相应的会话数据。

URI  VS  URL的区别

URI :uniform resource identifier 是统一资源标识符,可以唯一标识一个资源。类似于身份证。

URL :uniform resource locator 是统一资源定位符,一个具体的URI,可以唯一标识一个资源,并且指明了如何定位该资源。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值