【网络基础】浏览器输入一个URL之后,都发生了什么(详细讲解)

1. 前置知识

想要了解浏览器输入一个URL之后都发生了什么,我们要先认识以下几个知识

  • TCP/IP五层模型
    TCP/IP是一组协议的代名词,他还包括许多协议,组成了TCP/IP协议簇,TCP/IP通讯协议采用了5层的层次结构,每一层都呼叫他的下一层所提供的的网络来完成自己的需求,主要分为以下五层:
    层次从上到下依次是:
  • 应用层:负责应用程序间沟通,如简单电子邮件传输(SMTP)、文件传输协议(FTP)、网络远 程访问协议(Telnet)等。
  • 传输层:负责两台主机之间的数据传输。如传输控制协议 (TCP),能够确保数据可靠的从源主机发送到目标主机。
  • 解决问题:解决进程间通信问题
  • 网络层:负责地址管理和路由选择。例如在IP协议中,通过IP地址来标识一台主机,并通过路由表 的方式规划出两台主机之间的数据传输的线路(路由)。
  • (1)工作设备:路由器(Router)。
  • (2)解决问题:解决跨局域网通信问题
  • 数据链路层:负责设备之间的数据帧的传送和识别。例如网卡设备的驱动、帧同步(就是说从网线 上检测到什么信号算作新帧的开始)、冲突检测(如果检测到冲突就自动重发)、数据差错校验等工作。有以太网、令牌环网,无线LAN等标准。
  • (1)工作设备:交换机(Switch)、集线器。
  • (2)解决问题:解决一个局域网内部通信问题
  • 物理层:负责光/电信号的传递方式。比如现在以太网通用的网线(双绞 线)、早期以太网采用的的 同轴电缆(现在主要用于有线电视)、光纤,现在的wifi无线网使用电磁波等都属于物理层的概念。
    物理层的能力决定了最大传输速率、传输距离、抗干扰性等。
  • (1)工作设备:集线器(Hub)。
  • (2)解决问题:解决传输介质通信问题 在这里插入图片描述
  • DNS协议
  • 1.什么是DNS协议?

DNS(域名系统)协议是一个应用层协议,可以将域名和IP地址相互映射的以层次结构分布的数据库系统,简单来说就是域名和ip之间相互转换的协议。

  • 2.什么是域名?

比如www.baidu.com ,就是我们经常用的百度的域名,域名主要是为了人们方便记忆而设置的,而在网络传输中,是通过ip寻找主机的而不是域名,所以每一个域名都会对应一个ip,我们可以通过ping的方式来获取到域名对应的ip:

在这里插入图片描述

其中36.152.44.95就是百度的域名对应的ip地址,ping 的时候使用ip地址和使用域名会有同样的效果

在这里插入图片描述

  • ARP协议

地址解析协议,即ARP(Address Resolution Protocol),是根据IP地址获取物理地址的一个TCP/IP协议。主机发送信息时将包含目标IP地址的ARP请求广播到局域网络上的所有主机,并接收返回消息,以此确定目标的物理地址(MAC);收到返回消息后将该IP地址和物理地址存入本机ARP缓存中并保留一定时间,下次请求时直接查询ARP缓存以节约资源。

  • NAT技术

NAT是路由器使用的一种技术,NAT能够将私有ip对外通信是转为全局ip,也就是一种将私有ip和全局ip相互转换的一种技术,可以很好地解决ip地址数量不够的问题。
对于NAT还存在着一个问题,就是当同一局域网内,有多个主机都访问同一外网服务器,那么对于服务器返回的数据中,目的ip都是相同的,那么NAT路由器如何判断这个数据包发送给局域网的那个主机?
为了解决这个问题又有了新技术就是NAPT技术,NAPT技术使用ip+端口来建立这个关联关系

2. 输入URL,发送请求流程

  • 2.1域名解析

在浏览器输入一个URL之后,第一步就是基于DNS域名转IP协议获取到请求的IP也就是目的IP

  • 2.2封装

得到了目的IP之后,就要对请求的数据进行封装,封装是时从上到下进行封装,封装的顺序就是应用层、传输层、网络层、数据链路层、物理层

1.应用层
当发送一个请求时,第一步封装就是在应用层,在应用层中,会根据应用层的HTTP协议将请求封装成HTPP格式,然后将封装好的数据交给传输层进一步封装
2.传输层:
传输层得到应用层封装好的数据之后,传输层基于TCP协议进一步封装,在原有的数据中加上源端口和目的端口,然后发送给网络层
3.网络层:
网络层得到传输层的数据之后,基于IP协议继续封装,封装的时候是不知道MAC地址的,获取方式就是使用ARP地址解析协议,首先查看目的主机和源主机是否在同一网段,将目的IP和子网掩码按位相与得到网段,如果在同一网段就直接通过ARP获取目的MAC,如果不在同一网段就将数据交给网关处理,使用APR查找网关的MAC,目的MAC就是网关的MAC,最后加上源IP和目的IP,然后发送给数据链路层
4.数据链路层:
数据链路层得到网络层的数据之后基于以太网帧封装,加上帧头和帧尾,其中包含源MAC和目的MAC
5.物理层:
负责光信号和电信号的互相转换,以及透明的传输比特流。

  • 2.3分用

网关得到数据报之后先进行从下到上分用

1.数据链路层
在数据链路层解析出数据帧,剥离帧头帧尾,取出IP数据报交给网络层
2.网络层
网络层拿到网络层数据报之后,再解析,去掉网络层协议报头,再交给传输层
3.传输层
传输层得到传输层协议报之后,解析,去除传输层包头,交给应用层
4.应用层
应用层得到数据报之后,解析应用层数据包,得到请求内容 分用完成之后,继续封装,这次封装时,进行以下操作:
(1) 要修改源IP、源端口、源MAC、目的MAC
(2)然后基于NAPT技术,将局域网IP,端口修改为公网IP,端口
(3)基于路由技术,在路由表中查询下一跳设备IP
(4)在通过ARP查找MAC地址

  • 2.4 响应

在路途中经过的设备,都需要经过以上的封装和分用,最后一步将请求消息成功交给目的主机后,先分用,然后交给目的端口对应的应用程序处理响应
当应用时tomcat时:首先解析HTTP请求,然后判断URL请求的时静态资源还是动态资源

(1)当请求资源时静态资源时,直接返回静态的响应数据
(2)当请求时servlet时,首先将HTTP协议数据封装HTTPServletRequest,然后调用service()方法,调用子类重写的doXXX()方法
(3)执行完毕之后,tomcat将HTTP响应基于HTTPServletResponse封装
(4)返回响应,从上到下封装,然后返回响应给请求的主机

  • 3
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值