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状态码
正文信息
用户提交的表单数据,或者返回的数据