http

171 阅读2分钟

1.当我们在web浏览器地址栏中输入:www.baidu.com 具体发生了什么呢?

  1. 对www.baidu.com 网址进行DNS域名解析,得到对应的ip地址。
  2. 根据这个ip,找到对应的服务器,发起tcp的三次握手。
  3. 建立tcp连接后发起http请求{tcp是比http更底层的一个连接协议}(ip是tcp下面一层)
  4. 服务器响应http请求,浏览器得到html代码
  5. 浏览器解析html代码,并请求html代码中的资源(如js、css、图片等) (先得到这些html代码,才能去找到这些资源)
  6. 浏览器对页面进行渲染呈现给用户
  7. 服务器关闭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缓存问题总结

截屏2021-05-04 下午9.23.00.png

tcp 和 udp 区别

tcpudp
面向连接面向非连接
可靠的不可靠的
传输大量的数据少量数据