【网络】【转】Internet通信(一)

原文:https://heyingye.github.io/2018/02/27/Internet%E9%80%9A%E4%BF%A1%EF%BC%88%E4%B8%80%EF%BC%89/

概述

网络通信的过程十分复杂,本文只简单分析网络通信的过程以及相关的协议概述,从最常见的例子:”从浏览器输入url至呈现整个页面”。分析整个网络通信的过程,希望能对网络通信有个总体的认识,网络通信的整体认识对我们理解网络有非常大的帮助。由于文章过长,我将分为多个章节描述,如若描述有误,敬请指正。

在分析网络通信之前,我们不妨好好思考一下这个问题?

当我们在浏览器输入www.qq.com,点击Enter,至页面呈现,其中发生了什么?

image.png

这涉及到整个Internet通信的过程,涉及的范围非常大,我粗略归结为以下几个过程:

  • DNS域名解析
  • 确定接收方MAC地址
  • TCP连接
  • HTTP请求
  • 浏览器渲染页面

在分析该过程之前,我们先了解一些网络的基本知识以及相关协议。

网络模型

网络可分为七层,四层或者五层模型,这里我们将网络分为五层,网络五层模型,如下图:


image.png

自上而下,分别为应用层,传输层,网络层,链接层和实体层(物理层),每层都有相关的协议和功能,并且都需要下一层的支持。他们的功能及依赖关系,我们可以大概了解,如图:


image.png
  1. 应用层HTTP协议的通信请求,规定应用程序的数据格式,基于传输层TCP协议的TCP连接

  2. 传输层的TCP连接,负责传输数据包,基于网络层的IP协议分配IP地址连通网络和链接层的MAC地址(网卡地址)确认接收主机

  3. 网络层的数据发送,基于链接层将实体层发出的电信号分组并解读,并通过ARP协议利用IP地址获取到MAC地址(网卡地址)

  4. 实体层(物理层),就是电脑间链接的介质,比如光纤,电缆等等,主要负责传送0和1的电信号

由此,我们不难得出Internet通信的前提是必须知道双方的IP地址MAC地址(网卡地址,以太网的物理地址),IP地址负责确定接收方的子网,MAC地址负责确定接收方的主机地址。


MAC地址

以太网规定,连入网络的所有设备,都必须要有一块网卡,因为数据包必须从一块网卡传送到另一块网卡,而网卡的地址,就是数据包发送和接收的地址,这就叫做MAC地址

每块网卡都拥有一个全世界唯一的MAC地址,长度是48个二进制位,通常用12个十六进制数表示。如图:


image.png

IP地址

Internet通信的前提是必须知道双方的IP地址MAC地址,己方的MAC地址是必然知道的,但是IP地址是否知道却分为两种情况:

  • 静态IP地址
  • 动态IP地址

静态IP地址

静态IP地址需要用户自己专门设置,如图


image.png
  • IP地址 – 互联网的协议地址

  • 子网掩码 – 用于判断两个IP地址是否在同一个子网络中

  • 默认网关 – 连接两个不同的子网络,转换协议

  • DNS服务器 – 用于DNS解析,将域名解析为IP地址

以上的四个参数缺一不可,使用手动设置的参数,每次计算机开机都可以使用相同的IP地址(如图使用的固定IP地址是:192.168.0.198)上网,所以这种情况被称为:”静态IP地址上网”,但是这样的设置是极少数人会做的,大多数人使用的都是”动态IP地址上网”。

注:通用的公共DNS服务器有Google的8.8.8.8和国内的114.114.114.114,当然也可以使用运营商提供的DNS服务器。

动态IP地址

动态IP地址,是每台计算机默认采用的上网方式,不需要用户手动设置,每次开机会自动分配一个IP地址,如图


image.png

动态分配IP地址,会使用到DHCP协议,该协议规定在每个子网络中都会一台计算机负责管理本网络的所有IP地址,该计算机叫做“DHCP服务器”,每台计算机开机时候都会向“DHCP服务器”发送一个“DHCP请求”数据包,申请IP地址和相关的网络参数(子网掩码,默认网关和DNS服务器等等)。但是问题来了。。。

DHCP服务器的MAC地址,IP地址和本机的IP地址都不知道,该如何通信?

DHCP协议“DHCP请求”的数据包做了特定的规定,发出方发送的DHCP数据包:

  • 发出方本机的MAC地址和本机未知的IP地址为0.0.0.0

  • 由于接收方DHCP服务器的信息都不知道,所以接收方的MAC地址则填写为FF-FF-FF-FF-FF-FF,IP地址填写为255.255.255.255。

该数据包在以太网以广播的方式传输,在同一子网络的每台计算机都会接收到该数据包,并分析数据包的接收方IP地址是否与自己的IP地址相匹配,当DHCP服务器接收到该数据包,并分析到该数据包的发出方IP地址为0.0.0.0,接收方IP地址为255.255.255.255,则会确认该数据包是发送给自己的,接下来就会进行IP地址分配,再响应发送回去一个”DHCP响应”的数据包,新加入的计算机接收到该响应包,就可以确定了本机的IP地址,子网掩码,默认网关和DNS服务器等相关信息,然后就可以上网了。


有了以上的基础知识,我们回到以下这个问题

当我们在浏览器输入www.qq.com,点击Enter,至页面呈现,其中发生了什么?

呈现页面的数据必须通过网络来发送和接收数据,但Internet通信的前提是必须先知道双方的MAC地址和IP地址,本机的MAC地址是必然知道的,IP地址则可以使用静态和动态IP的方式确定,那么我们只需要确定对方的MAC地址和IP地址即可实现通信。

我们在浏览器输入的是www.qq.com,这是一个域名,域名在互联网中是没有什么意思的,只是为了方便用户记忆理解,但是在互联网中每个域名都可以通过DNS域名解析,解析成一个或者多个IP地址,解析确定对方的IP地址后,可以通过IP地址找到对应的主机,并确认该主机的MAC地址,最后实现通信,首先我们分析DNS域名解析的过程。

DNS域名解析

DNS(Domain Name System 的缩写)域名解析的作用是将域名解析为IP地址,具体过程如图


image.png
  1. 本机DNS解析

    • 浏览器缓存中查找www.qq.com域名解析记录,若浏览器缓存中有www.qq.com域名解析记录,则域名解析完成,返回相应的IP地址,若无,则继续下一步解析

    • 在本机操作系统的DNS缓存和host文件查找www.qq.com域名解析记录;若有,则域名解析完成,返回相应的IP地址;若无,则向本地DNS服务器转发解析请求

  2. 本地DNS服务器解析

    • 本地DNS服务器的IP地址根据用户的静态IP地址和动态IP地址设置而定,首先客户端向本地DNS服务器(LDNS)发出域名解析请求

    • 本地DNS服务器先在域名解析记录缓存中查找,是否存在www.qq.com域名的解析记录,若存在,则将域名对应的IP地址,域名解析结束;若不存在,则在本地DNS服务器管理的域名内进行DNS解析,查找是否存在www.qq.com域名;若存在,返回IP地址和TTL值(Time to live 的缩写),表示缓存时间,解析结束;若不存在,则向根域名服务器发出解析请求,使用递归查询的方法进行查询

  3. 根域名服务器解析

    • www.qq.com域名真正的全称域名是www.qq.com.root,简写为www.qq.com。因为,根域名.root对于所有域名都是一样的,所以平时是省略的。根域名的下一级,叫做”顶级域名”,例如www.qq.com域名的顶级域名为.com。全球一共有十三组根域名服务器,从A.ROOT-SERVERS.NET一直到M.ROOT-SERVERS.NET。根域名服务器对www.qq.com域名进行解析查询,查找www.qq.com域名的顶级域名服务器.com的IP地址,并返回给本地DNS服务器,本地DNS服务器再向顶级域名服务器.com发出域名解析请求
  4. 顶级域名服务器解析

    • 顶级域名服务器.comwww.qq.com域名进行解析查询,查找www.qq.com域名的次级域名服务器.qq.com的IP地址,并返回给本地DNS服务器,本地DNS服务器再向次级域名服务器.qq.com发出域名解析请求
  5. 次级域名服务器解析

    • 次级域名服务器.qq.comwww.qq.com域名进行解析查询,查找www.qq.com域名的IP地址,并将该IP地址和和TTL值(Time to live 的缩写),表示缓存时间,返回给本地DNS服务器,本地DNS服务器将该结果缓存,再将IP地址返回给客户端,客户端将该解析记录缓存,至此DNS解析结束

DNS优化

由于DNS解析的过程十分复杂费时,所以DNS存在着多级缓存,提取DNS缓存的顺序大概如下:浏览器DNS缓存 – 系统DNS缓存 – 本地DNS服务器缓存 – 根域名服务器缓存 – 顶级域名服务器缓存 – 次级域名服务器缓存,解析记录的缓存时间由解析成功返回的TTL值(Time to live 的缩写)决定。

总结

至此,网络的基础知识和DNS域名解析讲完了,下节继续分析使用IP地址确定MAC地址TCP连接

参考文献

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

推荐阅读更多精彩内容

  • 1、第八章 Samba服务器2、第八章 NFS服务器3、第十章 Linux下DNS服务器配站点,域名解析概念命令:...
    哈熝少主阅读 3,705评论 0 10
  • 文章首发于个人blog欢迎指正补充,可联系lionsom_lin@qq.com原文地址:《网络是怎样连接的》阅读整...
    lionsom_lin阅读 14,107评论 6 31
  • 1. 基础知识 1.1 3种常见的计算机体系结构划分 OSI分层(7层):物理层、数据链路层、网络层、传输层、会话...
    Mr希灵阅读 19,834评论 6 120
  • 博主最近在复习HTTP,之前用书主要是《计算机网络》谢希仁版本,最近结合网上博客,进行复习和提纲式的总结。 一、概...
    stoneyang94阅读 4,136评论 1 8
  • 非常好的文章,怕博主删除,再也找不到这么好的文章了,所以复制了一份,博主是2016年写,但是是到现在为止看到的,思...
    吭声_cfdc阅读 1,566评论 0 4