WWW(World Wide Web)服务是分布在Internet中成千上万个超文本文档链接成的网络信息系统,这种系统采用统一的资源定位器和声音图文用户界面,用户可以方便地浏览网上信息和各种网络服务(WWW服务器通过超文本标记语言(HTML)把信息组织成为图文并茂的超文本,利用链接从一个站点跳到另个站点,是存储在Internet计算机中、数量巨大的文档的集合)。
简单的WWW模型如下:
一、HTTP
浏览器取得用户要求的网页必须网页所在的服务器建立TCP连接,WWW的运行方式也是客户端/服务端要取得用户要求的网页必须先与网页所在的服务器建立TCP连接。WWW运行方式客户端/服务器方式。web服务器的专用端口(80)时刻监视进来的连接请求,建立连接后用HTTP和用户进行交互。
-
HTTP(超文本传输协议):是一个简单的请求响应协议,特点是建立一次连接,只处理一个请求,发回一次应答,然后连接就释放了,所以被认为是无状态的协议,既不能记录以前的操作状态,因而也不能根据以前操作的结果连续操作。
浏览器通过统一资源定位器(Uniform Resource Locators, URL)对信息进行寻址。URL由3部分组成,指出了用户要求的网页的名字、网页所在主机的名字以及访问网页的协议。例如,http://www.w3.org/welcome.html?username=xxhh是一个URL,其中http是协议名称,www.w3.org域名(整个网络存在着无数个服务器,每个服务器都有自己的唯一标识,这个表示标识就是IP地址,但是IP地址不方便记忆,域名就相当于IP地址的别名),welcome.html?username=xxhhl 是网络资源路径。
如果用户选择了一个要访问的网页,则浏览器和Web服务器的交互过程如下:
- 浏览器接收URL
- 浏览器通过DNS服务器查找
www.w3.org的IP地址DNS - DNS给出IP地址18.23.0.32
- 浏览器与主机(18.23.0.32) 的端口80建立TCP连接(三次握手)
- 三次握手是客户端和服务端建立连接的过程(确定双方发送接收消息的能力):
- 客户端向服务器发送连接请求(发送SYN标识符,同步序列编号,TCP/IP建立连接时使用的握手信号)
- 服务器连接请求,向客户端返回消息(返回SYN ACK确认字符)
- 客户端向服务器发送同意连接的消息(ACK)
- 浏览器发出请求GET/welcome.html文件
-
www.w3.org服务器发送welcome.html文件 - 断开TCP连接(四次挥手)
- 四次挥手是客户端和服务端断开连接的过程
- 客户端向服务器发送请求,通知服务器数据发送完毕,请求断开连接(FIN当两端交换带有FIN标志的TCP并且每一端都确认另一端发送的FIN包时,TCP连接将会关闭;意思是连接一方再也没有更多新的数据发送)
- 服务器向客户端返回数据,告知收到(ACK)
- 服务器向客户端返回数据,告知客户端接收数据完毕,可以断开连接了(FIN、ACK)
- 客户端向服务器发送数据,可以断开连接了(FIN) (8)浏览器显示welcome.html文件
【第(5)步的GET是HTTP协议提供的少数操作方法中的一种, 其含义是读一个网不用的还有HEAD (读网页头信息)和POST (把消息加到指定的网页上)等。】
请求和响应实际上就是一段数据,只是这段数据需要遵循一个特殊的格式,这个特殊的格式由HTTP这一来规定
- /welcome.html?username=xxhh表示资源路径
- ? 后面内容叫做查询字符串,查询字符串是一个键值对的结构,一个名字对应一个值使用=连接,多个名值之间用&分割
- get请求通过查询字符串将数据发送给服务器,由于查询字符串会在url中显示,所以安全性较差,同时url地址长度有显示,所以get请求无法发送较大的数据;
- post请求通过请求体来发送数据,安全性相对较好,请求体大小没有限制。
二、HTTPS
- HTTP请求和响应报文都是明文,为了给http增加安全性,HTTPS在HTTP的基础上用TLS/SSL进行加密,这样通信就不容易收到拦截和攻击。
SSL是TLS的前身,都是加密安全协议,现在绝大多数浏览器都不支持SSL,而是支持TLS。
对称加密:在加密和解密时使用同一密钥的加密方式。
非对称加密:两个密钥来进行加密和解密,这两个密钥是公开密钥(public key,简称公钥)和私有密钥(private key,简称私钥)。
公钥和私钥,都能互相解密,公钥是公开的,加密的内容只能用私钥解开。如果你能用某把公钥解开一个密文,由于公私钥成对出现,那么你一定知道加密信息的人就是拥有这把公钥对应私钥的人,这样第三方机构(CA)用自己的私 钥加密某些信息(csr签名请求)然后把公钥公开给大家,如果你能用这个机构的公钥打开这个信息,那么就代表这个信息是CA承认的。
公钥加密私钥解,任何人都可以加密信息发给持有私钥的对方。私钥签名公钥验签,私钥签名出来的东西任何人都可以验证是否合法,不可抵赖。
CA:颁发数字证书的机构;
SSL证书主要用于网站HTTPS加密和服务器身份认证,包含了特定的公钥和私钥服务器安装了SSL证书之后就能通过HTTPS来访问服务器了,浏览器也会把HTTP默认端口80改为HTTPS默认端口443。
-
TLS采用非对称和对称两种方式进行加密,因为非对称加解密效率比较低,因此不会全程用这种方式来加密数据。服务器和客户端采用非对称加解密方式交换对称加密的密钥,保证这个对称密钥不泄露,交换成功后就采用对称加密方式。
三、DNS域名解析过程
计算机只能识别并且用IP地址进行定位,所以就需要域名转IP。www.bilibili.com. 域名是由点进行划分的,但是最后都是由根来进行统一管理,所以就没必要在全部域名的最后写.root ,所以直接把根用 . 表示,而一般我们会把这个点给忽略掉。这个根是由一群服务器组成(DNS服务器),但是这群服务器只用13个不同的域名,13个域名由12个独立机构运营,12个独立机构运营的根服务器有1467个节点,通过任播与最近的节点取得联系,当我们向根域名服务器进行联系时,就能找到离我们最近的根服务器了。
根域名服务器会管理com、cn等域名服务器,这些服务器称为顶级域名服务器(TLD),顶级域名服务器会分别管理各自的域名服务器,这些服务器叫权限服务器或权威域名服务器,权威域名服务器就会管理各自的主机。
当要访问一个网址,首先需要看看自己浏览器缓冲有没有对应的IP记录,查询主机本地文件里面有没有对应的记录,如有记录就没必要进行后面步骤了。
解析器与本地DNS服务器之间用的是递归方式传输,发送数据后直接返回结果;而本地DNS服务器和三层服务器直接用的是迭代的方式传输,也就是第一步得到什么,然后第二步,第三步。