从一道经典面试题开始
当你在浏览器中输入一个URL,会发生什么?
简答:
- DNS解析 将URL变成对应的IP地址(相应服务器IP地址,或者代理服务器IP地址)
- 浏览器向对应服务器发起TCP/IP连接请求 在这个时候三次握手
- 成功建立TCP/IP连接
- 浏览器发起HTTP请求
- 服务端发送响应
- 客户端接收到服务端发来的资源
- 解析HTML 如果遇到HTML里面的资源 再次发起HTML请求 下载资源
- 断开连接 这个时候四次挥手
- 浏览器渲染 呈现页面
那我们既然要去了解计算机网络,那么从各个阶段去入手,细扣这道面试题就可以收获很多
URL
URL有两个好兄弟-URI URN ,我们要将他们三个区分清楚
- URI: 统一资源标识符,用来唯一的标识一个资源
- URL: 统一资源定位符,URL可以用来标识一个资源,并且还指明了如何定位这个资源 用地址定义一个资源
- URN: 统一资源命名。即通过名字来表示资源的 用名称定位一个资源
URL和URN都是URI的子集
那么我们来区分下URI的两个孩子URL和URN
就拿我们学校来举例子 通过一个人的学号,你知道这是哪个人,但你找不到他,这就叫URN
通过一串地址- 人类协议://江苏省/徐州市/铜山区/中国矿业大学/某宿舍楼/某宿舍号/某床 我们可以找到这个人 那这个就叫URN
-
URL:
- 资源标识
- 具有定位资源的功能
- 指明了获取资源所用的协议
- URL格式 协议名称 + 主机名称 + 端口号 + 路径 + 文件 + 查询所需字符串 例如:http://NaiGeLan.com:8080/index/index.html?a=1&b=2
-
URN:
- 资源命名
- 比如说telnet、mailto、news 和 isbn URI 等都是URN。
` urn:issn:1535-3613 (国际标准期刊编号)
urn:isbn:9787115318893 (国际标准图书编号)
mailto:jijs@jianshu.com (简单邮件传输协议)
tel:+1-81-555-1212
客户端与服务端
- 客户端(Client) -> 客户所使用电脑中的应用程序
- 服务端(Server) -> 存放网页 客户端程序 数据处理程序 数据库的电脑
CS架构
- Client/Server -> 将应用程序安装在客户端电脑中 由服务端提供客户端程序所需要的数据
- 优点:界面操作丰富 安全性高 相应速度快
- 缺点:通常用于局域网 需安装特定的应用程序或使用特定硬件 维护成本高
BS架构
- Browser/Server -> 利用web浏览器呈现客户端界面 由服务端提供客户端程序所要的数据源
- 优点: 无需安装客户端程序与特定硬件 多客户访问 交互性强 无需升级客户端
- 缺点: 跨浏览器兼容性差 功能性相对较弱 设计成本高 安全性弱 功能新弱
域名
- 服务器与域名绑定之后 域名与服务器对应IP是映射关系 www.jd.com -> 111.13.28.118
- 域名比IP更方便记忆
- IP可以对应多个域名 所以不同的域名可以访问一个或多个Web网页
DNS解析
- DNS中保存了一张域名与对应IP地址的表 一个域名对应一个IP地址 一个IP地址可以对应多个域名
画了个丑图 大家感受下 这个过程
IP
-
互联网协议地址
-
分类: IPv4 IPv6 其他
-
形式:
- 192 .168.0.1(长度32位 四个字节 十进制标识)(IPv4)
- ABCD:EF01:2345:6789:ABCD:EF01:2345:6789(8组 128位 十六进制)(IPv6)
IPv6的优势:
-
路由表更小
-
更高的安全性
-
对自动配置的增强
-
PORT:
每个端口对应的是一个服务器的一个业务 访问一个服务器不同端口相当于有访问不同的业务