前两天总结了TCP今儿来个HTTP,来看一看啊

先来认识URL

URL:统一资源定位器(Uniform Resource Locator)的简称,我们见到的太多了,每打开一个网页就会看到,浏览器通过解析给定URL就可以在网络上找到对应的资源
在这里插入图片描述
1、协议名称:我们常见的HTTP(超文本传输协议,默认端口80)、HTTPS(默认端口443)、SMTP(传邮件.默认端口25)、FTP(传文件,默认端口21)、Telnet(远程登录,默认端口23)

2、服务器地址:就是你要找的资源的地址,(有时前面会有用户名和密码,格式:uesername:password@hostname)这里是“user:pass@www.example.com”)

3、端口号:可以省略,省略时使用的是默认端口,传输协议有自己的默认端口。

4、带层次的文件路径:从第一个“/”开始到"?“为止,就跟你在windows下的盘符路径是一个概念,是带层次的文件路径部分。

5、查询字符串:从“?”开始到“#”为止之间的部分是查询字符串,查询字符串可以允许有多个参数,参数之间用“&”作为分隔符,

6、片段标识符:从“#”开始到最后,都是片段标识符,这里是ch1_7374

HTTP协议格式

在这里插入图片描述

对HTTP协议的理解

HTTP是超文本传输协议,用于万维网服务器到浏览器之间的通信,HTTP协议长承载于TCP协议之上,基于TCP/IP通信协议来传递数据;它的升级安全版是HTTPS,于HTTP相比多了加密层,安全性更好;

HTTP协议的版本

HTTP0.9:只支持GET这一个请求方式,只能访问HTML格式的资源
HTTP1.0:一次请求创建一次连接获得一个web资源,响应后就会断开连接,下一个请求需要再次建立TCP连接,但我们都知道TCP需要三次握手才能建立连接,所以1.0版本效率很低。默认短连接
HTTP1.1:一次请求创建一次连接,可以允许多个HTTP请求,获得多个web资源,默认长连接
HTTP2.0:增加双工模式,不仅客户端能够同时发送多个请求,服务端也能同时处理多个请求,采用了多路复用的技术(频分、时分、波分),做到同一个连接并发处理多个请求效率很高。

HTTP的方法

在这里插入图片描述
GET:请求获取URL所标识的资源,没有请求正文部分,可以理解为数据库的查
POST :在URI所标识的资源后附加新的数据,有请求正文,理解为改
HEAD:请求获取由URI所标识的资源的响应消息报头
PUT: 请求服务器存储一个资源,并用URI作为其标识,理解为增
DELETE:请求服务器删除URI所标识的资源,理解为删
TRACE:请求服务器回送收到的请求信息,主要用于测试或诊断
CONNECT:保留将来使用
OPTIONS :请求查询服务器的性能,或者查询与资源相关的选项和需求
GET和POST的区别
1、get请求的参数放在url中,安全性比较差;而post请求是放在body里面的,安全性比较好;
2、get请求的url参数有长度限制,post请求没有长度限制
3、get只能通过url编码,post支持多种编码方式
4、get后退刷新无害,post数据会被重新提交

HTTP状态码

类别原因
1xx(信息性状态码)接收的请求正在处理
2XX(成功状态)请求正常处理完毕
3XX(重定向状态)需要进行附加操作完成请求
4XX(客户端状态)服务器无法处理请求
5XX(服务器状态)-服务器处理请求出错

2XX
200:ok,客户端请求成功,正常响应
204:正常响应,但没有实体
206:范围请求,返回部分数据
3XX
301:永久重定向
302:临时重定向
303:和302类似,但必须使用GET方法
304:状态未改变
307:临时重定向,不该改变请求方法
4XX
400:请求报文语法错误
401:需要认证
403:服务器拒绝访问对应的资源
404:请求的资源不存在
5XX
500:服务器故障
503:服务器处于超负载或正在停机维护

HTTP常见Header

1、Host:客户端告知服务器,所请求的资源在哪儿
2、Connection:默认值是keep-alive,要求服务器不要关闭TCP连 接,close()表示明确要求关闭连接。
3、Accept-Encoding:说明自己可以接收的压缩方式
4、User-Agent:声明用户的操作系统和浏览器版本信息
5、Content-Type:数据类型,常见的有html、 image/jpeg,image/png,video/mp4,application/json,zip
6、Content-Length:Body的长度,请求和响应头都可以使用
7、Location:搭配3**状态码使用,告诉客户端接下来要去哪里访问
8、Cookie:用于在客户端存储少量信息.通常用于实现会话的功能
9、Set-Cookie:服务器向客户端设置Cookie;
10、Referer: 当前页面是从哪个页面跳转过来的

HTTP协议的特点

1、灵活:HTTP支持传输任意类型的数据对象,由Content-Type标记传输的类型。
2、简单快捷: 客户端在向服务器请求服务时,只需要请求方法路径URL,请求方法有:GET、HEAD、POST等,每一种方法规定了客户端与服务器联系的类型,由于HTTP协议简单,使得HTTP服务器的规模小,因而通信速度很快。

3、无状态:HTTP是无状态协议,无状态是指协议对于事务处理没有记忆能力,缺少状态意味着如果后续需要处理前面的信息,必须要重来一遍,但这样会导致每次连接传送的数据量增大。

4、无连接:无连接的含义就是每次连接就只处理一个请求。服务器处理完客户端的请求之后,并收到客户端的应答之后,就断开连接,这种方式可以节省传输时间。
5、支持C/S模式

HTTP和HTTPS

简单理解,http传送数据(包括账号和密码),都是明文传送,很容易被窃取或者侦听,在现有的互联网应用中,很明显有不安全因素,所以有了https,可以简单理解成https多了一层加密解密层,
简单来说,HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议,要比http协议安全。
http+加密+认证+完整性保护=https
HTTPS的特点
内容加密:采用混合加密技术,中间者无法直接查看明文内容
验证身份:通过证书认证客户端访问的是自己的服务器
保护数据完整性:防止传输的内容被中间人冒充或者篡改
HTTPS和HTTP的区别主要如下:
1、https协议需要到ca申请证书,一般免费证书较少,因而需要一-定费用。
2、http是超文本传输协议,信息是明文传输,https则是具有安全性的ssl加密传输协议。
3、http和https使用的是完全不同的连接方式,用的端口也不一样,前者是80,后者是443。
4、http的连接很简单,是无状态的; HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议,比htt

https加密方式
先来了解一下对称加密和非对称加密
对称加密:加密和解密都是同一个密匙。即发送方和接收方都必须使用相同的密钥对明文进行加密解密;加密速度比较快;

非对称加密:有两个密钥,公开秘钥(publickey)和私有密钥(privatekey)是一对,如果用公开密钥对数据进行加密,只有用对应的私有密钥才能解密;如果用私有密钥对数据进行加密,那么只有用对应的公开密钥才能解密。加密速度比较慢,非对称加密将公钥暴露,供客户端加密,服务端使用私钥解密。

对称加密和非对称加密结合方式
浏览器使用Https的URL访问服务器,建立SSL链接,服务器收到SSL链接,发送非对称加密的公钥A返回给浏览器,浏览器生成随机数,作为对称加密的密钥B;浏览器使用公钥A,对自己生成的密钥B进行加密,得到密钥C;浏览器将钥C,发送给服务器;服务器用私钥D对接受的密钥C进行解密,得到对称加密钥B。浏览器和服务器之间可以用密钥B作为对称加密密钥进行通信。

HTTP的长连接和短连

长连接:即建立一次连接,可以被多个请求访问,客户端和服务器建立连接完成一次读写后不会主动关闭,后面可能会继续使用这个连接。长连接多用于操作频繁,点对点的通讯,而且连接数不能太多情况,比如数据库的连接。频繁的短连接会造成socket错误。
在这里插入图片描述
短连接:建立一次连接只进行一次请求。管理起来比较简单,而像WEB网站的HTTP服务器用的就是短连接,省资源。
在这里插入图片描述

HTTP1.0和2.0的区别是

HTTP2.0使用了多路复用的技术,做到同一个连接并发处理多个请求,而且并发请求的数量比HTTP1.0大了好几个数量级。

HTTP1.0不支持header数据的压缩,HTTP2.0使用HPACK算法对header的数据进行压缩,这样数据体积变小,在网络上传输就会更快。

当我们对支持HTTP2.0的web server请求数据的时候,服务器会把一些客户端需要的资源一起推送到客户端,免得客户端再次创建连接发送请求到服务器端获取。这种方式非常适合加载静态资源。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值