万维网
www的概念与组成结构
1.www的概念
www是world wide web的缩写,是一个资料空间,这个空间中,有用的事物被称为“资源”,并由全球“统一资源定位符”标识。这些资源通过超文本传输协议(HTTP)传送给使用者,而后者通过单击连接来获取资源。
2.www的组成
统一资源定位符(URL):一般格式为 <协议>://<主机>:<端口> / <路径>
超文本传输协议(HTTP):应用层协议,使用TCP连接进行可靠的传输。
超文本标记语言(HTML):用一些预定的标记来描述页面上的各种信息
万维网的工作过程
以访问清华大学的网站为例:
1)浏览器分析链接指向页面的URL (https://www.tsinghua.edu.cn/publish/thu2018/index.html)
2)浏览器向DNS请求解析www.tsinghua.edu.cn的IP地址
3)域名系统DNS解析出清华大学服务器的IP地址
4)浏览器知道 IP 地址后,通过 TCP 向服务器发送连接请求
5)万维网站点都有一个服务器进程,它不断地监视TCP的端口(默认80),一旦监听到请求后,建立连接
6)浏览器发出HTTP请求:/publish/thu2018/index.html
7) 服务器通过 HTTP响应把文件 index.html 发送给浏览器
8)TCP连接释放
9)浏览器解释文件 index.html,并把页面显示给用户
HTTP
http是无状态的,简化了服务器的设计。
http采用了 TCP 作为传输层协议,从而保证了数据的可靠传输。
HTTP server 1.0
单进程,一旦阻塞就完了
HTTP server 2.0:多进程
当接收连接以后,创建子进程来接管新的socket,这样主进程就不会阻塞了,这样可以接受新的连接了。
HTTP server 3.0:select模型
在 2.0版本中,采用多进程来解决并发的问题,但是进程需要消耗大量的系统资源,每次切换进程更是麻烦。
一个socket 连接就是一个所谓的文件描述符,用“进程”这个重量级的东西来表示它有点浪费。
从前阻塞是因为 浏览器还没有把数据发过来,而http迫不及待的想读,就被阻塞了,单进程情况下,一旦阻塞,什么事儿都干不了。
现在http server每次把 一批socket的编号传给操作系统,操作系统可以在后台检查 这些socket,一旦发现 可以读写了,就把对应的socket 做个标记,http server就被唤醒了。
联想:有点类似中断系统,早期的时候轮循,后来改为中断系统。
HTTP server 4.0:epoll模型
在 3.0版本的基础上微微改动,操作系统直接返回需要处理的 socket的编号,http server不需要挨个遍历。