《计算机网络——自顶向下方法》读书笔记,第一章、计算机网络和因特网

《计算机网络——自顶向下方法》读书笔记,第一章、计算机网络和因特网

声明:开此系列博文用于记录自己读书过程的学习总结。对我目的为:练习提高表达能力、知识归结能力等。分享出来给其他读者目的为:帮助快速了解书中知识体系结构,不鼓励用于面向相关的考试前速成。

引入:

首先既然是计算机网络,我们首先要知道,什么是网络?网络就是一个若干个节点连接起来的一个网状的结构。那什么是计算机网络呢?就是用计算机作为节点连接起来的网络结构。上面这些还都是很抽象的结构的定义,如果要联系到现实生活中,那么,因特网(就是我们平时说上网上网)就是现在最大的计算机网络。书后面的很多内容,都是在研究这个特定的计算机网络实例——因特网。


首先我们可以分别从两个方面来研究这个因特网。就是,它的硬件结构(用什么东西做的)软件结构(用什么规则逻辑来交流信息)

硬件结构:

既然这个因特网是节点连接在一起构成的,这个网络结构实体就可以分成这么两个部分,节点和连接节点的边(链路)。下面分别说一下节点和链路大概是是什么。

  • 节点:

既然因特网是一个计算机网络,那么最基本的,节点肯定就是计算机嘛。不过,随着技术的发展,其实这里说每个节点是计算机已经不是很恰当了,现在节点的范围已经有了更多的扩展,比如:智能手机,死肥宅的switch游戏机,再到小天才电话手表等等,也都连接了因特网,所以也都可以看做因特网中的节点了!那么后面我们就把这些设备统一称为主机(host)或者叫端系统(end system)。

  • 边(链路):

现实世界中,连接端系统的任务,由两类部件共同完成,分别是通信链路分组交换机

通信链路:实际的用于传递信息的线路,有很多不同的物理结构,比如可以是:同轴电缆,铜线,光纤,无线电频谱等。他们有的深埋在地下,有的嵌在墙里,有的在天上波状扩散。造价不同,传输速度等相关性能也不同(想一想,不花钱你能变强吗?)。

分组交换机:其实就是用于转发的中间结点,最简单的例子就是,家里买的路由器就是一个分组交换机。那么为什么要设置这么一个转发的中间点呢,我目前的理解其实就是为了减少通信链路的长度,另外还有什么好处呢?后面说不定会领悟到其他的。(我猜还有。。。

  • 因特网服务提供商(ISP)

为这么要加一个这个呢,它既不是节点也不是边,但是它和实际的这个网络体系的建设有很大的关系。就是有没有怀疑这件事,地下的电缆都是谁埋下去的,说不定还得在海底过海,再加上定期的维护,就算是公共设施,国家出钱,也需要某些组织来管理呀。这里用我国举例,就是中国移动,联通,电信三家公司。他们为用户提供接入互联网服务。你需要从物理层面连接你的端设备到他们的网线电话线等等,然后向他们缴费,他们便会为你提供上网服务授权等等。ISP在后面也会出现,目前我的理解中,可以将它看成一个比用户更高层的组织。

软件结构:

端系统,分组交换机等等互联网中的硬件,如果他们之间需要交换信息,就需要一系列统一的大家都认可的规矩,比如:用什么方式发送信息,用什么方式解读信息…这个规矩我们叫做协议

  • 协议:

因特网中使用:TCP(传输控制协议)IP(网际协议) 来规定如何发送和接收信息。

掌握计算机网络领域的知识的过程,就是:理解网络协议的构成、原理、工作方式。


上面从软硬件的角度描述因特网,现在,再换一种方式。在这个网络中,我们从网络边缘网络核心的角度来进一步熟悉这个网络结构。

网络边缘:

网络边缘大概就是一些端系统(可分为客户(client)服务器(server))如何接入的因特网。然后描述了接入网线路的一些物理结构等等。积累类型的知识。

网络核心:

此部分开始描述分组(一段byte信息)在端系统之间经过传递时,经过分组交换机的时候分组交换机的相关操作。现在移动信息(分配链路资源)有两种策略:电路交换分组交换

  • 电路交换:

电路交换预先分配好端到端的一系列固定的链路组成好的一条路径,在两端通信期间,一直占用该资源,保证了通信的稳定性,但是相比于另一种分组交换,却降低了链路的使用饱和度。所以现在在渐渐地被淘汰。

  • 分组交换:

分组交换是,将数据分割成一个一个分组(类似于数据包),然后将每个分组发送到直接和发送端相连的某个路由器(分组交换机)中,接收到分组的路由器再根据其内置的转发表继续将其发送到下一个分组交换机,依次进行,直到该分组到达接收端。这里就涉及到了一些概念,下面将依次说明,包括:输出缓存时延丢包吞吐量

  1. 输出缓存:因为是以分组为单位发送的,而且没有哪个分组可以固定的占有某条链路,而且可能短时间收到多条分组但是来不及发送,所以每个分组交换机都需要一个缓存功能,将收到的分组缓存成一个队列,然后按顺序依次发送。
  2. 时延:四个时延:节点处理时延、排队时延、传输时延、传播时延。这里面就是字面意思,很好理解。然后分组交换产生的排队时延是关键,因为它是波动的,可在一定概率的程度上保证不超过一定的阈值。总之是一个很值得深入研究讨论的部分。
  3. 丢包:因为分组交换机自带的缓存不是无限大,所以理论上会有超过存储限度的时候,这是交换机就只能选择丢弃一些分组,这就被叫做丢包。而我们肯定是希望降低丢包率。这就有很多算法值得研究了。(如果我之后工作致力于解决与此相关的问题,那还是很有挑战性的。
  4. 吞吐量:简单来说就是,百度网盘、迅雷上那个下载速度,因为一条路径有多条链路顺次连接而成,所以,传输的速度受到所有链路中传输速度最慢的那根的限制。因为是波动量,所以也分瞬时吞吐量、平均吞吐量等等不同的评价指标。

网络的网络

这个概念单独拿出来说,它描述了这个庞大的计算机网络结构是如何一点一点建立起来的。

  • 网络结构1

    这个结构首先考虑最简单的情况,唯一的一个全球传输ISP(路由器和通信链路构成的网络)连接所有的接入ISP。全球传输ISP被认为是提供商,接入ISP被认为是客户。所有接入ISP向唯一的全球传输ISP付费。

  • 网络结构2

    为了防止唯一的一个全球传输ISP实行垄断,自然而然的产生了多个不同公司建立的全球传输ISP,这些全球传输ISP之间首先实现了互联,然后接入ISP可以选择其中的一个进行付费连接。

  • 网络结构3

    因为一些公司实力有限又想挣钱,或者为了方便管理,就产生了区域ISP。向下,它负责对某一块区域的接入ISP进行连接;向上,它和全球传输ISP进行付费连接。这样就形成了一个基本的三层的层级结构。但是因为很难界定多大的大小才算做区域,所以可能就会有大区域,小区域,小小区域等等,于是会催发接入ISP连接到小区域ISP,小区域ISP连到大区域ISP,大区域ISP在连接到全球传输ISP这种结构的产生。于是就变成了一颗真正的不定高度的层级结构。

  • 网络结构4

    然后因为这里面大家都有自己的想法,他们通过不断地瞎折腾,就产生了一些这样的结构:存在点(PoP)、多宿、对等、因特网交换点(IXP)。这也让这个网络的结构更加的复杂了。

    1. 存在点(PoP):除了接入ISP以外,其他的任意层次都存在。它是提供商网络中的一台或者多台路由器群组(地理位置相同),通过第三方电信提供商的高速链路,该PoP中的一个路由器,和客户网络中的一台路由器相连,达到信息互通的目的。(此结构现在理解的不是很好,等后面再回顾 ~
    2. 多宿:为了保证信息传输的稳定性,某一层的ISP可以和多个上层ISP相连,这样就可以在某个上层ISP出问题之后还有备用的可以使用。这个是自然而然会想到的。
    3. 对等:如果两个同一层的ISP经常交换信息,但是每次都要通过上层ISP中转,在某些情况下这是非常不划算的,所以他们决定自己直接连接,这样就省去了向上层ISP缴费的过程,长久来看经济实惠。
    4. 因特网交换点(IXP):IXP相当于是一个汇合点,多个ISP在这里一起对等。它通常是一个固定的建筑,可以为附近的ISP提供对等服务。
  • 网络结构5

    这时有的公司财大气粗,有了足够的实力真的建立起一个在地理上可以连接全球各地的网络结构,同时它还有极强的产品落地能力等等,这样它就可以构建一个“内容提供商网络”来盈利。最典型的就是Google公司,它首先在全球各地建数据中心服务器,他们有自己的专用TCP/IP网络互联,独立于公共因特网,这首先保证了他们数据的封闭性,同时他们有专门预留出一些接口提供给包括:顶层ISP,IXP,区域ISP,接入ISP等等。为他们提供自己的内容服务,可以是搜索服务,可以是email服务等等。


协议层次

因为互联网技术发展速度快,复杂性高这些特点,为了尽量减小技术换代对整个体系结构的影响,我们建立了这个层次结构。

注意此处我觉得是对于设计结构非常具有指导意义的:它为我们提供了这样一种封装结构的思路,对于一个数据如果要对其进行非常复杂的处理,我们可以把操作步骤分成若干个互不影响的层,每一层完成一个步骤的操作,然后对于中间的每一层,它只会接收下一层的的信息,按预定设置进行处理,然后发送到上一层。这样就保证了每一层相对的独立性,包括查错等等,都非常易于操作。

那么这个层式结构是如何的呢?其实结构如下:

5层因特网结构:应用层——>运输层——>网络层——>链路层——>物理层

7层ISO OSI参考模型:应用层——>表示层——>会话层——>运输层——>网络层——>链路层——>物理层

下面我们先考虑因特网实际在使用的5层结构:

  • 应用层:此层的信息分组称为报文(message),这一层的协议例如:HTTP,SMTP,FTP等等。简单来说,它是规定发送端应用程序如何压缩信息变成报文,接收端应用程序如何理解报文的。
  • 运输层:此层的信息分组称为报文段(segment),这一层的协议如:TCP,UDP。他们是规定了每一条报文段向目的地传送速率,流量等等。
  • 网络层:此层的信息分组称为数据报(datagram),这一层的协议如:IP协议。它规定了数据报在路由器时,每次向哪一个新的路由器传递,也就是规定了传递的方向路径。
  • 链路层:此层的信息分组称为帧(frame),这一层的协议包括如:DOCSIS协议。链路层负责执行网络层下发下来的发送任务,将数据封装发送到目标节点。
  • 物理层:这一层负责规定如何把信息通过同轴电缆,光纤等等从一端移动到另一端。它负责将帧从一个网络元素移动到临近的网络元素。

为了更深刻的理解这个实际的传输过程,我们举一个很简单的例子来描述数据实际的流动过程:

首先数据从发送端系统的协议栈向下,然后沿着中间的链路层交换机和路由器的协议栈上上下下,然后向上到达接收端系统的协议栈。

这里再插一句脱开计算机网络本身,对于设计结构有指导性意义的另一句话:因特网体系结构将他的复杂性放在网络的边缘。(越变越,越复杂,特异性越强,而偏向中间的部分都会尽量简单,易于接入)


面对攻击的网络

看到标题可能会引起一些人的兴趣,我是不是可以学完做一个黑客了!其实下面的只是对于攻击的一些基本介绍,另外即使是这种自由性开放性很强的因特网结构,以我目前的认知来看,想要制定一系列的防御机制也比设计出一套成功的攻击策略要容易不少,至少普通的网站建设者服务器维护者就可以用自己的知识保护自己的服务器,而攻击者往往需要各方面很强的业务能力。所以下面我还是会抱着“如何通过互联网的结构的启发,感受出什么样的结构才是安全的难以攻破的结构”这样的目的继续分享。

下面我们根据攻击者的目的分成下面四类:

  1. 控制你的计算机完成一些操作

    因为上网的本质就是信息的互相传递,所以他们就可以设置一个程序( 病毒 virus蠕虫worm ),将程序伪装成一些其他的信息,发送到你的计算机中,从而控制你的计算机完成一些他希望完成的事情,如:读取你的密码,向他指定的服务器发送信息,继续通过你的电脑感染其他电脑等等。

    病毒(virus):需要交互式感染,即用户点开软件,它才可以运行,然后完成它想要的。

    蠕虫(worm):也许是用户访问了一个安全性不高的网站,该网站已被攻陷,那么无需用户运行它,他就可以在用户的计算机中产生自己的进程。

  2. 使服务器或者网络基础设施无法正常工作

    拒绝服务攻击(DoS) 可以使得网络、主机或者其他基础设施没办法让合法用户使用,常见攻击方式分下面三类:

    弱点攻击: 针对某一个或者某一组特定的目标,抓住它某方面的弱点,精密的设计一系列内容,发送给对应目标,有时候甚至需要恰好让服务器以恰好的顺序收到各个分组,才可以达到他的目的,这个精细程度可想而知。

    带宽洪泛: 暴力既是优雅,以正常的方式向服务器发送大量无效信息,使得服务器通道堵塞,然后导致其他用户正常的分组无法到达。单一的发送端可能无法产生足够多的流量,这里还可以先控制很多他人的计算机,然后一起发送,总之还存在着很多优化的策略,从而让其攻击更难被防范。

    连接洪泛: 创建很多全开或者半开的TCP连接,这样也会导致正常的TCP连接无法申请出来。

  3. 在信息发送途中获取信息备份

    分组嗅探器:在无线传输设备附近放一个这样的仪器,他可以得到这个无线传输设备发送出来或者接收到的信息,然后产生一个备份,这样只需要知道如何解码,就可以了解到经过这个无限传输设备的所有信息了。

  4. 伪装成其他人从而获取信任

    IP哄骗: 使用其他人的身份标识符,伪装成其他人,收到本该其他人收到的信息。

发布了227 篇原创文章 · 获赞 142 · 访问量 9万+

猜你喜欢

转载自blog.csdn.net/qq_36306833/article/details/102992473