http协议那些事儿
1. HTTP协议
1.1 http 技术背景
为啥叫超文本传输协议呢
# 技术由来 在互联网早期的时候,我们输入的信息只能保存在本地,无法和其他电脑进行交互。我们保存的信息通常都以文本即简单字符的形式存在,文本是一种能够被计算机解析的有意义的二进制数据包。而随着互联网的高速发展,两台电脑之间能够进行数据的传输后,人们不满足只能在两台电脑之间传输文字,还想要传输图片、音频、视频,甚至点击文字或图片能够进行超链接的跳转,那么文本的语义就被扩大了,这种语义扩大后的文本就被称为超文本(Hypertext)。HTML 就是最常⻅的超⽂本了,它本身只是纯⽂字⽂件,但内部⽤很多标签定义了图⽚、视频等的链接,再经过浏览器的解释,呈现给我们的就是⼀个⽂字、有画⾯的⽹⻚了。 # SO,HTTP 是⼀个在计算机世界⾥专⻔在「两点」之间「传输」⽂字、图⽚、⾳频、视频等「超⽂本」数据的「约定和 规范」。 # 浏览器 浏览器使用的是HTTP协议的主要载体。随着网景 大战结束,浏览器迅速发展,至今已有很多浏览器。
1.2 http 基本概念
HTTP 是什么
HTTP 是超⽂本传输协议,也就是HyperText Transfer Protocol。HTTP的名字「超⽂本协议传输」,它可以拆成三个部分:超⽂本、传输、协议
URI/URL
# URI的全称是(Uniform Resource ldentifier),中文名称是统一资源标识符,使用它就能够唯一地标记互联网上资源 # URL的全称是 ((Uniform Resource Locator) ,中文名称是统一资源定位符,也就是我们俗称的网址,它实际上是URI的一个子集。 # URN 通过名字来标识或识别资源。
常见的字段有哪些?
Host 字段:客户端发送请求时,⽤来指定服务器的域名 Content-Length 字段:表明本次回应的数据⻓度。 Connection 字段:常⽤于客户端要求服务器使⽤TCP 持久连接,以便其他请求复⽤ HTTP/1.1 版本的默认连接都是持久连接,但为了兼容⽼版本的HTTP,需要指定 Connection ⾸ 部字段的值为Keep-Alive。 Content-Type 字段:⽤于服务器回应时,告诉客户端,本次数据是什么格式 Content-Type: text/html; charset=utf-8 发送的是网页,使用的是utf8格式 客户端请求的时候,可以使⽤ Accept 字段声明⾃⼰可以接受哪些数据格式。 Accept: */* 客户端声明⾃⼰可以接受任何格式的数据。 Content-Encoding 字段 :说明数据的压缩⽅法。表示服务器返回的数据使⽤了什么压缩格式
1.3 http 常见状态码
5大状态码
301 Moved Permanently 永久移动,请求的资源已被永久的移动到新URI; 302 Found 临时移动,资源临时被移动,客户端应继续使用原有URI; 304 Not Modified 文件未修改,请求的资源未修改,服务器返回此状态码时,常用于缓存; 400 Bad Request 客户端请求的语法错误,服务器无法解析或者访问; 401 Unauthorized 请求要求用户的身份认证; 402 Payment Required 此状态码保留,为以后使用; 403 Forbidden 服务器理解请求客户端的请求,但是拒绝执行此请求; 404 Not Found 服务器没有该资源,请求的文件找不到; 405 Method Not Allowed 客户端请求中的方法被禁止; 500 Internal Server Error 服务器内部错误,无法完成请求; 502 Bad Gateway 服务器返回错误代码或者代理服务器错误的网关; 503 Service Unavailable 服务器无法响应客户端请求,或者后端服务器异常; 504 Gateway Time-out 网关超时或者代理服务器超时; 505 HTTP Version not supported 服务器不支持请求的HTTP协议的版本,无法完成处理。
1.4 http 报文介绍
http 协议主要有三大部分组成: 起始行、请求头、实体
每个报文的其实行 都是由 3个字段组成:、
方法: http、ftp等
URL:统一资源定位符 俗称 网址
http版本:
3.5 http 请求URL 介绍
我们以访问http://www.example.com:80/path/to/myfile.html? key1=value1&key2=value2#SomewhereInTheDocument 为例。
1. http://告诉浏览器使用何种协议。对于大部分Web资源,通常使用HTTP协议或其安全版本,HTTPS协议。另外,浏览器也知道如何处理其他协议。例如,mailto:协议指示浏览器打开邮件客户端;ftp:协议指示浏览器处理文件传输。 2. www.example.com既是一个域名,也代表管理该域名的机构。它指示了需要向网络上的哪一台主机发起请求。当然,也可以直接向主机的 IP address 地址发起请求。但直接使用IP地址的场景并不常见。 3. 端口。两个主机之间要发起TCP连接需要两个条件,主机+端口。它表示用于访问Web 服务器上资源入口。 4.路径。 /path/to/myfile.html是 Web服务器上资源的路径。以端口后面的第一个/开始,到?号之前结束,中间的每一个/都代表了层级(上下级)关系。这个URL的请求资源是一个html页面。 5.参数。?key1=value1&key2=value2是提供给Web服务器的额外参数。如果是GET请求,一般带有请求URL参数,如果是POST请求,则不会在路径后面直接加参数。这些参数是用&符号分隔的键/值对列表。key1 = value1是第一对,key2 = value2是第二对参数 6.锚点.#SomewhereInTheDocument是资源本身的某一部分的一个锚点。锚点代表资源内的一种"“书签",它给予浏览器显示位于该“加书签”点的内容的指示。例如,在HTML文档上,浏览器将滚动到定义锚点的那个点上;在视频或音频文档上,浏览器将转到锚点代表的那个时间。值得注意的是#号后面的部分,也称为片段标识符,永远不会与请求一起发送到服务器。
3.6 http 版本
HTTP/1.0
第一个在通讯中指定版本号的HTTP协议版本,常用于代理服务器。 成为了面向事务的应用层协议,该协议需要每请求一次响应建立并拆除一次连接, 引入了POST和HEAD命令 相对于一版本在一定程度上保障的数据的传输安全,是一个典型的串行连接事务。 缺点: 串行处理,效率低下
HTTP/1.1
引入持久连接机制并被默认采用,且更好的配合代理服务器工作 还支持管道方式同一连接下同时发送多个请求,以降低线路负载,提高传输速度 新增方法: PUT、PATCH、OPTIONS、DELETE 缺点: 同一TCP连接里,所有通信按次序进行,服务器只能顺序处理回应,如果前面处理过慢,会有许多请求排队,造成队头阻塞(Head-of-line blocking)
HTTP/2.0
HTTP/1.1 与HTTP/2.0 区别
1、HTTP/2.0 采用二进制格式,而非文本格式 2、HTTP/2.0是完全的多路复用,非有序并阻塞的,只需要一个链接即可实现并行 3、使用报头压缩,HTTP/2降低了开销 4、HTTP/2让服务器可以将响应主动 "推送"到客户缓存中
4. HTTPS协议
4.1 https 协议介绍
HTTPS(全称是 Hyper Text Transfer Protocol over SecureSocket Layer)是身披SSL/TLS 外壳的 HTTP。它在 HTTP 之上利用 SSL/TLS 建立安全的信道,加密数据传输。它被广泛用于互联网上安全敏感的通讯,例如电商、支付等应用
对称加密:加密与解密用同一套密钥,如 DES、3DES 和 AES 等
非对称加密:加密和解密所使用的密钥不同,如 RSA、DSA等
HTTPS 是由 HTTP 和SSL/TLS协议构建的更为安全的网络协议
TLS 记录层协议规定数据的最大大小限制为16KB 字节
4.2 Cookie 和Session 会话
HTTP协议是一种无状态协议,即每次服务端接收到客户端的请求时,都是一个全新的请求,服务器并不知道客户端的历史请求记录;Session和Cookie的主要目的就是为了弥补HTTP的无状态特性。
客户端请求服务端,服务端会为这次请求开辟一块内存空间,这个对象便是Session对象,存储结构为ConcurrentHashMap 。Session 弥补了HTTP无状态特性,服务器可以利用Session存储客户端在同一个会话期间的一些操作记录。
HTTP TCP/IP
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。