一个数据包的互联网漫游记

标签: 互联网 科技资讯 浏览器 路由器 | 发表时间:2014-03-21 17:11 | 作者:八卦爱好者
分享到:
出处:http://www.geekfan.net

internet 尽管大多数最终用户都不关心Internet是如何工作的,但是我相信你们当中的仍然会有一些人对Internet运转的基本原理非常感兴趣。

在这篇文章中,我们会通过阐释一个数据包从源到目的地的征程,来试着拨开互联网的第一层神秘面纱。由此出发,我们会尽量让本文的内容保持简单基础。

在更进一步之前,让我们先快速简要地理解一下DHCP和DNS的概念。

DHCP

你有没有想过你的计算机是如何获取IP地址的?嗯……首先你必须知道计算机获取IP地址是有两种途径的,一种是静态方式,另一种是动态方式。

静态方式就是由管理员在机器上手动设置IP地址。如果你的计算机连接在局域网或者类似的网络上的话,需要注意的是你所设置的IP地址不能和网络上任何其他机器的IP地址相同,因为那样会引起IP地址冲突,两台机器就都不能连接到Internet了。

动态方式就是计算机(在系统启动的时候)请求一台服务器来为它分配一个IP地址。这一过程使用的协议称为动态主机配置协议(DHCP)。这里提到的服务器就是DHCP服务器,这台服务器负责为网络上所有的计算机分配IP地址。此时由DHCP来保证没有IP地址冲突。如果一台机器关闭继而重启,那么一条刷新DHCP的请求就发送到DHCP服务器上,这一次可能会分配给它一台与原来相同或者不同的IP地址。通常DHCP服务器会得到一个IP地址池,DHCP服务器只能分配该地址池内的地址。这么做是为了保证将其他IP地址作为静态地址的时候不会引起任何冲突。

DNS

我们大多数人都使用过google.com进行搜索,不过你有没有想过为什么在浏览器里面输入google.com就能连接到Google的服务器呢?嗯……要理解这件事情,我们需要理解域名服务器(DNS)的概念。

就如同现实生活中人们通过名字互相区分一样,在计算机网络的世界里,不同的计算机之间通过指派给它们的IP地址来互相区分。IP地址有两种类型:公有和私有。通常服务器使用公有地址,这是因为他们要被全世界数以百万计的计算机访问。至于你那连接在路由器上的个人电脑,它通常获取到的是私有IP。由于公有地址的数量是有限的,所以现在搭设局域网(在一个有着公有IP的路由下搭建)然后使用私有地址开始变得流行并且非常成功。

记忆IP地址这样的任务对于大多数人来说有些困难,于是每个服务器都还有一个名字(比如google.com)。这样最终用户只需要记住这个名字,在浏览器中输入它,然后敲回车就可以了。现在让我来看看当用户在浏览器中输入名字并敲回车之后究竟发生了什么。首先,需要把域名转换成对应的IP。要完成这项任务,需要给默认网关(大多数情况下就是路由器)发送一条与DNS请求。路由都会配置一个DNS服务器地址,这个地址便是DNS请求的目的地。

DNS服务器用来将域名转换成IP地址。当DNS服务器收到一条请求后,它会检查它有没有该请求需要的转换信息。如果没有这条转换信息,那么DNS服务器会把这条请求转发给其他的DNS服务器。通过这种方式,就完成了从域名到IP地址的转换。转换结果随后会发回到发出请求的计算机。

DNS之后又发生了些些什么?

要理解下面的解释,你应该对TCP/IP协议族有一定的了解。当然啦,我们会尽量保持解释的简单性。

  • 一旦通过DNS得到了目标IP地址,应用层就会准备好一条HTTP GET请求。随后这条请求会前进到传输层。
  • 这一层有两个主要的协议——TCP和UDP。正是在这一层,该请求被封装为了传输层数据包。如果用的是TCP协议,还要保证包的大小不能超过源和目的地之间MTU(最大传输单元)的最小值。这样做的目的是避免数据包在传输过程中分片(fragmentation)。另一方面,如果用的UDP的话,就不用顾虑这么多了,当然了这种情况下,包就有可能分片了。
  • 一旦传输层的包封好了,接着它就会被推到IP层。这一层会增加源和目的地的IP地址以及一些其他有用的信息,诸如TTL(time to live生存期)、分段信息等等。所有的这些信息在数据包抵达目的地的路途中都是有用的。
  • 当数据包进入到数据链路层之后,与MAC地址相关的信息就会加诸其上,随后数据包就会被推送到物理层。这样一串“0”和“1”就会从你的网卡里发送到物理媒介中去。

如果数据包的目的地没有直接连接在源计算机上,那么根据源计算机上存储的路由信息,数据包就会传送到最近的网络节点上去。网络中有各种不同的节点,比如路由、网桥、网关等等。每一种都有重要的作用,例如路由用来传送IP包,网桥用来连接不同协议的异构网络。

如果我们考虑一个简单的网络的话,路由就是将数据包从源送到目的地的最主要的角色。数据包离开源计算机后,与其相连的路由(数据要先发送到这里)的MAC地址就这个包的目的MAC地址。

数据包到达该路由之后,路由就会做下面几件事情:

  • 减记TTL值,重新计算数据包的校验和。
  • 搜索其路由表,以检查其中有没有数据包的目的IP所对应的主机。如果有的,路由就将该包发到相应的主机。
  • 如果没有这样的一条路由,就从路由表中搜索源于该目的IP的网络的地址。如果有的话就将该包发送到这个特定的网络。
  • 如果上面的两次搜索都失败的话,该数据包就被发送到路由表中指定的默认路由。

上面的所有情况中,不论数据包是在路由之间传送还是从路由传送到目的地,目的MAC地址都会变成最近的路由或者目的地的MAC地址。通过这种方式,目的IP地址保持不变,而目的MAC地址不断从一个路由变为另一个。就是这样,数据包从一台路由到下一台路由,直到它抵达终点。

啊哈,千难万险之后我们的HTTP GET请求终于到达目的地啦:

  • 数据包首先抵达物理层,该层向CPU发送一个IRQ来告诉CPU有数据到了,需要处理。
  • 当数据被送到数据链路层后,就会检查它的MAC地址来确认该数据包确实发到这台计算机的。
  • 如果上述检查通过的话,数据包就会传到IP层。在这里会检查数据包的IP地址以及其校验和,随后将其传送到相应的传输层。
  • 这些都完成了之后,该信息(在我们的例子里是HTTP GET请求)就会根据端口的值被送到监听该端口的应用中去。
  • 我们的请求就是这样送抵Google的网络服务器的。

之后,相应的响应会以与上述相同的方式传送回来。

现在你都了解了,这就是数据包在Internet上从源到目的地的旅程。

一个数据包的互联网漫游记,首发于 极客范 - GeekFan.net

相关 [数据包 互联网] 推荐:

一个数据包的互联网漫游记

- - 极客范 - GeekFan.net
尽管大多数最终用户都不关心Internet是如何工作的,但是我相信你们当中的仍然会有一些人对Internet运转的基本原理非常感兴趣. 在这篇文章中,我们会通过阐释一个数据包从源到目的地的征程,来试着拨开互联网的第一层神秘面纱. 由此出发,我们会尽量让本文的内容保持简单基础. 在更进一步之前,让我们先快速简要地理解一下DHCP和DNS的概念.

移动互联网=移动+互联网?

- 可可 - It Talks-魏武挥的blog
从名词上看,移动互联网似乎就是互联网加上一个移动. 但移动互联网远不是“移动的互联网”那么简单. 它的本质——网络部分,就和互联网大不相同;而它的表现——移动部分,也正因为移动,造就了很多和互联网相当不一样的商业机会. 而更重要也是很多人并没有注意到的是,它可能会改变整整一代人的信息处理习惯. 从网络部分而言,我们都知道,理论上互联网是没有拥有者的.

重新索引互联网

- keso - 爱范儿 · Beats of Bits
重新索引互联网 Facebook 雇佣公关抹黑 Google 的过程已经水落石出. 问题是: Google 那么多产品, Facebook 为何对 Social Circle 这么敏感. Google 号称自己的使命是“索引互联网”. 这件事的难点并非派出多少爬虫,而是对收集来的海量内容做排序:怎样让真正重要的网页,的排到 Google 搜索结果的前面来.

中美互联网差异

- leeking001 - 互联网的那点事
在互联网以指数的速度发展的今天,人们的生活已经离不开网络,那么,这两个打过在互联网方面有什 么差异呢. 我们从下面一系列与互联网相关的参数来比较两个国家,比如:互联网用户数量,互联网普及率,互联网连接的速度,域名数量,受欢迎的网站,网页浏 览器,操作系统等等. 十年前,美国是世界上的互联网头号大国,而现在很明显已经不是,取而代之的是中国.

重新索引互联网

- Ray - 最新文章 - UCD大社区
重新索引互联网 Facebook 雇佣公关抹黑 Google 的过程已经水落石出. 问题是: Google 那么多产品, Facebook 为何对 Social Circle 这么敏感. Google 号称自己的使命是“索引互联网”. 这件事的难点并非派出多少爬虫,而是对收集来的海量内容做排序:怎样让真正重要的网页,的排到 Google 搜索结果的前面来.

互联网七巧板

- Ray ma - 云科技
话说天下事势,合久必分分久必合. 大半年前在一辆宝马车里,一互联网大佬爆料说“百度可能收购新浪,肯定在谈”. 半个月前又开始传,百度高管去硅谷跟Facebook谈合资了. 前天又听到,搜狐可能和另一家互联网巨头合资做微博. 互联网的谣言和互联网的股价一样,起起伏伏. 不过,本文主题不是关于百度或者搜狐或者新浪,而是关于合资.

被选择的互联网

- Jacqueline - 月光博客
  连线杂志的那篇《互联网死了》确实震动业界,而现在,百度的框计算似乎正在验证他的话. 无论是高兴也好,无论是哀嚎也罢,百度的框计算终究给最终用户带来了一些实际的东西. 他改变了人们对于传统搜索的认知. 而百度这类似的行为,正成为互联网的一种趋势. 可以说,商业化的大潮,正在人为的割裂互联网,让他的边界越来越明显.

互联网的锤子(三)

- 盛开 - 月光博客
  对微博的讨论思路仍将从信息的获取和发布两个方面结合微博的特征来讨论,这将是我们的思维定势.   2006年twitter诞生,在blog之后,在rss,digg,youtube之后. 在这些应用出现之后,网民创造的信息内容与日俱增,对新闻资讯,博文的评论散落在网络的各个角落. Twitter生逢其时,将网民集合在一个平台上,最初将这一优势显现出来的是对突发新闻的报道,在现场的网民发布现场图片信息,通过twitter直接将图片传送给其他网民,经过转发评论,现场的新闻图片传播到整个twitter平台上,实现即时广泛的传播.

Facebook = 未来的互联网?

- iamsure - 爱范儿 · Beats of Bits
或许现在许多人看到这个标题的时候还会认为是危言耸听,可这一天似乎已经离我们越来越近. 社交网络可能就是未来互联网的代名词. 毋庸置疑的是,互联网依然增长迅猛,但从以下三组数据我们发现,互联网的增长重心在向特定方向聚集. 线上视频保持着爆炸性增长,每年用户使用增长率 45%. 移动设备用户上网使用时间较去年增长了28%,其中智能手机用户上网使用时间翻倍.

关于物的互联网

- 瑾 - 爱范儿 · Beats of Bits
2008 年,连接到互联网的设备已经超过了人类的数量. 随着移动互联网的发展,与互联网相连的物品数量更是急速上涨,Cisco 的一副信息图展示了与互联网关联的物品之增长. 到 2020 年,连接到互联网的物品数量将达到 500 亿. 这些不仅仅是智能手机和平板,它们可以是任何东西. 荷兰一家初创公司 Sparked 在奶牛的身上使用无线感应器.