04慕课网《进击Node.js基础(一)》HTTP讲解
HTTP:通信协议
流程概述:
http客户端发起请求,创建端口默认8080
http服务器在端口监听客户端请求
http服务器向客户端返回状态和内容
稍微详细解析:
1.域名解析:浏览器搜素自身的DNS缓冲,查看是否有被请求的域名所定义的IP,缓冲1分钟
## 谷歌浏览器输入:
chrome://net-internals/#dns
2.搜索操作系统自身的DNS缓冲(浏览器无缓冲或失效)
3.读取本地的HOST文件
C:\Windows\System32\drivers\etc
4.浏览器发起 一个DNS的系统调用
- 宽带运营商服务器查看本身缓存
- 运营商服务器发起一个迭代(从跟域名对应的IP开始)DNS解析的请求
运营商服务器把结果IP返回操作系统内核同时缓存
操作系统内核把IP发回给浏览器
最终浏览器拿到域名所对应的IP地址
5.浏览器获得域名对应IP后,发起http“三次握手”
- 浏览器的随机端口(8080)向服务器发送TCP连接请求,
该请求会经过路由设备、网卡、内核的TCP/IP协议栈、防火墙最终到达web服务端
6.TCP/IP连接建立以后,浏览器向服务器发送http请求
- 比如使用http的GET方法请求一个根域的域名,歇息可以采用HTTP 1.0的协议
7.服务器端接受到请求,根据路径参数,经过后端的处理,将结果的数据返回给浏览器;
- 如果是页面就会把完整的HTML页面代码返回给浏览器
8.浏览器获取到HTML页面代码然后开始解析和渲染
- HTML页面中的JS、CSS、图片等静态资源同样需要经过一个个HTTP请求重复以上步骤获取
9.浏览器将HTML和静态资源结合渲染,将完整页面呈现
请求和响应
http的整个流程可以归纳为请求和响应两个部分
两者都会发送http头和正文信息
http头
附加的信息:内容类型、服务器发送响应日期、http状态码
正文信息
用户提交的表单数据,或者返回的数据
HTTP的请求方法
GET:获取、读取数据
POST:向指定资源提交数据
PUT:更新
DELETE:删除
HEAD:与GET相似,服务器不传回全部数据
状态码
1xx | 标识请求被接受 |
2xx | 请求被成功接受并且处理掉 |
3xx | 重定向 |
4xx | 客户端错误 |
5xx | 服务器端错误 |
常见状态码
200 | 客户端请求成功 |
400 | 客户端请求有语法等错误,服务器端未能理解 |
401 | 请求未经过授权 |
403 | 服务器端拒绝,由于权限等原因 |
404 | 未找到资源 |
500 | 服务器端发生不可预期错误 |
503 | 服务器当前不能处理,也许一段时候可以 |