从浏览器输入一个网址开始讨论网络传输的工作原理

确实,从浏览器输入一个地址之后,当你按下Enter键之后,一系列奇怪的魔法就在发生,这是一个老生长谈的问题了,但能真的仔细知道全部却是一个艰难的事情。

网络架构之五层架构

在开始之前,还是必须知道网络的架构基础的。目前网络架构分为两种,七层架构和五层架构,本人更喜欢五层架构(主要是容易记,😄)。这个分层如图:

左侧对应的七层架构图,中间的是五层架构图,右侧对应的是每个层上具有的协议。

705728-20160424234827195-1493107425.png

我们使用的应用大多都是构建于应用层之上,必然,浏览器也不例外。

现在开始,地址栏键入地址,按下Enter键,就从这里开始吧(这里我就以键入百度https://www.baidu.com作为事例)

先简单的认为数据传递是从发送方ip到接收方(百度)ip的一个行为,那双方ip是如何产生的。

发送方ip的产生 --- DHCP协议

关于本本机的ip从何而来,主要有两种方式,1. 手动配置 2. 自动配置

而自动配置,简单一些进行介绍,这个要从DHCP协议说起,先看以下两张图

image.png

手动配置方式:通过手动配置ip地址,子网掩码。但是这种方式并不适用普通用户,普通用户不可能知道当前网络的网络号,主机号,以及子网掩码应该是多少。而且这种配置方式非常的不灵活,在同一个子网下的ip被固定,其他人无法使用。另一点则是这台设备跟换了一个网络环境,就没有办法上网了。

image.png

动态配置:动态配置依托于DHCP协议,在每个子网下,会有一台DHCP服务器,存放着改子网的所有可配置ip,当我们打开电脑后,电脑会自动发发出一个请求ip的地址的广播到DHCP服务器,服务器会检查是否还存有可分配的ip,如有则响应给请求的电脑,并标记该ip已经被使用。(至于这些ip以后如何被释放,重新称为可分配的ip则是另一个话题)。

来看一下请求的ip的报文,通过5层网络框架的结构后是如何的?

image.png

接收方(百度)ip的产生 --- DNS解析

在浏览器地址栏中输入的是一个网址(百度),这个网址易于人的记忆,但是对于电脑而已就是头痛的事情。所有这个时候就需要DNS了,将它解析成一个电脑能够理解的ip地址。

它是如何工作的:

每个子网下都会有一台DNS服务器,在这台服务器中存放着域名和ip地址的映射表,从这里可以获取到百度的ip地址。这里只是说了这个DNS资源服务器的存在。那我是通过何种途径获取到DNS服务器中的ip地址呢?

这里就要说到以太网的信息传递方式——广播,首先在互联网发送任何一个消息,都会经过网络五层架构的封装,形成一条可以被广播的信息。如下图这种方式:

protocol.png

DNS解析的请求报文最终被封装如下:其中的Http报文部分,则包括了发送端的网址域名等信息。DNS服务器会获取到域名,到服务器中的域名ip映射表比较,如果有则响应报文,回到发送方,发送发送方也就知道了目标地址的ip信息。如果没有则会对消息转发到公共DNS服务器,比如google的DNS服务器,获取之后也会在本子网的DNS服务进行缓存,以便以下次请求。这便是DNS解析的过程

image.png

到这里你已经这道了双方通信的基础ip的产生了,那开始下一步的研究吧

是否在同一个子网下

在知道发送方和接收方的ip之后,第一件是则是判断双方是否在一个子网络下,如果在同一个子网下则不需要跨过网关,直接在子网内进行数据传输。

如何判断是否在一个子网下,其实很简单,只需要用你的子网掩码和双方的ip按位与,得到的结果如果是一样的,则在同一个网络内,不一样则不再同一个网络中。这里的区别是,不在同一个子网下,发送的报文数据包中的以太网首部中的MAC地址是接收方网卡的MAC地址,不是接收方主机的地址。

路由表

判断出发送方和接收方不再同一个子网下,就必然需要来到穿越茫茫负责的网络,来到对方的身边,那是根据什么才能到接收方的身边?—— 路由器

image.png

上图是一张基本的网络架构图,每个云代表这一个子网,箭头代表着数据的流向。从中可以看出数据是由路由进行转发的。其实每个路由中会维护一个路由表,会存放着这子网的ip,以及通过一些列复杂的路由探测,找到一条通往接收方网络的路径,从而发送给目标子网。

子网下获取接收方的MAC地址 —— ARP协议

经过路由等操作,报文信息已经来到了接收方的子网中了,那如何知道具体那一台主机呢。其实通过ip地址的主机号已经可以确定是那一台主机了,那此时是否就可以进行通信了呢?—— 不能

以前我同样有这样的疑问,都找到你了,为什么不能通信呢。用一个比方,千里迢迢到美国找到一个叫做“特朗普”的总统,他是唯一的,根据他的ip(美国(相当于网络号)-特朗普(相当于主机号))。虽然找到了他,但是语言通,无法沟通😢。此时就需要一个双方都能够接受的东西进行交流,这个就是MAC地址的作用。

根据ip地址找到MAC地址的协议,称为ARP协议(地址解析协议)

在每个子网下,会有一台服务器保存这子网下所有ip和MAC地址的映射。这个时候需要获取MAC地址,就会向子网内发送一个广播,获取ip对应主机MAC地址,基本结构如下

image.png

此时,跨过千山万水,发送方已经到接收方面前,能窃窃私语了。

数据响应

数据进行交互逻辑处理后,则会将数据返回给接收方,这个过程称为响应。我们来看下浏览器的inpect下response header中的信息。其中每个字段都代表了某种信息。

如:
Expires:表示缓存的过期时间
Remote Address: 则是DNS解析后的远程地址

image.png

image.png

当拿到了响应的信息后,剩下的事情则是浏览器要做的。加载资源,解析html,构建抽象语法树,渲染页面,以及解析JS等。

总结

本文旨在熟悉消息在网络中的传输过程中会经历什么样的过程。对其中每一种协议并没有进行深入的研究,如果展开,每一种协议都值得用一篇文章来介绍。当然也可以根据提到的再去深入挖掘,必然让你更加熟悉网络的每一个环节。

相信,事物的发展都是有其规律的。知道为什么会更驾轻就熟。

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

推荐阅读更多精彩内容