HTTP基本原理

简介: HTTP的基本原理

URL

简单定义
通过一个链接,使我们可以找到网络上的某个资源,这个链接就是URL。

格式

URL并不是随便写的,而是有固定的格式。基本的组成格式如下。
schme://[username:password] hostname:port;paramaters[#fragment]
中括号包含的内容并不是必须的。
scheme:协议,常用的协议有http,https,ftp等。
username:password:特定场合下需要用到用户名和密码。
hostname:主机地址,可以是域名或者IP地址。
port:端口。指服务器设定的端口,http默认的端口是80,https的端口是440.
path:网络资源在服务器中的特定地址。
paramters:参数,用来指定某个访问资源时的附加信息。但现在用的不多,基本上会和query混用。
query:参数,用来查询某个资源,当查询多个资源时,可以用&连接。
fragment:有两个作用,一个作用是作单页面路由,另一个作用是做html锚点。可以控制一个页面打开时,自动滚到某个特定的位置。

HTTP和HTTPS

http超文本传输协议,作用是把超文本数据从网络传输到本地浏览器。而https则是http的安全版,在http层加入ssl,简称https。https的基础就是SSL,他的作用主要有以下两种:
1.建立一个信息安全通道,保证数据传输的安全性。
2.确认网站的真实性,凡是使用了https协议的网站,可以用单机鼠标烂地址的锁头标志来查看网站之后的真实信息。

HTTP的请求过程。

就像我们平常直接在浏览器地址栏输入一个URL,则我们可以看到对应页面的内容。实际的过程就是浏览器向网站所在的服务器发送一个请求,网站服务器接收到请求后对其进行处理和解析,然后返回对应的响应,接着传回浏览器,浏览器再对其进行解析。

请求

请求由客户端发向服务器,分为四部分内容,请求方法,请求网址,请求头,请求体。
请求方法:常用的get,post,delete,put。
简单介绍以下get和post。
GET:get的请求参数包含在URL里面,数据可以在URL中看到,而post请求的url不会包含这些数据,数据都是通过表单形式传输的,会包含在请求体中。
GET请求的数据最多只有1024字节,POST方法没有限制。
请求网址:确定客户端想请求的资源。
请求头:说明服务器要使用的附加信息,常用的比如Cookie,Referer,User-Agent等。下面举一些简单的请求头信息。
Accept:指定客户端可以接受的哪些类型的信息。
Accept-Language:用于指定客户端接受的语言类型。
Accept-Encoding:用于客户端可接受的内容编码。
COOKIE:为了辨别用户进行会话跟踪而存储在用户本地的数据。它的主要功能是维持当前对话,例如当我们登入进一个网站之后,即使我们刷新之后,还是会保留原来自己的登录状态。
Refer:用来标识是从哪个页面发过来的。
User-Agent:简称UA 这是一个特殊的字符串头,可以使服务器识别客户端使用的操作系统。版本,浏览器的相关信息。做爬虫时需要加入信息来伪装成浏览器,要不容易被识别出来。
Content-Type:也叫互联网媒体类型,或者MIME类型,在HTTP协议消息头中用来表示具体请求的媒体类型信息,例如text/html代表的是HTML格式。image/gif代表的是GIF图片,application/json代表JSON类型。
请求体:一般就是post请求中的表单数据。

响应

响应,即Response,有服务器返回给客户端,分为三个部分,响应状态码,响应头和响应体。
响应状态码,常用的有200代表服务器正常响应,404代表服务器未找到,500代表服务器内部错误。
响应头,包含了服务器对请求的应答信息,如Conten-type等。DATE:用于标识响应产生的时间,Content-Encoding:用于指定响应内容的编码。Sever:包含服务器的信息。Content-type:文档类型,指定返回的数据是什么类型。
Exipres:用于指定的响应的过期时间。

响应体

响应体的正文数据都存储在于响应体中。

HTTP2.0

HTTP2.0对HTTP进行了一些优化。二进制分帧层,将文本格式的数据修改为二进制格式。使得解析起来更加高效、同时将请求和响应数据分为更小的帧,并采用二进制编码。引入了几个新的概念。如帧:是数据通信的最小单位。比如一个请求被分为了请求头帧和请求体数据帧。数据流:一个虚拟通道,可以承载双向的消息,每一个流都有一个唯一的整数ID来标识。
消息:与逻辑请求或响应消息对应的完整的一系列帧。
多路复用:在之前的版本中,如果客户端想发起多个并行的请求用来提升性能,则必须使用多个TCP来连接,而且浏览器为了控制资源,还会对单个域名有6-8个请求的限制,但是在HTTP2.0中,由于有了进制分帧的加持,HTTP2.0不再用TCP连接的方式来实现多路并行,客户端和服务器将HTTP消息分解为互不依赖的帧,然后交错发送,最后再另一端组装起来,达到了并行交错的发多个请求,请求之间互不影响。提高现有网络容量的利用率,从而减少页面加载时间。
流控制:流控制是用来阻止发送方向接受方发送大量数据的机制,以免超出后者的需求能力。
服务端推送:服务器可以对一个客户端发送多个响应。除了最除的响应外,服务器可以向客户端推送额外的资源,而无需向客户端明确的请求。服务端可以主动推送,则客户端也有权选择拒绝,如果推送的资源已经被浏览器进行缓存,浏览器可以通过RST_STREAM帧来选择拒收。
另外主动推送也遵守同源策略,即服务器不能随便将第三方资源推给客户端,而必须是经过服务器和客户端双方确认才行,这样能保证一定的安全性。

总结

对HTTP的基本知识进行复习和梳理。

相关文章
|
6月前
|
网络协议 Linux
HTTP协议基本原理简介(二)
HTTP协议基本原理简介(二)
70 1
|
6月前
|
缓存 前端开发
HTTP协议基本原理简介(三)
HTTP协议基本原理简介(三)
53 1
|
1月前
|
缓存 移动开发 前端开发
HTTP请求走私漏洞原理与利用手段分析
HTTP请求走私漏洞原理与利用手段分析
39 1
|
2月前
|
安全 网络安全 数据安全/隐私保护
http原理
http原理
29 3
|
6月前
|
算法 网络协议 安全
HTTP 原理和面试题
HTTP 原理和面试题
|
3月前
|
存储 网络协议 安全
HTTP协议和运行原理
HTTP协议和运行原理
|
4月前
|
缓存 网络协议 算法
(二)Java网络编程之爆肝HTTP、HTTPS、TLS协议及对称与非对称加密原理!
作为一名程序员,尤其是Java程序员,那必须得了解并掌握HTTP/HTTPS相关知识。因为在如今计算机网络通信中,HTTP协议的作用功不可没,无论是日常上网追剧、冲���、亦或是接口开发、调用等,必然存在HTTP的“影子”在内。尤其对于WEB开发者而言,HTTP几乎是每天会打交道的东西。
96 10
|
4月前
|
数据采集 缓存 安全
http proxy 协议的工作原理与常见用途
在这篇博客文章中,我们将深入探讨HTTP代理协议的工作原理,揭示它如何在客户端和服务器之间传递HTTP请求和响应,并讨论它在各种应用场景中的常见用途。
http proxy 协议的工作原理与常见用途
|
5月前
|
安全 网络安全 数据安全/隐私保护
深入理解HTTP协议:工作原理与安全性
【6月更文挑战第28天】HTTP是互联网基础协议,用于浏览器与服务器通信。基于请求-响应模型,无状态且可扩展。但其明文传输、缺乏身份验证和数据完整性校验导致安全问题。HTTPS 加入SSL/TLS,提供加密、身份验证和完整性校验,保障网络安全。了解HTTP原理和安全至关重要。
|
5月前
|
网络协议 前端开发 Java
网络原理 - HTTP / HTTPS(4)——构造http请求
网络原理 - HTTP / HTTPS(4)——构造http请求
56 1