文章目录
- HTTP协议是Hyper Text Transfer Protocol(超文本传输协议),用于万维网(www:World Wide Web)服务器传输超文本到浏览器的传送协议。它基于TCP/IP通信协议来传递数据(HTML文件,图片文件,查询结果等)。
- HTTP是应用层的一种通信工具,是进行数据交换的基础,是一种“客户端—服务器端”协议
HTTP消息结构
HTTP请求报文格式:
请求行(请求方法,url,HTTP协议版本)
请求头(键值对,请求响应类型)
空行
请求数据(POST请求有)
HTTP请求的过程
- 域名解析
- 发起TCP的3次握手
- 建立TCP连接后发起http请求
- 服务器响应http请求,浏览器得到html代码
- 浏览器解析html代码,并请求html代码中的资源(如js、css、图片等)
- 浏览器对页面进行渲染呈现给用户
请求方式
GET 请求
- 获取资源时使用GET请求,GET方法要求服务器将URL定位的资源放在响应报文的数据部分,回送给客户端。使用时,请求参数和对应的值附加在URL后面,‘?’ 代表URL的结尾与请求参数的开始,传递参数长度受限制。通过GET方式传递的数据直接表示在地址中,没有请求数据部分。
- 缺点:
涉及私密内容(如账号密码)会展现在地址栏或历史记录中,数据保密性很差。因此get请求不适合传送私密数据。
POST 请求
请求参数封装在HTTP请求数据中,以名称/值的形式出现,可以传输大量数据,对传送的数据大小没有限制,不会显示在URL中。
GET 和 POST 的区别
区别 | get | post |
---|---|---|
使用场景 | 从服务器上获取资源 | 表单提交 |
传参方式 | 通过URL | 通过消息体 |
数据类型限制 | 只允许ASCII字符 | 无限制 |
传输数据受URL长度 | 限制 | 不限制 |
传输数据的大小 | 无消息体,少量数据 | 有消息体,大量数据。 |
安全性 | 安全性差,用户名和密码将明文出现在URL上 ① 登录页面有可能被浏览器缓存 ② 其他人查看浏览器的历史记录,就可以拿到自己的账号和密码。 | 安全性高,参数不会被保存在浏览器历史或 web 服务器日志中 |
可见性 | 数据在 URL 中对所有人可见 | 数据不会显示在 URL 中 |
post支持的数据格式
网络通信过程
操作系统进程间通信方式
HTTP状态码
状态码 | 状态描述 |
---|---|
1xx | 指示信息 – 请求已接收,继续处理 |
2xx | 成功 – 请求已被成功接收、理解 |
3xx | 重定向 – 要完成请求必须进行更进一步的操作 |
4xx | 客户端错误 – 请求有语法错误 / 请求无法实现 |
5xx | 服务器端错误 – 服务器未能实现合法的请求 |
- 常见状态码
状态码 | 状态描述 |
---|---|
200 OK | 客户端请求成功 |
400 Bad Request | 客户端请求有语法错误,不能被服务器解析 |
401 Unauthorized | 请求未经授权 |
403 Forbidden | 服务器收到请求,但是拒绝服务 |
404 Not Found | 请求资源不存在(eg:输入错误的URL) |
500 Internal Server Error | 服务器发生不可预期的错误 |
503 Server Unavaliable | 服务器当前不能处理客户端的请求,一段时间后可能恢复 |
HTTP 和 HTTPS 区别
- http是超文本传输协议,信息是明文传输。
https则是具有安全性的ssl加密传输协议。 - http的连接很简单,是无状态的。Https协议是由SSL+Http协议构建的可进行加密传输、身份认证的网络协议,比http协议安全。
- 端口不同:
HTTP:80端口
HTTPS:443端口 - 资源消耗不同:
https通信会由于加减密处理消耗更多的CPU和内存资源; - 开销:
https通信需要证书,而证书一般需要向认证机构购买。
cookie 和 session 的区别
cookie是什么?
—— cookie是存储在客户端的一小段文本信息。保存了大量轨迹信息。它由服务器生成,发送给浏览器,浏览器将其保存,下次请求同一网站时会把该cookie发送给服务器端。
不同点 | cookie | session |
---|---|---|
存储位置 | 浏览器/本地(客户端) | 服务器 |
存储对象 | 任意Java对象 | String类型对象 |
安全性 | 低 可通过拦截或本地文件找到cookie进行攻击 | 高 |
对服务器的压力 | / | 占用服务器性能,过多会增加服务器压力 |
大小限制 | 保存数据不能>4K,个数限制(部分不 >20) | 无大小限制 |
网站的访问过程
- 在浏览器种输入URL
- 查询DNS,域名解析,获取域名对应的IP。
- 得到目标服务器的IP地址及端口号,调用系统库函数socket,请求一个TCP流套接字。客户端向服务器发送HTTP请求报文。
- 服务器端经过物理层→数据链路层→网络层→传输层→应用层,解析请求报文,发送HTTP响应报文。
- 关闭连接,TCP四次挥手。
- 客户端解析HTTP响应报文,浏览器开始显示HTML