让我们先回顾一下网络体系的七层体系结构图
一、DNS 解析:(网址转换成对应的IP地址)
1. DNS递归:
先看本地域名服务器是否缓存该地址,然后各服务器依次递归.(根域名服务器) -> .com -> google.com. -> www.google.com.(这样是不是会造成多次请求连接浪费资源?)
2. DNS缓存:
所以各个服务器都会存在缓存,以便下次使用,浏览器、路由器、域名服务器都会有缓存
3. DNS负载:
如果某个服务器接受的请求和大量连接,会给服务器造成巨大的压力,通过部署多个服务器来实现DNS 负载,重定向另外一个服务器,减轻当前服务器的压力。****
二、TCP 连接:(浏览器向该地址服务器发送TCP 连接请求)
三次握手请求连接(也可以考虑下四次挥手的过程)看之前的文章TCP 中的三次握手和四次挥手
三、发送HTTP 请求:(浏览器向网站服务器发送一个HTTP请求)
1. Https VS http
他们的区别就是在 HTTP 与 TCP 中加入了 ssl 进行相应的验证
2. HTTP 请求报文(请求行,请求报头和请求正文)
2.1 请求行:GET index.html HTTP/1.1
常用的方法有:GET,POST,DELETE,OPTIONS,HEAD
2.2 请求报头:允许客户端向服务器传递请求的*附加信息和客户端自身的信息*
常见的请求报头字段有:Accept, Accept-Charset, Accept-Encoding, Accept-Language, Content-Type, Authorization, Cookie, User-Agent等。
2.3 请求正文:如果使用的是POST,PUT方法时,数据就存储在请求正文里面,包括一些与请求正文相关的信息。
四、HTTP响应报文:(服务端向浏览器返回一个HTTP 报文)
状态码:由三位数字组成,第一个数字定义了响应的类别
-
1xx: 表示请求已接收,继续处理
-
2xx: 请求已经成功被接受
-
3xx: 重定向-要完成请求必须进行更进一步的操作
-
4xx: 客户端错误-请求语法错误或者请求无法实现
-
5xx: 服务端错误-服务器未能实现合法的请求
响应报头:
响应相关报头字段有:Server, Connection...
响应报文:
服务器返回给浏览器的文本信息,比如html,css,js,图片等等文件