当你打开一个网页,到底发生了什么?——计算机网络
-
查找本机IP地址
-
查找目标IP地址
-
浏览器与服务器建立TCP连接(3次握手)
-
浏览器发出http请求
-
服务器通过响应http请求把页面文件传送给浏览器
-
释放TCP连接【注意:TCP是面向连接的,使用完毕一定要释放的。】
-
浏览器解释文件,并显示
[知乎原文链接] https://zhuanlan.zhihu.com/p/411216742
总结
在整个过程中,我们使用的协议主要有:
应用层:
http:定义了浏览器怎样向服务器请求文档,以及服务器怎样把文档传送给浏览器。
运输层:
TCP:面向连接的,可靠的,面向字节流的协议。
UDP:无连接的,尽最大努力交付,面向报文的协议。
网络层:
IP:提供简单灵活的、无连接的、尽最大努力交付的数据报服务。
ARP:把IP地址解析为硬件地址,它解决同一个局域网上的主机或路由器的IP地址和硬件地址的映射问题。
RIP:分布式的基于距离向量的路由选择协议,只适用于小型互联网。RIP按固定的时间间隔与相邻路由器交换信息,交换的信息是自己当前的路由表。
OSPF:分布式的链路状态协议,适用于大型互联网。OSPF只在链路状态发生变化时,才用向本自治系统中的所有路由器,用洪泛法发送与本路由器相邻的所有路由器的链路状态信息。
BGP:不同AS的路由器之间交换路由信息的协议,是一种路径向量路由选择协议。BGP力求寻找一条能够到达目的网络(可达)且比较好的路由(不兜圈子),而并非要寻找一条最佳路由。
NAT:使用网络地址转换NAT技术,可以在专用网络内部使用专用IP地址,而仅在连接到因特网的路由器使用全球IP地址。这样就大大节约了宝贵的IP地址。
数据链路层:
PPP:在数据链路层提供的是不可靠的数据报服务。
具体来说:
1. 查找本机IP地址
如果你是一台处于局域网中的机器,你会通过DHCP(动态主机配置协议, Dynamic Host Configuration Protocol)获取其配置信息而不需要手工干预,配置信息包括(1) IP地址;(2) 子网掩码;(3) 默认路由器的IP地址;(4) 域名服务器的IP地址。在你和外界互联网进行通信时,要经过NAT(网络地址转换,Network Address Translation)来将局域网的私有IP地址转换为全球IP地址。
2. 查找目标IP地址
接下来我们需要找到目标的IP地址,这时就需要使用DNS(域名系统,Domain Name System)啦。浏览器分析指向页面的URL后,首先我们会检查DNS缓存中是否缓存了页面对应的IP地址,如果刚好缓存了,直接返回就好了。如果没有缓存,我们就必须让DNS一级一级地向上查找,直至解析出域名对应的IP地址。
3. 浏览器与服务器建立TCP连接
这时候我们就要使用著名的三次握手的方法来建立TCP连接啦。
4. 浏览器发出http请求
浏览器与服务器建立TCP连接后,浏览器就可以向服务器发送http请求啦。那么在这个过程中会使用哪些协议呢?我们来分析一下。
首先http协议是应用层协议,需要使用到运输层提供的服务,具体来说就是TCP协议。
而TCP属于运输层协议,又需要使用到网络层提供的服务,也就是IP协议。IP数据报在不同的AS(自治系统)中进行传送时,需要使用边界网关协议BGP来选择路由。在AS内部,使用RIP(使用UDP进行传送)和OSFP(直接用IP数据包传送)来选择路由。
IP协议继续向下使用数据链路层的服务,将IP数据包重新组成MAC帧进行传送(使用点对点协议PPP)。MAC帧传送时就需要MAC地址,于是就需要地址解析协议ARP进行IP地址到MAC地址的映射。然后数据就可以经过物理链路传输啦。
5. 服务器通过响应http请求把页面文件传送给浏览器
这个步骤使用的协议和上一个步骤是相同的。
6. 释放TCP连接
这里一定要注意,TCP是面向连接的,使用完毕一定要释放的。
7. 浏览器解释文件,并显示
这里就不重点分析啦,因为这个问题我们着重分析计算机网络。
计算机网络体系结构中的各个层次都做了哪些工作呢?又用到了哪些协议呢?
首先,在OSI七层协议体系结构中,我们把计算机网络由上至下分为七个层次:应用层,表示层,会话层,运输层,网络层,数据链路层和物理层。
然而,OSI模型作为法律上的国际标准并未被使用,被广泛使用的是事实上的国际标准,著名的TCP/IP四层网络模型,从上到下分为:应用层,运输层,网际层和网络接口层。
但是我们在学习计算机网络时往往采用五层体系结构,从上至下依次为:应用层,运输层,网络层,数据链路层和物理层。