互联网OSI七层模型详细解析(三)

让我们接着上一篇继续讨论OSI模型的第5层、第6层和第7层。网络上很少有资源能够真正帮你区分OSI模型的最后三层:会话层、表示层和应用层,因为另一个较为流行的计算机网络模型TCP/IP协议已经将这三层组合为一个整体的应用层结构。

要理解OSI会话层,你必须得知道这个模型是早在个人计算机或笔记本电脑问世以前就已经创建了。那时,计算机的运行是在被称为大型计算机的大型机器上完成的,这些机器通常很大,占据了整个房间。后来人们使用被称为哑终端(字符终端)的设备来访问这些巨大主机上的计算资源(CPU资源、内存资源、磁盘资源、网络资源)。哑终端实际上只是插入这些主机的显示器和键盘,并不会执行实际的数据处理。所有的实际计算都是在大型机上完成的。这也是Linux创建的模型,也是Linux经常被描述为多用户操作系统的原因。在任何情况下,所有的计算都是在这些大型主机上完成的,用户通过哑终端连接到这些大型主机上,它们的另一端又连接着其它的大型主机,而其它的大型主机另一端又是与哑终端相连着的用户组。     

说到这里我们就可以定义会话层主要解决的问题了。如图示,左边的蓝色用户正在通过该大型机与右边也连接着大型主机的蓝色用户进行对话,与此同时还有两个绿色用户也在使用这两个主机相互对话。好吧,如果所有的数据都需要在这两个相连的大型主机上处理和发送,那么从左侧主机发送到右侧主机的数据包将具有相同的第二层地址(-MAC地址),相同的第三层地址(-IP地址),甚至可能具有相同的第四层地址(-端口号),这就引出了一个问题,如何将这两个蓝色用户之间的对话从这两个绿色用户那里保持分离呢?这就是会话层发挥作用的地方。

  • OSI会话层的作用:

会话层是用于区分用户会话的,它允许网络协议独立于OSI模型的第二层、第三层或第四层地址来识别用户。其实第五层也使用了一些被称之为第五层的组件。假设这两个蓝色用户在没有使用大型主机的情况下需要进行交谈,实际上右边蓝色用户是xxx site.com的网络服务器,而左边蓝色用户只是使用手机的人。

该移动电话当前连接的是此用户家中的Wi-Fi,并登录到了网站xxx.site.com。但是如果这个用户决定去咖啡店并连接到那里的Wi-Fi网络时又会是怎样的情形呢?因为咖啡店的网络不同于家中的网络,是一个新的IP地址,因此很多信息也会发生变化。如果网站需要使用OSI模型的第一层到第四层的信息来识别这个用户,那么该用户将不得不重新登录到该网站。因为网站每次连接到新的Wi-Fi网络时,都会获得一个新的IP地址。

由于我们是使用HTTP协议来访问该网站的,HTTP中有一种名为HTTP cookie的功能。这些cookie只是一些任意文本字符串,用于存储由服务器创建的用户特定信息。当用户登录到网站时,服务器会生成这些cookie中的一个并将其发送给用户,然后该cookie就会与用户信息联系在一起。所以你可以看到HTTP cookie是OSI模型会话层协议的最好例子,它们允许网络独立于数据链路层、网络层和传输层地址来识别用户。这就是我前面提到的第五层组件。

  • 表示层提供的功能

接下来是OSI模型第六层-表示层。我们先模拟一个数据包到达xxx.site.com的web服务器的场景。前面我们说过每个数据包实际上只不过是一系列的1和0。在OSI模型前五层的协调工作下,我们知道这个数据包会被成功传递到web服务器,传递到正确的Mac地址、正确的IP地址,正确的端口号以及启动正确的用户会话,那么OSI第六层负责什么功能?是告诉我们如何转换这些1和0吗?

事实上我们可以采用不同的计算机数据表示方法来解释这些1和0。例如,我们是不是可以按照Base64的编码规则将这些1和0划分为6位一组的编码,如此就意味着这些6位一组的编码会变成一组新的64字符集。

或者我们是不是应该以4位为一组来解释那些1和0,也就是十六进制,每组由四个1和0组成,代表着一个新的十六进制字符:

或者我们应该将这些1和0解释为长数字或整数,如果我们将所有这些1和0解释为32位随机整数,这些数字的变化将会庞大到数不胜数。

这就是表示层的功能,它是要告诉我们如何处理这些1和0。之前的会话层我们是以HTTP为例的,在表示层我们仍会使用HTTP协议来作说明。

HTTP协议使用的是扩展ASCII码对照表,扩充ASCII码将所有的1和0分组为八个比特的集合(也就是8位码),并将每一组8位码解释为不同的ASE字符,将每一组不同的1和0组合转换为字母G、字母E以及字母T。以此类推,这就是表示层提供的服务。它告诉我们如何处理通过OSI模型成功接收的比特1 和0并将其交付给正确的用户会话(用户会话是指用户与系统进行交互的一系列对话过程)。

  • OSI应用层有何作用?

如果表示层的主要功能是告诉我们如何翻译这些已经接收到的1和0, 那么第七层-应用层是要告诉我们如何处理这些被翻译的字符,或者说是第七层实际上定义了应用程序命令。

前三个字节的1和0分别被转变成字母G、E和T,HTTP中的get命令是用于获取特定网页的命令,是一种网页请求的方式。实际上是HTTP request的前8个字符使用主机packet.net中的http P 1.1 请求访问简单html页面。这就是OSI模型第七层应用层的功能。

在本节中,我们一直使用HTTP作为示例协议。为了实现会话管理目标,HTTP使用了HTTP cookie,无论你使用的是ipv4还是IPv6,HTTP cookie的工作原理都是一样的。对于第六层,HTTP使用的是扩展的询问编码;对于第七层,HTTP有自己的一组应用程序命令。当然这只是教你了解计算机网络是如何工作的,网络协议也不只有HTTP,还有其它协议在OSI模型上工作。例如FTP协议。这些协议中的每一个都可以以任何对特定应用程序最有意义的方式实现第5层、第6层和第7层的功能。

这就是为什么TCP/IP模型将这些层合并为一个聚合应用程序层的原因,因为应用程序的每个协议都将以自己的方式实现这三个目标, 因此才将它们组合为一个有益的应用层。所以最终无论你使用的是七层OSI模型、五层TCPIP模型,还是有点传统的四层TCP/IP模式,它们都是帮你理解计算机网络的一种方式。

互联网OSI七层模型详细解析(二)

为了进一步了解数据包是如何在互联网上移动的以及要具备的条件。我们会以实用性为导向继续讨论OSI模型。在上一篇中,我们揭示了OSI物理层、数据链路层和网络层是如何为网络的总体目标(即数据的传输)做出贡献的,也讨论了第一层物理层负责的是跨线传输比特1和比特0。还解释了如果a1主机有一些数据需要发送到e8主机, 那么就需要从添加第3层报头(网络层报头)开始,来完成数据从一端到另一端的传输,另外还需要添加新的第2层报头(数据链路层报头)来完成数据的逐跳传递。现在我们将继续讨论OSI模型的第4层-传输层。

  • OSI传输层作用

传输层– OSI模型传输层的总体目标是完成服务到服务的交付。我们来举例说明一下,比如这里有一台计算机,它有一个IP地址和一个MAC地址,这时你打开了一个网页浏览器正在浏览网页,还在运行某个聊天程序,如slack聊天群组、discord或IRC,以及一些在线游戏。

它意味着每一个程序都需要通过网络发送和接收数据,而所有这些数据都将被指定给第三层网络层报头来完成端到端的传递,以及第二层数据链路层报头来完成节点与节点之间的通信。那么电脑是如何确保正确的程序接收到正确的数据包呢?这就是OSI第4层发挥作用的地方。

OSI第四层的作用:用于区分数据流。OSI传输层将接收所有传入的数据,并确保正确的程序能接收正确的数据。就像第三层(网络层)有一个寻址技术(IP地址)来进行端到端传输,第二层(数据链路层)有一种寻址方式(MAC地址)来完成节点到节点的传输,第四层也将使用自己的寻址方式来实现服务到服务的传输方式。

OSI传输层的寻址方式涉及的是端口。现在有两组端口TCP和UDP。TCP和UDP是区分数据流的两种不同策略。TCP提供可靠性服务,而UDP提供高效性服务,TCP和UDP协议都是实现传输层目标的不同策略。TCP与UDP的工作原理:每一个在网络上预期接收或发送数据的程序都将与指定的端口号相关联。当数据到达线路时,除了我们已经讨论过的网络层报头和数据链路层报头之外,还需要封装传输层报头。

  • 传输层报头封装的是什么?

传输层报头将指示哪个特定程序应该接收哪种数据,传输层主要用于确保正确的应用程序能接收正确的比特1和比特0。这是OSI第四层如何区分数据流的高级概述。让我们更详细地举例分析一下,如下图所示有一个客户端和三个服务器,正如之前所讨论的,服务器只不过是一台运行软件的计算机,但它知道如何响应特定的请求。服务器上的每一个软件都被分配了与底层网络应用程序相关的预定义的已知的端口号。

假设bank.com正在使用https侦听加密的web访问,被分配的是TCP端口443(HTTPS协议的默认端口号),site.com的服务器正在使用http响应一般web请求,被分配在TCP协议的默认端口80上侦听。该聊天服务器正在运行IRC (internet relay chat) ,IRC代表互联网中继聊天,它是运行在UDP端口6667上的在线聊天应用程序。

当客户端向这些服务器发出请求时,它不仅向IP地址发出请求,还会向相关的指定端口发出请求。从客户端发出的每个请求,都会选择一个随机端口号作为连接的源端口。因此,从客户端到site.com的连接包含了源端口号9999,这是客户端为这个特定连接随机选择的端口,该数据包的目的地指向site.com网站的IP地址,以及http应用程序的TCP端口80。

请记住,源IP地址和目的地IP地址将封装于数据包的第三层报头中,而源端口和目的地端口将封装于数据包的第四层报头中。实际上这个随机选择的源端口非常重要,它是客户端用于侦听并对原始请求做出响应的端口,这意味着当服务器响应web请求时,会发出一个包含发出端的源IP地址&端口号以及接收方的IP地址&端口号的响应包,目标端口9999与客户端最初发出的请求包上随机选择的端口相同。由此可以看出对于网络上所有的连接,都要有一个源端口和一个目标端口参与其中。

目的端口号通常由使用中的应用程序管理,源端口号则由客户端随机选择,因此从客户端到site.com的连接具有以下属性:它是从客户端的源IP地址1.1.1.1和源端口9999到服务器端的目的IP地址3.3.3.3和目标端口80的TCP连接。请注意,在原始数据包中,SRC 1.1.1.1 :9999是源地址和端口,DST 3.3.3.3 :80是目的地址和端口。但在响应包中,情况正好相反,SRC 3.3.3.3 :80是源数据,DST 1.1.1.1 :9999是目的数据。这个过程发生在与客户端产生的每次连接,也就是客户端每次的数据传输都会选择一个新的随机的源端口(比如图例的8888和7777)。这样当所有这些服务器响应时,从端口8888上返回的任何内容都将被提供给网络浏览器,从端口7777上返回的内容都将提供给IRC客户端。

通过这种方式,数据流之间会保持相互隔离,这些端口将确保正确的应用程序获得正确的数据,这一流程还允许客户端多次连接到同一服务器上。试想一下,当你浏览互联网时,你会在同一个网站上打开多个选项卡,而这些浏览器选项卡中的每一个都不会错误地显示另一个选项卡中的数据,原因是每次打开一个新选项卡时,客户端都会生成一个新的随机源端口。这就是数据流能彼此区分的原因。这是UDP或TCP协议的一个功能,这两种协议都是第四层传输层协议,第4层提供的是数据的服务到服务交付。

最后我们简单概括下OSI模型的最高层次。实际上,TCP/IP协议将OSI模型的会话层、表示层和应用层视为单个通用的应用层,我们将在下篇文章中详细说明。因为每个应用程序都可以自由地实现第5层、第6层和第7层的功能。因此,通常将这三个层简单地视为单个通用应用层。而另一种流行的互联网通信模型正是这样做的,TCP模型将OSI七层模型的5、6和7层的所有功能合并到一个层中。

互联网OSI七层模型详细解析(一)

互联网行业的总体目标是允许两个主机之间共享数据。在网络还没这么发达的时候,如果你想把数据从一台主机传输到另一台主机上,就必须借助外部设备将其从一台主机拷贝到另一台主机。而当下连网的方式允许主机通过网络自动共享数据来帮我们实现数据的自动化传输。要做到这一点,这些主机必须遵循一组规则。

这与语言规则相类似,比如英语有自己的一套规则,法语也有自己的一套规则,两个讲英语的人必须遵守这套规则才能更好的交流。网络也有自己的一套规则。网络规则被分为7个层次,这些层被称为OSI七层模型。

OSI七层模型各层功能及协议

首先,我们将人体各大系统的构成与网络七层模型做一个类比。人体是由各种系统组成的,骨骼系统、呼吸系统、神经系统、心血管系统、肌肉系统等,如果这些系统都能正常工作,那么人体的目标就达标了,这意味着我们拥有着健康的体魄。网络连接的方式也相同,OSI参考模型的每一层都有一个特定的功能,如果所有这七个功能都顺利实现了,那么联网的目标也就完成了,也就是说主机之间可以共享数据。这篇文章的目的是帮助我们了解OSI模型每一层的作用,了解它们如何为联网的总体目标做出贡献,即允许不同主机之间的数据共享。

  • OSI物理层的设备

我们从OSI模型的第一层开始说起,即物理层。计算机上的数据是以比特的形式存在的,即1和0。这些主机与其它主机共享数据所需要的首要条件是,必须将这些1和0从这台计算机传输到下一台计算机,这就是OSI物理层协议。物理层的目标是传输比特,任何有助于将1和0从这台计算机传输到另一台计算机的设备都被认为是物理层技术。

例如,电缆都属于物理层设备的范畴,所有这些电缆的作用是从一端接收比特并将其传输到另一端。不过OSI模型早在无线互联网通信的概念被认可之前就已经存在了。因此Wi-fi被认为是一种物理层技术,因为Wi-fi的存在只是为了将1和0从一台计算机传输到下一台计算机。现在我们知道,这些电缆或Wi-fi不仅位于物理层,还有一些设备也位于物理层。其中一种设备被称为中继器(Repeaters)。在网络基础知识(二)中,我们了解到中继器的作用只是将信号从一端延长到另一端。在某种程度上,我们可以说中继器实际上只不过是帮你延长网络传输距离的设备。因此,中继器被视为第一层设备,这意味着像集线器(Hub)这样的多端口中继器也将被视为物理层设备。

  • OSI数据链路层的设备

OSI模型的第二层为数据链路层,它会与物理层交互,这种交互实际上是将比特放在网线上,并从网线中检索比特,这意味着这条网线与电脑连接的任一设备都被视为第二层上的设备,也就是说与物理层网线实际相连的是这台计算机的NIC(Network Interface Card)或网络接口卡,因此NIC被视为是数据链路层上的设备。无线网链接卡也被认为是第二层协议上的设备,因为它与Wi-fi无线电波相互作用。   

现在的NIC和Wi-fi链接卡看起来不再是这样了,但曾经有一段时间,你必须购买单独的卡,并将其安装到计算机中才能访问网络或Wi-fi。如今,Wi-fi网卡可以放在你的智能手机或手表里。数据链路层的主要目标是实现中继式传输(hop to hop delivery,指的是路由传送封包的协定),数据链路层的工作原理是从某个特定的NIC中获取1和0,并将其传输到另一个NIC。为了实现这一目标,第二层将使用一种特定的寻址方式,该寻址方式被称为MAC地址。MAC地址是48位,通常表示为12个十六进制数。这里有三个MAC地址的例子,其实它们都是完全相同的MAC地址。唯一不同的是在Windows机器上的显示方式通常是在十六进制数字之间使用短划线(94-65-9C-3B-8A-E5) 。Linux机器通常会使用冒号来表示MAC地址(94:65;9C: 3B: 8A: 5E), Cisco 路由器和交换机通常使用中间有点的四个十六进制数(9465.9C3B.8A5E)来表示。

无论采用哪种方式表达MAC地址,转换成48位的仍然只有12个十六进制。它的工作方式是每个NIC都有一个唯一的MAC地址。无论是windows系统还是Liunx系统,它们的MAC地址都将允许数据从一个NIC传输到下一个NIC。我们已经确定NIC是位于OSI模型第二层,其实还有另一类型的设备也位于第二层,那就是交换机。之前我们讨论过交换机是提供网络内部通信的设备,这意味着这两个主机(a1和e8)是通过交换机连接来实现它们之间的传输的。

此外,交换机允许我们将许多设备连接在同一个网络系统上,例如:如果下图的a1a1想要和b4b4通信(a1a1和b4b4都是MAC地址的前四位,此处用作代指),交换机将在内部连接这些线路,以便数据可以从左一的NIC传输到左二的NIC上,因此交换机也被视为数据链路层设备,因为它帮助了a1和b4之间的数据传输。

一般来说,与你通信的互联网并不一定都是在同一网段上。也就是说主机之间的通信通常需要多个跳跃点(multi hops),这意味着我们需要跨越多个路由器才能将数据传送到目标主机。如下图所示:

而这些路由器中的每一个都会使用一个NIC来连接到一条线路上,也就是说每个NIC都有自己的MAC地址,数据链路层负责从第一个MAC地址(a1a1)获取数据并将其传递到下一个MAC地址(b2b2),然后从第一个NIC(Router1/b3b3端口)传递到下个NIC,依次传递给最后一个NIC。正如图中所示,数据链路层都在处理数据的逐段传递,那么是什么负责确保数据从一个端点(a1a1)传到另一个端点(e8e8)呢。这就引出了OSI模型第三层-网络层。

  • OSI网络层的设备

OSI模型网络层的目标是实现端到端的传输。为了实现这一目标,第三层将使用自己的寻址方式,即IP地址。之前我们有对IP地址做过解释,说IP地址是32位,表示为4个八位字节,每个八位字节可以是0-255。每个主机都将通过其IP地址进行标识,这些IP地址将允许数据从a1a1一直传输到e8e8。现在,正如我们从下图所看到的,帮助从端到端传输数据的是路由器。因此路由器被认为是位于OSI模型的第三层。主机也被认为是位于OSI模型的第3层,但实际上任何含有IP地址的设备都可以被认为是位于OSI模型的第3层。

说到这儿你可能就要问了,既然我们已经有了第3层的IP地址,为什么还需要MAC地址,或者你会这么想,我们已经有第2层的MAC地址,为什么还要IP寻址方式呢。这个问题将有助于揭示数据包是如何在互联网上移动的。之所以有两种不同的寻址方式是因为每种寻址方式都有不同的用途。

我们假设a1主机有一些数据需要发送到e8主机上,当然,这些数据只是一堆1和0,OSI第二层(数据链路层)和第三层(网络层)并不知道这些数据包含了什么,实际上它们只是一组任意组合的1和0需要送到e8主机而已。由于a1计算机知道数据需要送达到e8端,它将给数据添加一些第三层信息。第三层信息包括源IP地址和目的地IP地址。

但现在该计算机(a1)知道第一步是将添加好的第三层信息(IP地址)传输到第一个路由器b2,该路由器会提示计算机(a1)将第二层(数据链路层)信息添加到里面,第二层信息包含了计算机(a1) NIC的源MAC地址和第一路由器NIC的目的地MAC地址,这就是由a1计算机发送到第一路由器的信息。一旦该信息到达第一路由器,我们就可以去掉第二层的信息(MAC地址)。

这个过程将从中间的路由器上继续进行,通过添加第二层信息(MAC地址)来完成这个跳跃,直至序列中的最后一个路由器d7添加完最后的第二层header(报头),数据包就完成了从d7端的NIC到主机e8的NIC的传输工作。一旦数据包到达最终主机e8时,第二层报头就可以被移除了。数据链路层报头的目的仅仅是将封装好的数据从一个结点带到下一个结点。另外第三层报头也可以移除了,因为网络层报头的用途是将数据从a1端传输到e8端。最后,经过多个跳跃点(multi hops)数据包最终被传输到了计算机e8,数据也将由e8主机处理,这就是为什么我们需要IP地址和MAC地址的原因,因为它们具有不同的功能。数据链路层完成的是点到点的传输,只负责直接相连的两个结点之间的通信,如图中的主机a1和Router1,Router1和Router 2;而网络层完成的是端到端的传输,即a1到e8的传输。

我们一直将IP地址和MAC地址作为独立的函数在讨论,事实上它们的确是独立的,但有一个协议可以将它们联系在一起,这个协议被称为地址解析协议(ARP),它能把一个网络层的IP地址链接到数据链路层的MAC地址上。ARP协议对于理解数据如何在网络中移动是至关重要的。

在本节中,我们讨论了OSI模型第一层、第二层和第三层,以及每一层的主要任务以及相关的设备,及其它们是如何帮助数据在网络中传输的。尤其详述了第二层和第三层之间是如何协同工作,及它们在从一端发送数据到另一端获取数据时所需的许多不同路由之间的数据移动路径。在下节中,我们将继续讨论传输层协议。

网络基础知识(二)

网络基础知识点

在网络基础知识(一)中,我们讨论了主机的概念、IP地址的定义&作用以及网络的定义。在本篇中,我们将探讨网络设备具体有哪些。如果你还没看过上一期的内容,建议先了解一下,这样便于你更好的理解接下来要讨论的网络设备及其功能。

(五) 中继器是什么? 中继器的作用

上期我们聊了网络的概念,知道了只要你用一根电线将两台计算机连接起来,就会创建一个网络。不过关于通过导线发送数据,你还需要了解的一件事是,随着距离的加长通信会变得微弱。当然如果两台需要通信的计算机是在同一个房间里,那就无需担忧。因为在这种情况下,即使通信会有所衰减,主机间的传输仍然可以顺利完成。但如果这些主机之间的跨越更大,比如是一栋建筑最两侧的两台计算机,或者是位于两栋不同的建筑中的两台电脑之间的通信,如果信号在到达另一侧之前衰减,那么传输就可能会遇到问题,就会出现这两台主机无法共享数据的结果。这时你就需要一个中继器。中继设备的唯一作用是再生信号。中继器负责从一端接收数据通过“再生”功能将数据传输到另一端,从而实现那些跨度较远的设备之间的数据传输。中继器英文是repeater。

(六) 集线器是干什么用的?集线器的功能

到目前为止,我们一直在讨论如何将一台主机直接连接到另一台主机上。如果要添加第三个主机,则需要将该主机连接到已经建立好的其他两个主机上。如果要添加第四台主机,要将第四台主机连接到已连接好的其它三台主机上。同理,如果要添加第五台主机,则必须将第五台连接到已连接好的每一台主机上。这样一来,添加新主机到已有网络系统的工作就会变得更加繁琐。

为此人们创建了一种能置于网络中心的设备,并让所有主机与之相连。这些设备负责处理不同主机之间的漏斗式通信,好处在于如果你需要在网络系统中添加第六台主机,只需将其连接到该设备上即可,不需要使之与其它主机一一相连。我们将这种设备称为集线器。集线器英文:Hub。简单来说,集线器不过是一个多端口的中继器。

之前我们说中继器的作用只是再生信号。其实集线器执行的也是相同的操作,只不过它们需要跨多个端口执行。如下图,如果左边这两个绿色主机之间需要通信,其中一个主机向另一个主机发送数据包时,数据包会先到达集线器(图中的Hub),集线器会简单地复制该数据包并将其发送到所有与之相连的端口,也就是说右边两个端口也会接收到集线器发送的数据。谨记,集线器是第一个允许我们在网络中心连接多个主机的设备。这里集线器解决的只是网络规模扩展问题,还有一个问题就是与它相连的其它主机也同样能接收到它发出的数据。

(七) 网桥是什么?网桥的主要作用?    

如上图所示,右侧的两个主机并没有参与左侧绿色主机之间的通信,但它们也在接收对方发送的数据副本,这就引出了网桥设置这一概念。(网桥英语:bridge)在下图中,我们有两组主机,它们各自都与一个集线器相连,一个桥接器(也就是网桥)位于两个连接着其它主机的集线器之间。根据定义,网桥只有两个端口。一个端口面向一组与集线器连接的设备,另一个端口则面向另一组与集线器相连的设备。

网桥的作用是了解哪些主机位于自己的哪个端口,这意味着网桥会只参与和数据传输相关的通信。例如,下图这两台绿色主机通过集线器需要再次通信发送数据时,集线器会在所有端口重新生成传输信号。这就是说与集线器相连的网桥的左侧端口也会获得该数据包的副本,不过它会知道参与数据传输的另一个绿色主机是位于网桥的左侧,因此不会将数据包带到与通信不相干的右侧。谨记,网桥是第一个将数据包只传输到相关网络的设备。

此外,如果网桥左侧的某个主机需要与其右侧某个主机相互通信时,也可以通过集线器相互发送数据包。网桥会负责不让这些数据包渗入到与不参与通信的其它主机上,因为它知道右侧设备是存在于右侧集线器上的。当然,如果上图左侧左上方的主机需要向右侧右下方的设备发送一些信息时,网桥也会确保流量的正常传输,并且会允许数据包穿过它正确传输到另一侧。网桥的特点是梳理哪些主机是与它的哪侧端口相连接的从而确保数据包的准确准时传输。  

(八) 交换机是什么?交换机的作用与功效

现在我们来说说交换机,一起探讨一下交换机的作用和功能都有哪些?(交换机英文:switch)实际上交换机有点像集线器和网桥的组合,说它像集线器,其实是说它与集线器一样上面可以连接许多设备;说它像网桥,其实是说二者都清楚地知道哪些主机是与哪些端口相连接的,也就是说如果左侧这两个绿色主机想相互通信,交换机将知道接收流量的唯一端口是与绿色主机的两个端口相连的,因此只会将数据传输到这两个端口。同理,如果右侧这两个黄色主机想要相互通信,交换机将再次确保通信仅在右侧两个相关端口之间流动。因此我们在某种意义上说交换机是集线器和网桥的组合。

那究竟交换机的定义是什么?交换机是一种促进网络内部通信的设备。上一篇我们将网络定义为有着类似连接的主机的逻辑分组,就是说所有这些设备都属于同一网络,且共享一个IP地址范围。我们以家庭WIFI为例,假设家里所有主机的IP都是以下图的192.168.1.x开头的,192.168.1.11可能是你的手机,192.168.1.22可能是打印机,其余端口号各自对应着不同的设备。你也可以将其看成是某个公司内部设立的不同部门的主机IP地址,或者是某个学校的不同学院的主机IP,无论它们代表的是什么,基于所有这些设备都是与交换机相连的,因此它们都属于同一网络。

(九) 路由器      路由器主要用途

接下来我们以学校网络为例来探讨下路由器功能。假设某个学校有很多不同的教室,每个教室都有自己的专属网络IP。如下图所示,比如第二教室的IP范围是172.16.20.x,第三教室的IP 范围是172.16.30.x。之所以将两组设备分离到不同的网络中是因为它们可能具有不同的连接要求。比方说教室2是生物教室,学生只需要简单的互联网连接;但教室3属于计算机科学教室,学生不仅需要互联网连接,还需要访问各种云资源来进行研究。因为左侧计算机群与右侧计算机群具有不同的连接需求,所有我们要将它们分离成单独的网络。

This image has an empty alt attribute; its file name is image-12.png

在这种情况下,我们仍然可以使用交换机来实现网络内部的所有通信,这意味着左侧的交换机可以处理左侧三个主机之间的所有通信,右侧交换机则负责处理右侧三个主机间的所有通信。但是,如果上图左侧.33的主机想在不同网络上与右侧.44主机通话那该怎么实现呢?

因为交换机只负责提供网络内部的通信,在上述情况下我们就需要另一种网络设备来处理不同网络之间的通信,那就是路由器。路由器是主要负责网络之间通信的设备,它提供了网络之间的流量控制点。比方说,我们会限制从.11这台电脑到.44这台电脑的流量,注意这两台电脑不是独立的网络,所有的流量必须通过路由器,这也为安全策略或流量过滤的添加以及将流量重新定向到其它地方创造了便利的条件。

由于路由器(路由器英语:router)位于网络之间的边界处,它们为应用安全策略的部署提供了逻辑位置。从传统意义上来说,交换机并不适用于这种类型的安全过滤,因为人们普遍认为,处于同一网络上的设备基本上是不需要对网络内的流量进行过滤的。但如果你有设备需要不同类型的连接,那就需要把它们放在不同的网络中,而网络边界就是设备的逻辑分离点。

路由器的工作方式是了解与它们相连的网络。这意味着路由器将了解在左侧接口处它连接的是172.16.20.x范围内的网络,在右侧接口处连接的是172.16.30.x的网络,其下端是连接互联网的方向。这些面向不同网络的每一个接口都被称为路由,而所有这些路由都存储在路由器的路由表中。因此,路由表是路由器所连接的所有网络端口,而路由器也会使用该路由表来将流量输送到适当的接口。

(十) 网关是什么?网关的作用是什么?

上面我们说各个路由器知道它们连接的是哪个网络时,意思是路由器在它们连接到的每个网络中都有一个IP地址。当某个路由器连接到某个网络时,它在该网络中会被赋予一个IP地址。例如,左侧路由接口的标识IP地址为172.16.20.1,右侧接口的标识IP地址为172.16.30.254,路由与网络连接时被赋予的这个IP地址被称为网关。网关是主机离开本地网络的途径。网关英语:gateway。

例如,左侧右下方这个主机的IP地址是172.16.20.33,如果该主机想与不同网络上的某个设备通话时,它知道自己必须经由路由器,且该路由器的IP地址会被存储为该主机的默认网关。值得注意的是,该主机的默认网关172.16.20.1是该路由器的接口IP地址。更进一步说,路由器实际上是在网络和IP地址中创建层次结构的设备。

让我们再以某个公司纽约办事处设立的不同部门为例,每个部门都有自己的IP网络地址。这些网络中的每一个主机都连接到不同的路由器,而这些不同的路由器又都连接着另一个路由器,如果纽约办事处销售团队的某个主机(10.20.55.x) 想与营销团队(10.20.55.x) 的某一主机通信,则需要使用配置好的网关-即使用离该主机最近的路由器IP地址,将数据包发送到下一个路由器,该路由器再将数据发送到离营销团队最近的路由器,最后发送到营销团队的那个主机上。

以此类推,该公司的东京办事处也会有类似的设置,会分别配置两个路由器并将其连接到互联网上。实际上互联网本身只不过是一堆不同的路由器,如果纽约营销团队的主机A想与东京工程团队的主机C通信时,主机A会将数据发送到最近的路由器,再由其将数据发送给下一个路由器,而该路由将通过互联网上的所有路由器发送数据,最后送达东京路由器,进而发送给工程团队。这就是数据在互联网上传输的方式,也是路由器在实现不同网络主机之间通信所扮演的角色。

最后关于以上定义的路由器和交换机,我们做个小结。路由(routing)是一个在网络之间移动数据的过程,而路由器只是一种设备,其主要目的是以相同方式执行路由。交换(switching) 也是在网络中移动数据的过程。而交换机是一种设备,主要目的是实现局域网内设备之间的数据交换。之所以提到这一点,是因为还有许多其他类型的网络设备存在:接入点、防火墙、负载均衡器、第三层交换机、代理,甚至还有一些设备只存在于云中,比如虚拟交换机和虚拟路由器。

在下一篇中,我们将从实用视角为您分析OSI模型,帮你更好地了解所有这些设备是如何在互联网上完成数据传输的。

网络基础知识(一)

网络基础知识入门

虽然我们处在互联网时代,但并不是每个人都了解互联网上数据的传输模式。本篇我将带你一起探讨一下网络数据传输所需用的网络设备及其概念、以及它们各自负责的功能和它们之间是如何协同完成网络数据传输的。

(-)主机的概念解释

主机是用于发送或接收流量的任何设备。例如,你的台式电脑是一台主机,你的笔记本电脑、手机、打印机、服务器这些都是主机。云计算目前有着广阔的就业前景,这意味着许多与云计算相关的资源也会被视为主机,比如云服务器。此外,还有物联网的兴起,也意味着你周围任何可以发送或接收流量的东西都被将被视为主机,比如通过流式传输同步的智能电视的扬声器、智能手表以及可以远程控制的温度计等。所有这些可以发送和接收流量的设备都可以被视为主机。这一概念之所以重要,是因为所有这些设备在与互联网通信时都需遵循相同的规则。

主机通常分为两类:客户端或服务器。客户端是发起请求的主机,服务器是响应请求的主机。我们以www.xxx.com的网络服务器为例。当一台计算机请求访问某一网站时,它是发起请求的一方,因此被视为客户端;当响应方-网络服务器为请求方提供内容时,它是响应请求的一方,因此被视为服务器。

不过需要记住的一点是,“客户端”和“服务器”是相对于特定的通信而言的。比如说,当web服务器需要从文件服务器或数据库服务器那里更新文件时,web服务器必须向文件服务器发送更新文件的请求。在该通信过程中,web服务器就是客户端,而文件服务器就是服务器。再比如说,当这个文件服务器在某个时间段可能需要运行某种软件的更新时,那它就需要向更新服务器发出下载新软件的请求,在该通信过程中,文件服务器就是客户端,而更新服务器在更新请求返回到文件服务器时,扮演的角色就是服务器。

因此术语“客户端-服务器”只适用于正在发生的通信。虽然我们一直把响应web请求的一方称为web服务器,但你需要清楚地知道什么是服务器主机。服务器实际上是一台安装了软件的计算机,它知道如何响应特定的请求,知道如何提供网页服务。你只需安装适当的web服务器软件,就可以将任何设备变成web服务器。这同样适用于我们刚才讨论的文件服务器和更新服务器,其实它们只是知道如何提供文件或提供更新软件的计算机。我们遇到的每台服务器都只是一台响应请求的计算机。

(二) IP地址

IP地址是每个主机的标识,如果要在互联网上进行通信,每个主机都必须有一个IP地址。这就像你需要一个电话号码来拨打或接听电话,或者一个快递地址来发送和接收快递一样。在互联网世界,你需要一个IP地址才能在网络上发送或接收数据包。这就是IP地址的定义,它是每个主机的标识。实际上,这些IP地址会被标记在每个主机发送的所有内容上。例如,当这个客户端在这个包上向site.com发出web请求(其中包括什么网页)时,它要求客户端标记源IP地址和目标IP地址。源IP地址将是客户端的IP地址,目标IP地址将为服务器的IP地址。

同样地,当服务器提供网页信息作出响应时,也会标记源IP地址和目标IP地址,在这儿,源IP地址将是服务器的IP地址,而目标IP地址将为客户端的。在互联网上发送的所有东西都要有这个来源IP地址和目的地IP地址。

IP地址本身实际上只有32位,都是一些1或0这样的数字,这意味着每个IP地址实际上只是32个比特1和0的不同组合而已。我们所做的是把这32个比特分成四个组块,也就是八位字节,然后把每组八位字节转换成十进制数,这就是我们所知道的IP地址。从八位字节中我们可以得到的最小二进制数是0,最大二进制数是255。这就是为什么你遇到的每个IP地址都是介于数字0-255之间的四组不同组合。这就是IP地址的组成和规则。

(三)子网掩码的作用是什么?   

那么这些IP地址的用途是什么呢?通常情况下,我们会将这些IP地址根据公司体系结构进行分配。比如下图所示这是某公司在三个不同办事处的IP地址,且都是以10.开头的。这些不同分公司的每一个办公部门都会被分配到一个专属的IP地址及子网。纽约的所有办公室IP地址都是以10.20开始的,伦敦的则是以10.30开始的,东京的是以10.40开头的。

另外,纽约办事处会有几个不同的团队,例如,一个销售团队、一个工程团队和一个营销团队,且每个团队都会有自己的专用IP地址范围。销售团队的IP地址范围是以10. 20.55. 开头的,工程团队的是10.20.66.,营销团队的是10.20.77.。我们假设伦敦和东京办事处也有同样的团队,但两个办事处的IP地址范围都会按照其指定位置的前缀开头。这就允许我们通过IP地址来精确定位某个特定主机的存在位置。例如,如果我们的IP地址是10.30.50. ,那么这个IP地址就是该公司位于伦敦办事处的销售团队的某个主机IP。由此可以看出,将IP地址分解为不同的层次结构这一过程是通过IP子网地址来完成的,也就是我们常说的子网掩码。

(四) 网络是什么?怎样联网?

位于不同办事处的各个团队内部的所有主机都处于网络中。实际上网络主要负责主机之间的流量传输。最简单的形式是,当你将两个主机连接在一起时,就构成了一个最简单的网络。如果这些主机之间实现了互通相连那就形成了一个复杂庞大的网络。在最早建立互联网之前,为了实现数据在不同计算机之间的传输,我们必须借助一些外部的驱动设备来完成。但互联网和联网将这一过程自动化了,最终帮我们实现了计算机之间数据的自动传输与共享。

退一步来说,网络实际上只是有着相似连接的主机间的一种逻辑分组。比如,我们的家庭WIFI,它连接了你和家人的iPad、摄像头、打印机、笔记本电脑、手机等一堆设备,而这些设备都有类似的连接配置文件,你可以理解为它们只是需要通过互联网来查看电子邮件或资料等等。再比如,一家咖啡店,店内有提供无线网络连接,每天熙熙攘攘的客户带着不同的移动设备进进出出,他们的设备需要联网,而连接的模式也都相似。

当然网络内部也可以包含其他网络。除了以上我们所举的某家公司在不同办事处不同部门间设立的不同IP地址子网例子外,再比如学校的网络,不同的教室或教学楼的主机都会被分配到自己专属的网络中,也就是都有独属于自己的子网掩码。由此不难看出,实际上我们所知道的互联网只是一堆相互连接的网络。这就是互联网的全部,它只是一堆公司网络连接到一堆学校网络、连接到一群客户网络的集合。

本篇我们主要了解了什么是主机,什么是客户端和服务端,什么是IP地址什么是子网掩码,以及了解了什么是网络,以及它是需要类似连接的相关主机的逻辑分组。下篇我们将继续探讨什么是集线器,交换机,路由器等。