1.0 从一个http请求来看网络的分层原理
一个复杂的网络
在内网中使用网线进行传输,连接到公网使用光纤进行连接
为了简化网络的结构,将网络的各方面进行分层,每一层只和上一层或者下一层进行交互,将网络分层。只要层与层的接口保持不变,就不会影响到其他层。
3. 一个http请求流程
域名解析过程
首先去本地的dns缓存,然后查找本地host文件,再去向电脑上配置的dns服务器发送请求
2.0 http协议
超文本传输协议,无状态的(不保存用户的信息),可扩展(请求头可以添加自己的东西)
http格式
起始行(描述请求和响应的基本信息)
- 头部字段集合 (使用k-v键值对更加详细的说明报文)
- 消息正文 (实际传输的数据,不一定是纯文本,可以是图片,文件等二进制流数据)
2. 请求报文格式
请求行报文
请求方法:如GET/HEAD/PUT/POST,表示对资源的操作
- 请求目标:通常是一个uri,标记了请求方法要操作的资源
- 版本号:表示报文使用的HTTP协议版本
HTTP头字段
- 头部字段是k-v键值对的形式
- key和value之间用‘’:‘’分隔最后使用CRLF换行表示字段的结束。
- 比如前后端中后端协商传输的数据类型:“content-type:application/json”
注意点:
- 字段名部区分大小写,字段名里不允许出现空格,可以使用“-”,但不能使用“_”
响应报文格式
- 响应行报文
- 版本号:表示报文使用的HTTP协议版本
- 状态码:一个三位数,用代码的形式表示处理结果,比如200,500服务器错误
- 原因:
3.0 http请求的完整过程
首先是浏览器去解析url的域名
2. 根据域名提供对应的ip地址:首先是从浏览器缓存中查看,然后去本机的hots文件中去查看,然后在从远程服务器上去请求,在浏览器中输入下面的代码就可以查看到浏览器缓存
chrome://internals/#events
3. 拿到ip地址后,浏览器就和服务器发送三次握手
握手完成后,就开始组装http请求报文,发送报文
5. 服务收到请求报文后,请求报文解析,发送响应数据
6. 浏览器收到响应之后开始渲染页面
7. 第四次握手表示连接的结束