OSI 七层模型、TCP/IP 五层模型、与 TCP/IP 四层模型
数据传递时,每层都会在上一层的报文添加自己的头部
应用层
HTTP、FTP、SMTP、DNS
传输层
TCP、UDP
网络层
IP、ICMP(Internet 控制报文协议)
ping 使用的是 ICMP 协议
链路层
ARP、RARP
ARP:IP 地址 -> MAC 地址
RARP:MAC 地址 -> IP 地址
问:ARP 属于哪一层
TCP/IP 模型中,它所有定义的协议是在网络层上的
按照 OSI 的标准,数据在传递时每层会加上自己的信息。当网络层的 IP 包进入链路层时,链路层通过 ARP 协议添加链路信息,因此属于链路层
在 OSI 七层模型中 ARP 协议属于链路层;而在 TCP/IP 模型中,ARP 协议属于网络层
问:当在浏览器中输入 www.baidu.com 的时候发生了什么
一、DNS 域名解析
先查本地 hosts 文件,如果没命中则主机会向 DNS 服务器发送一条 DNS 查询报文以查询该域名对应的 IP
注意,该报文是 UDP 报文,不需要与 DNS 服务器建立 TCP 连接;我们这台主机本来就知道 DNS 服务器的 IP 地址,要么是写好的静态 IP,要么是路由器动态分配的 IP,不是域名,所以 DNS 查询这个过程也不需要去解析域名
二、建立 TCP 连接
传输层拿到了应用层解析到的 IP 地址,开始与服务器进行三次握手,建立 TCP 连接
三、发送 HTTP 请求
建立连接后,应用层开始向服务器发送请求,服务器返回相应的结果
四、关闭 TCP 连接
为了避免服务器与客户端双方的资源占用和损耗,当双方没有请求或响应传递时,任意一方都可以发起关闭请求。与创建 TCP 连接的 3 次握手类似,关闭 TCP 连接,需要 4 次握手。
五、浏览器解析 HTML、JS、CSS、Json
Dom 数、CSS 规则集、Render 树