用户操作
域名解析
浏览器从浏览器的DNS缓存中查找www.baidu.com条目。
从本地主机缓存中查找DNS缓存条目。
从host中找。
访问本机设置的首选DNS服务器,通过UDP协议访问DNS服务器53端口。DNS必须返回目标URL的IP地址。首先查自身的DNS缓存。
DNS服务器上会配置所有根域(cn,com,net等)的IP地址。
DNS会请求根域com询问www.baidu.com的IP地址。根域com会告诉DNS我不知道www.baidu.com的IP。但是我知道baidu.com的DNS服务器的IP(域名注册商提供的)。你找他去。然后首选DNS服务器找到域名注册商的DNS服务器询问。一般在这里就会找到。因为我们购买的域名就是从他们这里注册的。
后续还会有四步尝试,意义不大了。
TCP三次握手
客户端:服务端老哥你支持TCP协议么?
服务端:没问题啊老铁!来吧我准备好了!
客户端:社会我服哥!等着我一会儿就来(ω)
客户端发起http请求
http请求基于TCP协议
web服务器nginx接到http请求
http请求默认端口80
所以我们的web服务器nginx通常监听80端口,Apache也一样监听80端口。
web服务器是一个socket服务。
静态内容
(html,jpeg,mp3,apk)nginx直接把资源通过http协议返回给浏览器
动态内容
(php)nginx通过fastcgi模块转发给php的fastcgi的管理进程php-fpm。fpm拉起一个work进程处理动态请求。返回http响应给浏览器。
cgi用来规定web服务器和外部程序如何传递信息。
fastcgi是对cgi性能得。升级
php-fpm是一个php的fastcgi
php-fpm有一个master进程用来监听分配请求,然后会有多个work进程来处理任务。