1、域名解析(查找dns缓存)【找到就停止搜索】(查找浏览器的dns缓存或缓存是否失效)
2、没有找到,搜索系统自身的dns缓存(找到就停止搜索)
3、没有找到,读取本地系统的host文件(找不到配置项)
4、没有找到,浏览器发起的一个dns的系统调用,这个dns一般是运营商配置的
(1)宽带运营商服务器查看本身缓存
(2)运营商服务器发起一个迭代的dns解析请求
运营商找到顶级域名 com域名,顶级域名可以找到com域的ip地址(域名注册商提供的),找到域名注册商,找到域名和地址
运营商服务器把结果返回操作系统内核同时缓存起来
操作系统内核把结果返回给浏览器
最终浏览器拿到了www.xxx.com的ip地址
5浏览器获取域名对应的ip地址后,发起http的三次握手
浏览器通过随机端口,发出tcp的连接请求
6、TCP/IP连接建立后,可以向服务器发送http请求,用http的get方法请求一个根域的域名,协议可以采用http 1.0的协议
7、服务器端接受到了这个请求,根据路径参数,经过后端的一些处理后,把处理后的一个结果的数据返回给浏览器。如果请求的是一个页面,那么会把html页面代码返回给浏览器
8、浏览器拿到了页面的完整的html页面代码,在解析和渲染页面的时候,里面的JS CSS、图片静态资源,他们同样要经过上面的主要的7个步骤
9浏览器根据拿到的资源对页面进行渲染,最终把一个完整的页面呈现给用户
请求和响应都会发送http头和正文信息
http头发送的是一些附加信息:内容类型
服务器发送响应的日期、http状态码
正文是用户提交的表单数据
开发者工具的Remote address是服务器地址,域名解析的结果
状态码:1xx 请求接受 2xx 请求成功 3xx 重定向 4xx 服务器端错误 5xx服务器端错误
200 ok请求成功
400 服务器端错误
401请求没有授权
403 服务器接受请求,但是拒绝服务
404 请求资源不存在
500服务器端发送不合预期的错误
503 暂时不可处理请求
web服务器收到客户端的HTTP请求,会针对每一次请求分别创建一个
用于代表请求的request对象
代表响应的response对象
request对象:用户提交过来的数据
response对象:服务器端向客户端发送的数据
向客户端发送数据,以字节为单位(一定要先设置编码方式,再输出)
response.setCharacterEncoding("UTF-8")
response.setHeader("Content-Type","text/html;charset=UTF-8");//还要通知客户端解码方式