1.当我们在web浏览器地址栏中输入:www.baidu.com 具体发生了什么呢?
- 对www.baidu.com 网址进行DNS域名解析,得到对应的ip地址。
- 根据这个ip,找到对应的服务器,发起tcp的三次握手。
- 建立tcp连接后发起http请求{tcp是比http更底层的一个连接协议}(ip是tcp下面一层)
- 服务器响应http请求,浏览器得到html代码
- 浏览器解析html代码,并请求html代码中的资源(如js、css、图片等) (先得到这些html代码,才能去找到这些资源)
- 浏览器对页面进行渲染呈现给用户
- 服务器关闭tcp连接
回答思路: 先说从url拿到html的过程,然后重点阐述 html的渲染过程,之后面试官再次提问测重回答(如:重排,重绘,tcp 3次握手 四次挥手)
TCP连接建立(三次握手)
-
第一次握手,由浏览器发起,告诉服务器我要发送请求了
-
第二次握手,由服务器发起,告诉浏览器我准备接受了,你赶紧发送吧
-
第三次握手,由浏览器发送,告诉服务器, 我马上就发了,准备接受吧
状态码:状态码用于表示服务器对请求的处理结果
- 1xx:指示信息——表示请求已经接受,继续处理
- 2xx:成功——表示请求已经被成功接收、理解、接受。
- 3xx:重定向——要完成请求必须进行更进一步的操作
- 4xx:客户端错误——请求有语法错误或请求无法实现
- 5xx:服务器端错误——服务器未能实现合法的请求。
列举几种常见的:
- 200(没有问题)
- 302(要你去找别人)
- 304(要你去拿缓存)
- 307(要你去拿缓存)
- 403(有这个资源,但是没有访问权限)
- 404(服务器没有这个资源)
- 500(服务器这边有问题)
2、浏览器的缓存分类 协商缓存:发请求到服务器,但是服务器并不会返回资源信息, 强缓存:不会发请求到服务器
3.协商缓存 缓存个啥呢? 浏览器:问服务器我缓存的文件有没有更新呢? 服务器: 1.没有更新,浏览器可以用缓存304 2.文件更新呢 浏览器就不能用缓存服务器发新的给浏览器 200
http缓存问题总结
tcp 和 udp 区别
| tcp | udp |
|---|---|
| 面向连接 | 面向非连接 |
| 可靠的 | 不可靠的 |
| 传输大量的数据 | 少量数据 |
| 慢 | 快 |