hhtp基本原理
url和uri
统一资源标志符URI就是在某一规则下能把一个资源独一无二地标识出来。而url被成为统一资源定位符。URL是URI的子集。URI还有一个自己URN统一资源名称。 三者之间的区别: 以人的信息为例:你的身份证号码147258369是一个URI【urn】,但不是URL。因为虽然身份证号虽然代表你自己,但是确不能简单通过身份证号找到你这个人。你的地址【中国/xx省/xx市/xx县/xx大学/xx号宿舍楼/xxx号寝/法外狂徒张三】这个字符串可以找到你(排除特殊情况),同样标识出了唯一的一个人。所以这个既是url也是uri
Http和Https
Http协议
超文本传输协议,是一个基于请求与响应,无状态的,应用层的协议,常基于TCP/IP协议传输数据,互联网上应用最为广泛的一种网络协议,所有的WWW文件都必须遵守这个标准。设计HTTP的初衷是为了提供一种发布和接收HTML页面的方法。HTTP 默认工作在 TCP 协议 80 端口,用户访问网站 http:// 打头的都是标准 HTTP 服务。
HTTPS
HTTPS是身披SSL外壳的HTTP。HTTPS是一种通过计算机网络进行安全通信的传输协议,经由HTTP进行通信,利用SSL/TLS建立全信道,加密数据包。HTTPS使用的主要目的是提供对网站服务器的身份认证,同时保护交换数据的隐私与完整性。HTTPS 默认工作在 TCP 协议443端口,它的工作流程一般如以下方式: 1、TCP 三次同步握手 2、客户端验证服务器数字证书 3、DH 算法协商对称加密算法的密钥、hash 算法的密钥 4、SSL 安全加密隧道协商完成 5、网页以加密的方式传输,用协商的对称加密算法和密钥加密,保证数据机密性;用协商的hash算法进行数据完整性保护,保证数据不被篡改。
两者的优缺
- HTTP 明文传输,数据都是未加密的,安全性较差,HTTPS(SSL+HTTP) 数据传输过程是加密的,安全性较好。
- 使用 HTTPS 协议需要到 CA(Certificate Authority,数字证书认证机构) 申请证书。
- HTTP 页面响应速度比 HTTPS 快,主要是因为 HTTP 使用 TCP 三次握手建立连接,客户端和服务器需要交换 3 个包,而 HTTPS除了 TCP 的三个包,还要加上 ssl 握手需要的 9 个包,所以一共是 12 个包。
- HTTPS 比 HTTP 要更耗费服务器资源。
请求
请求由客户端发出,可以分为四部分内容:请求方法、请求网址、请求头、请求体。
请求头:
- Accept:请求报头域,指定用户端可接受哪些类型信息
- Accept-Laungua:指定客户端可接受语言类型
- Accept-Encoding: 指定客户端可接受内容编码
- Host:用于指定请求资源的主机IP和端口号
- Cookie:
- Referer:标识请求是从哪个页面发过来的
- User-Agent:简称UA,标识客户操作系统、版本等信息。
- Content-Type:互联网媒体类型,表示具体请求中的媒体类型。【在Django框架基础知识中演示过】
响应:
响应状态码
2xx (成功) 表示成功处理了请求的状态代码。 3xx (重定向) 表示要完成请求,需要进一步操作。 通常,这些状态代码用来重定向。 4xx(请求错误) 这些状态代码表示请求可能出错,妨碍了服务器的处理。即客户端的问题 5xx(服务器错误) 这些状态代码表示服务器在尝试处理请求时发生内部错误。 这些错误可能是服务器本身的错误,而不是请求出错。
常见状态码
状态码 | 说明 | 详解 |
---|
100 | 继续 | 部分的请求服务器已经接受,但是客户端应继续发送求请求的剩余部分。 | 200 | 成功 | 表示服务器已经成功接受请求,并将返回客户端所请求的最终结果。 | 301 | 永久移动 | 客户端请求的网页已经永久移动到新的位置,当链接发生变化时,返回301代码告诉客户端链接的变化,客户端保存新的链接,并向新的链接发出请求,已返回请求结果。 | 403 | 禁止访问 | 服务器拒绝此请求。 | 404 | 未找到 | 服务器找不到请求网页 |
会话和cookies
静态网页和动态网页
静态网页指没有后台数据库、不含程序和不可交互的网页。编的是什么它显示的就是什么、不会有任何改变。 动态网页一般都是依靠服务器端的程序来生成的,不同人、不同时候访问页面,显示的内容都可能不同。网页设计者在写好服务器端的页面程序后,不需要手工控制,页面内容会按照页面程序的安排自动更改变换。
cookies
略【在Djiango中回详细介绍】
概念补充:
TCP三次握手:
第一次握手:客户端尝试连接服务器,向服务器发送 syn 包(同步序列编号Synchronize Sequence Numbers),syn=j,客户端进入 SYN_SEND 状态等待服务器确认。 第二次握手:服务器接收客户端syn包并确认(ack=j+1),同时向客户端发送一个 SYN包(syn=k),即 SYN+ACK 包,此时服务器进入 SYN_RECV 状态。 第三次握手:第三次握手:客户端收到服务器的SYN+ACK包,向服务器发送确认包ACK(ack=k+1),此包发送完毕,客户端和服务器进入ESTABLISHED状态,完成三次握手。
TLS是传输层加密协议,前身是SSL协议,由网景公司1995年发布,有时候两者不区分。
|