一、进行域名解析(获取IP地址)
域名解析过程:
1、浏览器搜索自己的DNS缓存,缓存中维护了一张域名和IP地址的对应表
2、若没有则搜索操作系统的DNS缓存
3、若没有则操作系统将域名发送到本地域名服务器,本地域名服务器在自己的DNS缓存查找(递归查询)
4、若没有则通过以下方式查找(递归查询/迭代查询)
本地域名服务器向根域名服务器发送请求,根域名服务器返回com域顶级服务器域名地址
本地域名服务器向com域顶级域名发送请求,com域顶级域名服务器返回权限域名服务器地址
本地域名服务器向权限域名服务器发送请求,得到IP地址
5、本地域名将得到的IP地址返回操作系统,同时自己也将IP地址缓存起来
6、操作系统得到IP地址返回给浏览器,同时自己也将IP地址缓存起来
7、浏览器得到IP地址
二、应用层-浏览器发送HTTP请求
作为发送端的客户端在应用层(HTTP协议)发送了一个想要做某件事的HTTP请求(比如请求某个接口)
三、传输层-TCP或者UDP封装数据(HTTP请求报文)
为了传输方便,传输层选择协议(TCP协议或者UDP协议)对从应用层收到的数据(HTTP请求报文)进行封装(对收到的数据进行分割,并在各个报文上打上标记序号及端口号)后转发给网络层
四、网络层-IP协议封装IP地址,获取目的MAC(media access control address)地址
通过IP协议将IP地址封装为IP数据报,此时会使用ARP协议(ARP是一种用以解析地址的协议,根据通信方的IP就可以反查对应的MAC地址)主机发送信息时会将包含目标IP地址信息ARP请求广播到网络上所有的主机,并接受返回消息,以此确定目标的物理地址,找到目的的MAC地址
五、链路层-(又名数据链路层、网络接口层)建立TCP连接
把网络层交下来的IP数据添加首部和尾部,封装为MAC帧,根据目的MAC地址建立TCP连接(三次握手)
不同的协议层对数据包有不同的称谓,在传输层叫做段(segment),在网络层叫做数据报(datagram),在链路层叫做帧(frame)。数据封装成帧后发到传输介质上,到达目的主机后每层协议再剥掉相应的首部,最后将应用层数据交给应用程序处理。