在浏览器中输入 https://www.baidu.com后会发生什么 ?
步骤如下:
- 系统自动在本地寻找hosts文件,该文件在Sysem32/etc下,如果该文件中已经记录该域名对应的IP地址则直接访问IP,没有的话执行域名解析。域名解析,请求配置的DNS服务器,经过DNS服务器解析后获得一个目标IP地址。
- 准备访问目标IP,通过80号端口和按照Http协议生产一个报文。
- 访问IP,从上层的应用层已经生成的报文到传输层,网络层,物理层,层层装包生成最终报文,最后将数据发送出去。
- 寻找路由,从默认网关到路由器,再到下一跳路由器.......在网络中多次转发,最后到达百度的服务器。
- 找到百度的服务器后等待百度主机的防火墙等等验证。
- 百度服务器接受请求,并从物理网到应用层,层层拆包并检验数据,最后获得最终信息。
- 应用层解析后开始生成对应的HTML文件,装包并将文件数据返回给客户机。
- 主机经过网络的层层转发后收到了百度主机发来的HTML文件,拆包后交给浏览器,浏览器根据HTML文件进行渲染,最后生成页面。
只考虑到网络层的话:
- 根据域名,进行DNS域名解析。
- 拿到解析的IP地址,建立TCP连接
- 发送HTTP请求
- 服务器处理请求
- 返回HTTP报文
- 关闭TCP连接
- 浏览器解析HTML
- 浏览器渲染页面
知识点1:DNS
首先,我们输入的网址是域名。
由于IP地址具有不方便记忆并且不能显示地址组织的名称和性质等缺点,人们设计出了域名,并通过网域名称系统(DNS)来将域名和IP地址相互映射,使人更方便地访问互联网,而不用去记住能够被机器直接读取的IP地址数串。
DNS协议:
Domain Name Service 域名查询服务:
DNS是一套分布式的域名服务系统,每个DNS服务器上都存放着大量的机器名和IP地址的映射,并且是动态更新的,众多网络客户端都使用DNS协议来向DNS服务器查询目标主机的IP地址。访问DNS服务的过程:
要访问DNS服务,首先要知道DNS服务器的IP地址,本机中有存放DNS服务器的IP地址的文件。其中两个IP地址分别是首选DNS服务器地址和备选DNS服务器地址。Linux下常访问DNS服务器的客户端程序是host。 $ host -t A www.baidu.com可以获得百度的IP地址。
知识点2:
应用层的http协议:请求和应答,长连接和短连接
HTTP协议【特点、Cookie和Session机制、长连接和短连接、请求和响应报文】
知识点3:
传输层的TCP连接: 三次握手、四次挥手、保活机制
知识点4:
网络层的IP:转发
IP协议详解【IP报文头部结构、IP分片、IP路由、IP转发】
知识点5:
考虑表示层的加密问题