网络协议之HTTP与HTTPS

HTTP是一种发送和接收HTML页面的方法超文本传输协议。

HTTP协议包括:

1、请求协议

浏览器 向 WEB服务器发送数据的时候,这个发送的数据需要遵循一套标准,这套标准中规定了发送的数据具体格式。

2、响应协议

WEB服务器 向 浏览器发送数据的时候,这个发送的数据需要遵循一套标准,这套标准中规定了发送的数据具体格式。

主要用于Web浏览器和网站服务器之间传递信息。它的主要特点如下:

1. 基于请求响应模式: HTTP协议采用客户端-服务器架构C/S模式,客户端向服务器发送请求,服务器返回相应的响应。这种模式能有效分离应用逻辑,提高系统的可维护性和扩展性。
2. 基于文本传输: HTTP协议使用ASCII码作为通信协议,每个请求和响应都是一条文本消息,这使得通信协议更加简单、直观、易于处理。
3. 支持多媒体传输: HTTP协议可以传输多种类型的数据,如HTML、XML、JSON、图片、音频、视频等,这使得HTTP协议成为一种通用的网络传输协议,适用于各种不同类型的应用场景。
4. 无连接: HTTP协议是一个无连接协议,每个请求都是独立的,服务器处理请求后立即关闭连接。这有助于节省资源,但也带来了一些缺点,如需要重新建立连接、重复发送相同的头部信息等。
5. 无状态: HTTP协议没有客户端的状态存储,也没有事务处理的“内存”能力。这意味着每次访问网站时可能需要重复的登录操作。

然而,HTTP协议也存在一些不足之处。由于它以明文方式发送内容,不提供任何方式的数据加密,因此安全性较差。如果攻击者截取了Web浏览器和网站服务器之间的传输报文,就可以直接读懂其中的信息。因此,HTTP协议不适合传输一些敏感信息,比如信用卡号、密码等支付信息。

HTTPS则是以安全为目标的HTTP通道。它在HTTP的基础上通过传输加密和身份认证保证了传输过程的安全性。HTTPS的内容加密、身份验证以及数据完整性保护的原理主要依赖于SSL/TLS协议。

HTTPS使用对称加密和非对称加密相结合的方式来实现内容加密。

HTTPS使用数字证书来验证服务器的身份。

HTTPS通过消息认证码(MAC)来确保数据的完整性。

HTTP 默认使用 80 端口,而 HTTPS 默认使用 443 端口。

HTTPS也叫做披着SSL外壳的HTTP,在通信接口部分他使用了SSL和TLS来进行代替。对于HTTP协议来说,他直接和TCP进行通信。而HTTPS为了保证安全,使用了SSL来提供保障,通信时首先与SSL进行通信,再由SSL来与TCP进行通信,正是因为由SSL的存在,才使得HTTP具备了HTTPS的加密、证书、安全性保障这些功能。

HTTP与HTTPS 他们的区别主要由以下几个方面:

1.安全性:

HTTP: HTTP是明文传输的,这意味着数据在传输过程中不加密,容易受到中间人攻击。敏感信息,如密码和信用卡号,如果通过HTTP传输,可能会被窃取。

HTTPS: HTTPS使用SSL(Secure Sockets Layer)或其继任者TLS(Transport Layer Security)来加密数据传输。即使数据在传输过程中加密,更难被中间人攻击窃取。

2.URL:

HTTP: HTTP的URL以http://开头。

HTTPS: HTTPS的URL以https://开头。

3.证书:

HTTP: HTTP不需要使用数字证书。

HTTPS: HTTPS需要使用数字证书,这个证书由受信任的第三方机构(如CA,Certificate Authority)颁发,用于验证网站的身份。

4.默认端口:

HTTP: 默认端口为80。

HTTPS: 默认端口为443。

5.性能:

HTTP: 由于不需要加密和解密数据,HTTP的性能通常比HTTPS更高。这在某些情况下可以使HTTP成为更好的选择,尤其是对于不涉及敏感信息的静态内容传输。

HTTPS: HTTPS需要进行加密和解密操作,这会增加一些计算开销,但现代计算机和服务器通常能够很好地处理这类负担。

常见的HTTP请求方式包括:

GET:用于请求服务器发送资源。通常用于请求网页、图片等资源。

POST:用于向指定资源提交数据进行处理请求(例如提交表单或者上传文件)。POST请求可能会导致新的资源的建立和/或已有资源的修改。

PUT:从客户端向服务器传送的数据取代指定的文档的内容。

DELETE:请求服务器删除指定的页面。

HEAD:类似于GET请求,只不过返回的响应中没有具体的内容,用于获取报头。

OPTIONS:用于查询服务器支持的HTTP方法。

CONNECT:HTTP/1.1协议中预留给能够将连接改为管道方式的代理服务器。

TRACE:回显服务器收到的请求,主要用于测试或诊断。

PATCH:用于对资源进行部分更新。

常见的HTTP请求头包括:

Host:指定请求的服务器的域名和端口号,用于服务器区分请求的域名。这是发送请求时必须的报头域。

Cookie:用于存储一些用户信息以便让服务器辨别用户身份的。例如,登录信息、购物车数据等都可以存储在Cookie中。

User-Agent:发送请求的客户端的类型及版本信息,如浏览器类型、操作系统等。服务器可以根据User-Agent提供的信息进行内容协商,返回适合客户端的资源。

Accept:客户端能够接收的内容类型,如“text/html”、“application/json”等。这个头部可以告诉服务器客户端想要接收的数据类型。

Accept-Encoding:客户端能够接受的内容编码方式,如“gzip”、“deflate”等。这个头部可以告诉服务器客户端是否支持压缩以及支持哪些压缩方法。

Accept-Language:客户端偏好的语言,如“zh-CN”、“en-US”等。这个头部可以告诉服务器客户端的语言偏好,以便服务器返回适合的语言版本资源。

Connection:指定客户端与服务器的连接管理方式,如“keep-alive”表示持久连接(表示客户端希望与服务器的连接保持活动状态,以便后续的请求可以继续通过这条连接发送,减少因为建立新连接而产生的开销。),或“close”表示关闭连接。这个头部可以影响连接的复用和性能。

Content-Type:请求的报文格式,如“text/html;charset=utf-8”。当请求包含实体主体时(如POST请求中的表单数据或文件上传),Content-Type用于指定实体主体的媒体类型。

Referer:当浏览器向web服务器发送请求的时候,一般会带上Referer,告诉服务器该网页是从哪个页面链接过来的。这个头部有助于服务器进行来源追踪和统计分析。

Cache-Control:用于控制缓存的指令。例如,“no-cache”表示不缓存请求或响应的任何内容,“max-age”表示响应的最大有效时间等。

Authorization:用于包含客户端的认证信息,如用户名和密码。这个头部通常用于HTTP基本认证或摘要认证等认证机制中。

http 各个状态码

HTTP状态码是服务器返回给客户端的,用于指示HTTP请求的结果或状态。它们由三位数字组成,并根据第一位数字的不同分为五类:信息响应(100-199)、成功响应(200-299)、重定向(300-399)、客户端错误(400-499)和服务器错误(500-599)。

1. 信息响应(1xx)

100 Continue:客户端应继续其请求。服务器已收到请求的一部分,正在等待其余部分。

2. 成功响应(2xx)

200 (成功) 服务器已成功处理了请求。 通常,这表示服务器提供了请求的网页。
201 (已创建) 请求成功并且服务器创建了新的资源。
202 (已接受) 服务器已接受请求,但尚未处理。
203 (非授权信息) 服务器已成功处理了请求,但返回的信息可能来自另一来源。
204 (无内容) 服务器成功处理了请求,但没有返回任何内容。
205 (重置内容) 服务器成功处理了请求,但没有返回任何内容。
206 (部分内容) 服务器成功处理了部分 GET 请求。

3. 重定向(3xx)

300 (多种选择) 针对请求,服务器可执行多种操作。 服务器可根据请求者 (user agent) 选择一项操作,或提供操作列表供请求者选择。
301 (永久移动) 请求的网页已永久移动到新位置。 服务器返回此响应(对 GET 或 HEAD 请求的响应)时,会自动将请求者转到新位置。
302 (临时移动) 服务器目前从不同位置的网页响应请求,但请求者应继续使用原有位置来进行以后的请求。
303 (查看其他位置) 请求者应当对不同的位置使用单独的 GET 请求来检索响应时,服务器返回此代码。304 (未修改) 自从上次请求后,请求的网页未修改过。 服务器返回此响应时,不会返回网页内容。
305 (使用代理) 请求者只能使用代理访问请求的网页。 如果服务器返回此响应,还表示请求者应使用代理。

4. 客户端错误(4xx)(请求错误)这些状态代码表示请求可能出错,妨碍了服务器的处理

400 Bad Request:请求报文中存在语法错误。

401 Unauthorized:需要进行HTTP认证(BASIC认证、DIGEST认证)的认证信息。

403 Forbidden:服务器理解请求客户端的请求,但是拒绝执行此请求。

404 Not Found:服务器无法根据客户端的请求找到资源(网页)。

405 (方法禁用) 禁用请求中指定的方法。

5. 服务器错误(5xx)

500 (服务器内部错误) 服务器遇到错误,无法完成请求。
501 (尚未实施) 服务器不具备完成请求的功能。 例如,服务器无法识别请求方法时可能会返回此代码。
502 (错误网关) 服务器作为网关或代理,从上游服务器收到无效响应。
503 (服务不可用) 服务器目前无法使用(由于超载或停机维护)。 通常,这只是暂时状态。

504 (网关超时) 服务器作为网关或代理,但是没有及时从上游服务器收到请求。
505 (HTTP 版本不受支持) 服务器不支持请求中所用的 HTTP 协议版本。

Cookie和session的区别

1、数据存放位置不同:

cookie:cookie数据保存在客户端。

session:session数据保存在服务器端

2、安全程度不同:

cookie不是很安全,别人可以分析存放在本地的COOKIE并进行COOKIE欺骗,考虑到安全应当使用session。

3、性能使用程度不同:

session会在一定时间内保存在服务器上。当访问增多,会比较占用你服务器的性能,考虑到减轻服务器性能方面,应当使用cookie。

4、数据存储大小不同(数据类型:Cookie只能存储ASCII字符,而Session可以存储任意数据类型。):

cookie:一个 cookie存储的数据不超过4k

session存储在服务器上可以任意存储数据。当 session存储数据太多时,服务器可选择进行清理。

5、会话机制不同

session会话机制:session会话机制是一种服务器端机制,它使用类似于哈希表(可能还有哈希表)的结构来保存信息。

cookies会话机制:cookie是服务器存储在本地计算机上的小块文本,并随每个请求发送到同一服务器。 Web服务器使用HTTP标头将cookie发送到客户端。在客户端终端,浏览器解析cookie并将其保存为本地文件,该文件自动将来自同一服务器的任何请求绑定到这些cookie。

get 和 post 区别

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值