计算机网络之浏览器URL

序言

1.1什么是互联网

说到计算机网络,先来认识一下天天说的互联网是什么。 互联网就是计算机之间通过路由器、交换机、集线器等相互之间连接在一起组成一个网络,路由器将网络与网络互相连接,最后组成了整个互联网。

                                                       

 

 

网络把许多计算机连接在一起,许多网络通过路由器连接在一起作为互联网。

1.2客户-服务器模式

计算机之间的网络通信大多使用客户-服务器模式的方式进行。一个应用进程想要获取另一个计算机的某些数据,此时这个应用进程所在的计算机就是客户端,存储数据的计算机就是服务器。

二、浏览器在收到输入的网址,做了什么?

2、网址是什么?

网址其实就是计算机网络里的URL,就是常常在浏览器见到以HTTP://开头的东西,但其实不只是HTTP开头,还有FTP等文件传输。我们这里以HTTP为例。来看一个URL为 https://i.csdn.net/#/msg/attention来分析一下这个URL的组成https就是它使用的协议,//之后就是主机名,也叫域名,/之后的所以就是这个主机的文件路径,最后是文件名。

 

域名就是计算机网络中的对于计算机或者路由器的命名,域名按照层级划分为顶级域名、二级域名、三级域名等。每个域名都由名称组成,域名层级之间使用.来分隔。比如http://www.baidu.com中,com是顶级域名,baidu是二级域名,www是三级域名。 对于URL可能只有域名或者只有文件夹名的情况,http://www.baidu.com 就是只有域名的情况,这种情况下,对于服务器来说是有默认文件供你访问的,不用担心。 在知道网址也就是URL是什么之后,浏览器就可以对它进行解析了,按照上面说的组成部分,根据HTTP协议的要求,把各个部分添加到HTTP的请求报文中。

2.2HTTP是什么?

HTTP就是web客户端与服务器之间通信约定的一种规则。HTTP分为请求报文和响应报文。请求报文就是客户端告诉服务器“我要对你的哪个数据做什么”,响应报文就是服务器告诉客户端“我按照你的要求做了什么,成功了还是失败了”。 请求报文的格式就是:

方法【空格】URL【空格】协议版本【换行】
<字段名>:<字段值>

主体消息

其中方法就是客户端想要服务器端做什么,URL就是对服务器的哪个地方做什么。 常用的方法有:

响应报文的格式如下:

版本【空格】状态码【空格】短语【换行】
<字段名>:<字段值>

主体消息

常用的状态码有200,正确处理返回需要的信息;我们常见的404,没有找到所需要的信息等。

2.3浏览器对URL的处理

在浏览器输入URL后,根据前面的介绍,把URL按照需要分解为各个部分,填充到HTTP的请求报文之中,然后发送出去,得到服务器返回来的响应报文,按照前面的响应报文格式进行解析,之后就会可以将内容显示在屏幕上了。

当然这只是因为计算机网络下层的一个封装,让我们感觉起来是客户端和服务器端的直接相连。 如果在得到的响应报文中还有其他的URL(比如一个网页既有文本,又有图片的情况),则浏览器还需要重复解析,发送请求报文,解析响应报文的过程直到把所有数据都获得下来,之后在浏览器的界面显示。 这就是宏观上浏览器在收到URL所做的事情。整个过程细化起来如下图所示:

 

三、利用DNS获取web服务器的IP地址

 

3.1 IP地址是什么?

互联网是由计算机通过集线器、交换机、路由器组合到一起形成子网,子网通过路由器相互连接构成大的网络,为了能够在互联网中找到某一个计算机的位置,所以我们需要给计算机命名,之前介绍过给计算机取了域名,但是域名是可以方便人来记忆的,对于计算机的处理就相当困难了,因为域名的长度不确定等等原因。所以提出了IP地址的概念,用一个32位的二进制数来表示一个计算机。在表示上采用了点分十进制,比如常见的192.168.1.1,每八位在一起转为十进制,共3个点分隔4个十进制数,一共32位二进制数。 前面说到子网以及子网的每一个计算机,为了描述子网和每个子网的计算机,又提出了子网和主机的概念,类似于谁家在“xx街道xx号”。比如前面的IP地址,可以说192.168.1作为子网号而最后的1是主机号。那么对于一个32位的IP地址如何可以知道哪些位是子网,哪些位是主机号呢?用一个同样32位的二进制数来表示,这个二进制数前面一部分为1,后面一部分为0,1就是对应的IP地址的位为子网号,0对应的就是主机号,这个二进制数叫做子网掩码。

对于主机号部分全为0,和全为1两个IP地址具有特殊的意义。比如上面的举例192.168.1.0代表的是整个子网,192.168.1.255代表的是对整个子网进行广播。

所以在浏览器解析完URL和制作好HTTP请求报文之后,就需要获得这个URL中域名所在Web服务器的IP地址了。

 

3.2从DNS服务器获得IP地址

IP地址与域名的转换是通过DNS服务得到的,DNS服务其实也是从服务器取得数据,它负责返回域名所对应的IP地址。为了实现这个查询功能,DNS服务器也是与域名相匹配的,分为根域名服务器、顶级域名服务器、权限域名服务器、本地域名服务器。每一个层级的域名服务器负责相应的域名解析服务。整个结构如图所示:

 

 

当一台计算机想要查询一个域名的IP地址时,首先向本地DNS服务器查询,如果有,则返回给计算机。如果本地DNS服务器没有这个域名的IP地址,那么这个时候本地DNS服务器就会化身DNS客户端了,因为它要让根DNS服务器来给它提供服务了,它需要请求服务。根DNS服务器查询到这个域名所属的顶级DNS服务器,将它返回给本地DNS服务器,本地DNS服务器此时在向这个顶级DNS服务器查询,顶级DNS服务器要么可以确定这个域名的IP地址,返回给本地DNS服务器这个域名的IP地址,要么继续返回下一个层级的服务器的地址,本地NDS服务器继续去查询这个服务器,如此迭代,最终得到域名的IP地址。然后返回给本地的计算机。执行的顺序如下图的标号顺序所示。

 

 

 

为了提高DNS查询的效率,一般DNS服务器都带有缓存功能,将查询过的域名与IP的关系保存在自己本地,这样再有相同的查询的时候,直接返回了,而不需要进行在去访问其他的DNS服务器。但这种缓存是有时间限制的,因为域名与IP地址可能发生变化。 就这样浏览器从DNS服务器中获得了域名所代表web服务器的IP地址了。接下来就可以通过TCP协议,IP协议适配器将HTTP的请求报文发送给服务器了。

 

四、套接字概述

在浏览器得到IP地址后,就会调用套接字,其实在获得IP地址的时候也使用了套接字。套接字就是操作系统为应用程序编写网络通信功能提供的库函数,对于C语言向屏幕输出,操作系统提供了printf的函数来实现,这里也一样。提供了套接字实现网路编程功能。包括socket、bind、listen、connect、accept、send、close等。相当于套接字把TCP协议、IP协议、适配器等底层细节封装了起来。调用这些套接字,就会发生系统调用,进入操作系统的内核之中,完成一些列网络协议的功能,详细的就是操作系统的知识了,这里不再详细说明。只要知道套接字其实就是把复杂的协议封装起来就好。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值