1.域名解析
2.建立链接(三次握手)
3.发送和收取数据
4.断开连接(四次挥手)
应用层
表示层
会话层
传输层
网络层
数据链路层
物理层
B/S:http无状态的短连接
域名解析:请求DNS服务器,将域名解析为IP地址,然后根据IP地址在互联网上找对应的服务器,向服务器发送GET请求
负载均衡:服务器可能有多台
请求的数据存在哪里?分布式缓存、静态文件、数据库
浏览器解析返回的数据,如果是静态资源,请求静态资源服务器
发起一个请求(http连接)本质上就是建立一个Socket连接
Http Header
控制着浏览器的渲染行为和服务器的执行逻辑
(1)http请求头
Accept-Charset:客户端浏览器接受的字符集
Accept-Encoding:接受的内容编码
Accept-Language:指定一种语言,如zh-cn
Host:指定被请求资源的Internet主机和端口号
User-Agent:客户端浏览器将自身的操作系统、浏览器、其它属性告知服务器
Connection:当前连接是否保持
(2)http响应头
Server:使用的服务器名
Content-type:指明发送给接收者的实体正文的媒体类型,如:text/html;charset=dbk
Content-Encoding
Content-language
Content-length:指明实体正文的长度
keep-live:当前连接保持的时间 timeout-5,max=120
(3)http状态码
Ctrl+F5
浏览器直接向目标URL发送请求,而不使用浏览器的缓存;其次,会在请求头中加一些请求头,请求到达服务端之后,也获取最新数据
加了哪些请求头?Pragma:no-cache Cache-Control:no-cache(不仅可以控制浏览器,还可以控制与http相关的缓存和代理服务器)
DNS域名解析
在浏览器地址栏输入想要访问的url,回车
(1)浏览器检查缓存中是否有该域名对应的解析过的IP地址,如果有,结束
浏览器中缓存的大小、时间(TTL)都有限制
时间应该权衡,时间太长,如果该段时间内域名对应的IP有变化,将导致一段时间该域名无法访问;时间太短,导致有可能每次访问都要重新解析
(2)浏览器缓存中没有,查找操作系统缓存
c:windows/system/drivers/etc/hosts
/etc/hsot
(3)hosts文件中也没有,浏览器请求本地域名服务器
在网络配置中,有DNS服务器地址这一项的配置
操作系统把这个域名配置为LDNS(本地域名服务器)
本地域名服务器一般能解析80%的域名
(4)本地域名服务器仍未命中,本地域名服务器请求RootServer域名服务器
(5)根域名服务器返回给本地域名服务器一个所查询域的主域名服务地址(gTLD)
gTLD服务器是国际顶级域名服务器(如.com .cn .org)
(6)本地域名服务器向gTLD服务器发送请求
(7)gTLD服务器查找并返回域名对应的Name Server域名服务器的地址
(8)本地域名服务器向Name Server域名服务器发送请求
Name Server域名服务器会查询存储的域名和ip的映射关系表,根据域名得到IP地址和TTL值
(9)Name Server域名服务器返回域名对应的ip和TTL值
(10)local DNS Server收到Name Server的返回值之后,会缓存该域名、ip对应关系,缓存时间由TTL决定,并将返回值返回给浏览器
跟踪域名解析的过程
windows nslookup
linux nslookup dig
刷新缓存的域名
Windows ipconfig /flushdns
Linux /etc/init.d/nscd restart
CND
内容分布网络(content delivery network)
构建在现有Internet上的一种先进的流量分配网络
将网站的内容发布在最接近用户的网络边缘,使用户可以就近访问资源
一般是缓存静态资源
负载均衡
链路负载均衡
集群负载均衡
操作系统负载均衡