计算机网络系列之浏览器对URL处理,小白看完吊打面试官

从这篇开始,就开始了计算机网络的学习,从面试时最常见的一道面试题开始,“在浏览器输入一个网址之后发生了什么?”

一、序言

1.1什么是互联网

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


1.png
2.png

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

1.2客户-服务器模式

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

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

2.1网址是什么?

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

3.png

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

2.2HTTP是什么?

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

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

主体消息

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

方法 功能
HEAD 读取URL的 头部信息
GET 从服务器端获取URL的数据
POST 给服务器添加信息
PUT 在URL指明的位置存储一个文件
DELETE 删除URL位置上的文件

响应报文的格式如下:

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

主体消息

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

2.3浏览器对URL的处理

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


4.png

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


5.png

三、利用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对应的就是主机号,这个二进制数叫做子网掩码。

IP地址 子网掩码 子网号 主机号
192.168.1.1 255.255.255.0 192.168.1 1

对于主机号部分全为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服务器也是与域名相匹配的,分为根域名服务器、顶级域名服务器、权限域名服务器、本地域名服务器。每一个层级的域名服务器负责相应的域名解析服务。整个结构如图所示:


6.png

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


7.png

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

四、套接字概述

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

五、总结

这样,我们就介绍完了,输入一个URL之后,浏览器所完成的第一部分功能,解析URL,制作HTTP请求响应。接下来就会通过套接字进入系统的内核,借助系统完成发送前的其他准备,包括TCP报文段的生成,IP数据报的生成,MAC地址的生成等等,请听下回分解。
欢迎关注我,回复计算机网络,可以获得免费获得电子版。让我们一起快乐的玩编程。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 213,014评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,796评论 3 386
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 158,484评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,830评论 1 285
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,946评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,114评论 1 292
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,182评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,927评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,369评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,678评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,832评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,533评论 4 335
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,166评论 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,885评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,128评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,659评论 2 362
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,738评论 2 351

推荐阅读更多精彩内容

  • 转载 :http://www.cnblogs.com/maybe2030/p/4781555.html#_labe...
    奋斗live阅读 1,362评论 0 10
  • 1.TCP报头格式 UDP报头格式 TCP报头格式 UDP报头格式 具体的各部分解释看 TCP报文格式详解 - ...
    杰伦哎呦哎呦阅读 2,446评论 0 5
  • 一、什么是TCP/IP 网络和协议 1. TCP/IP是一类协议系统,它是一套支持网络通信的协议集合。网络是计算机...
    karlon的马甲阅读 6,522评论 1 24
  • 参考文档《自顶向下方法》待阅读 (一)计算机网络和因特网 什么是因特网 具体构成描述:因特网是一个世纪范围内的计算...
    siuLimTau阅读 900评论 1 0
  • 本周看四大名著之一《水浒传》,作为中文系的孩子,四大名著我只看过《西游记》和《红楼梦》,且这两大名著不管是书本还是...
    清棱素心阅读 980评论 4 1