输入网址并点回车,后台会发生什么?
URL解析
url遵守的规则是这样子的:http://host.domain:port/path/filename
其中:
http 定义应用层协议类型,比如 http、https、ftp 等;
host 定义域主机(http 的默认主机是www);
domain 定义因特网域名,比如 abc.com;
port主机的端口,http默认是80,https默认是443;
path服务器上的资源路径;
filename 定义文档/资源的名称;
DNS查询
浏览器不能直接通过域名找到服务器,只能通过IP地址,浏览器会通过以下几种方法查询我们输入的url对应的IP
浏览器缓存:按照一定频率缓存DNS数据
操作系统缓存:如果浏览器缓存找不到记录则去操作系统中找
路由缓存:路由器DNS缓存
ISP 的 DNS服务器:ISP是互联网服务提供商的简称,ISP有专门的DNS服务器应对DNS查询请求
根服务器:如果ISP的DNS服务器还找不到的话,他就会像根服务器发出请求,进行递归查询(DNC服务器先问根域名服务器.com域名服务器的IP地址,然后再问.baidu域名服务器,依次类推)
TCP连接建立与断开
通过域名解析出IP地址以后就要建立TCP/IP连接了,TCP/IP分为四层,每一层都会加上一个头部在发送给下一层,到了接收方后,对应的每一层则把对应层的头部解析再丢上上一层,跟发送端的过程是相反的。
TCP/IP四层模型
应用层:发送HTTP请求
浏览器从地址栏得到服务器IP,接着构造一个HTTP报文,其中包括:请求头(Request.Header)、请求行(请求方法、URL、协议版本)、请求体(请求参数)
传输层:TCP传输报文
在传输报文之前会先建立TCP/IP连接,在这一层解决了数据可靠传输、流量控制、拥塞控制;
可靠传输
对于发送方发送的数据,接收方在接受到数据之后必须要给予确认,确认它收到了数据。如果在规定时间内,没有给予确认则意味着接收方没有接受到数据,然后发送方对数据进行重发。
TCP的可靠传输是通过确认和超时重传的机制来实现的,而确认和超时重传的具体的实现是通过以字节为单位的滑动窗口机制来完成。
TCP拥塞控制
TCP协议通过慢启动机制、拥塞避免机制、加速递减机制、快重传和快恢复机制来共同实现拥塞控制。
流量控制
采用通知窗口实现对发送端的流量控制,通知窗口大小的单位是字节。TCP通过在TCP数据段首部的窗口字段中填入当前设定的接收窗口(即通知窗口)的大小,用来告知对方‘我方当前的接收窗口大小’,以实现流量控制。
通信双方的发送窗口大小由双方在连接建立的时候商定,在通信过程,双方可以动态地根据自己的情况调整对方的发送窗口大小。
网络层:IP协议查询MAC地址
将数据段打包,并加入源及目标的 IP 地址,并且负责寻找传输路线。判断目标地址是否与当前地址处于同一网络中,是的话直接根据Mac 地址发送,否则使用路由表查找下一跳地址,以及使用ARP 协议查询它的 Mac 地址.
链路层:以太网协议
根据以太网协议将数据分为以“帧”为单位的数据包,每一帧分为两个部分标头:数据包的发送者、接受者、数据类型
数据:数据包具体内容
Mac 地址
以太网规定了连入网络的所有设备都必须具备“网卡“接口,数据包都是从一块网卡传递到另一块网卡,网卡的地址就是 Mac 地址。每一个 Mac 地址都是独一无二的,具备了一对—的能力。