网络基础知识讲座之四理解数据链路层

2层是数据链路层,是以太网所在的层。在这一层我们将讨论网桥、交换和虚拟局域网,要让一个网络运行起来,你实际上不需要学习以太网内部的工作原理,当然,如果你愿意学习的话,你可以利用其它的时间学习这方面的知识。

  以太网交换机是一种“网桥”设备。传统的网桥是这样工作的,一开始它接收以太网帧,然后,把它们发送到除接收端口之外的全部其它端口。以太网交换机具允许允许双绞线连接的能力。它渐学习哪一个端口连接了哪 些MAC地址。这时候,网桥就变成了一台学习设备,能够存储在一个端口上看到的全部的MAC地址表。当一个帧需要发出时,网桥将查看在网桥表中的目标MAC地址,并且知道应该在哪一个端口发送这个帧。这种仅向正确的主机发送数据的能力是交换技术中的一个巨大的进步,因为这可能显著减少通信冲突。如果在网桥表中没有目标MAC地址,交换机就简单地把数据发送到全部端口。这是首次发现主机到底在什么地方的惟一方法,因此,正如你看到的那样,把数据发送到全部端口是交换技术中的一个重要原则。这个原则在路由中也非常必要。

  2层相关的重要词汇包括:

  单播分段(Unicast segmentation):网桥能够限制哪些主机能够收到单播帧(仅发送给一个MAC地址的帧)。集线器只是简单地把一切数据发送给所有的端口,因此,单播分段本身可以节省大量的带宽。

  冲突域(Collision Domain):冲突域是能够发生冲突的网段。由于交换机采用了直通发送技术以及网卡全部采用双工技术,冲突已经不再发生了。如果你在一个端口看到冲突,这就意味着有人意外地使用半双工的设备,或者是出现了其它的故障。

  广播域:发送和接收广播帧的网段。

  在交换机产品几年后,网桥运行所采用的老式的存储和发送方式改变了。新的交换机仅查看帧的目标MAC地址,然后立即把这个帧发送出去。这种技术称作“直通发送”可以帧更快地直接通过交换机,因为这种方式对帧很少进行处理。这种方式也暗示了一件重要的事情:一台交换机不再检查CRC(循环冗余校验)以便查看数据包是否损坏。这还暗示着不可能发生冲突。

  另外,为了解决广播网段的问题,我们引入了虚拟局域网技术。如果你不能向另一台机器发送广播帧,那些机器就不在你的本地网络中,你要把全部数据包发送给一台路由器,接着由路由器发送这些数据包。实际上,这就是虚拟局域网做的事情:虚拟局域网将网络划分为更多的子网。

  你可以在一台交换机上设置虚拟局域网,然后向一个虚拟局域网分配端口。如果主机A是虚拟局域网1,这台主机就不能与虚拟局域网2中的任何人通话,就像它们生活在完全没有网络连接的设备中一样。不过需要注意,这毕竟只是虚拟的,如果交换机的MAC地址表空间已经被数据填满从而无法继续维护这个交换MAC地址表,为了继续维持通讯交换机将会把收到的所有数据转发到所有端口。很多人将VLAN视为一种很好的安全措施,实际上任何一个半吊子黑客使用合适的工具都可以很快的攻克交换机的VLAN限制,事实上,当交换机出现MAC地址表溢出的情况时,它会变成一台单纯的HUB.

  正如我们已经知道的那样,如果你无法使用ARP协议获得目标的MAC地址,那你必须要使用一台路由器。这是不是意味着你必须在每个VLAN之间物理的连入一台路由器呢?不需要,因为我们现在拥有3层交换机!设想一个例子,如果你愿意,一台交换机可以配置48个端口。这台交换机有两个虚拟局域网,虚拟局域网1采用1至24端口,虚拟局域网2采用25至48端口。要把这两个虚拟局域网连接起来,你基本上有三种选择。第一,使用一台路由器分别连接这两个虚拟局域网中的一个端口,并且分为VLAN中的主机配置正确的默认路由。第二种方法是你还可以简单地在每个虚拟局域网中各自建立一个虚拟路由器接口(virtual interfaces)。在思科的设备,这种虚拟路由器接口可能称作“vlan1”和“vlan2”。它们拥有自己的IP地址,而VLAN中的主机使用这些虚拟路由器接口作为自己的路由器。

  在第三种方法使我们回到了2层概述的最终话题。如果你拥有多台需要包含同样的虚拟局域网的交换机,你可以通过端口汇聚(trunk)的方式它们都连接起来。这样,交换机A中的虚拟局域网1和交换机B中的虚拟局域网1就完全是一样的了。这是采用802.1q标准完成的。802.1q标准为将离开第一台交换机的数据包打上一个虚拟局域网的标识符。思科把这些交换机间的链路称作“主干端口(trunk ports)”,你可以拥有交换机允许的最多数量的虚拟局域网(目前大多数硬件允许4096个虚拟局域网)。因此,在虚拟局域网之间建立联系的第三种方法(也是最后一种方法)是把以trunk方式连接一台路由器,并且为每一个虚拟局域网建立一个虚拟路由器接口。虚拟局域网1上的主机(无论是在交换机A和交换机B上)都能够访问这个路由器接口(这个接口可以在另一台设备上),因为他们全部都连接在了一起,并且共享一个广播域。关于trunk与802.1q的更多信息请参见这篇文章。

  在这里我们没有采用“这是2层协议,记住以太网数据包头”这种标准的教学模式。要成为一个真正的专家,你必须要知道这些知识。但是,要成为一个有用的操作人员,简单地知道2层是如何工作的就可以了。下一讲我们将介绍网络领域最有趣的协议生成树协议。

  小结:

  ●网桥(又名交换机)存储MAC地址表以实现单播网段功能。也就是说它们仅向需要这个数据的主机发送单播数据。

  ●虚拟局域网并不能提供可靠的安全。

  ●一台3层交换机能够通过trunk提供多个虚拟局域网,并且为这些虚拟局域网提供路由。这可以完全在同一条线路上实现。

文章录入:csh    责任编辑:csh

(0)

相关推荐

  • 网络基础知识讲座之四理解数据链路层

    2层是数据链路层,是以太网所在的层.在这一层我们将讨论网桥.交换和虚拟局域网,要让一个网络运行起来,你实际上不需要学习以太网内部的工作原理,当然,如果你愿意学习的话,你可以利用其它的时间学习这方面的知识. 以太网交换机是一种"网桥"设备.传统的网桥是这样工作的,一开始它接收以太网帧,然后,把它们发送到除接收端口之外的全部其它端口.以太网交换机具允许允许双绞线连接的能力.它渐学习哪一个端口连接了哪 些MAC地址.这时候,网桥就变成了一台学习设备,能够存储在一个端口上看到的全部的MAC地址

  • java网络编程基础知识介绍

    网络基础知识 1.OSI分层模型和TCP/IP分层模型的对应关系 这里对于7层模型不展开来讲,只选择跟这次系列主题相关的知识点介绍. 2.七层模型与协议的对应关系 网络层 ------------ IP(网络之间的互联协议) 传输层 ------------ TCP(传输控制协议).UDP(用户数据报协议) 应用层 ------------ Telnet(Internet远程登录服务的标准协议和主要方式).FTP(文本传输协议).HTTP(超文本传送协议) 3.IP地址和端口号 1.ip地址用于

  • 网络基础-数据包

    目录 前言 数据包简要生命周期 理解区 数据包 前言 本笔记通过记录 数据包 在网络中的生命履历来引出一些网络基础知识,如: MAC.ARP.IP.子网掩码.网关.集线器.交换机.路由器这些概念都是在链路层和网络层. (这些都不做严谨的说明,只是为了更好的了解而表达的个人描述) 数据包简要生命周期 浏览本小节的时候遇到疑问点可以可以跳到理解区 check 一下有没有答案. 数据包: 简单路径:源主机 -> 目标主机.可能路径:源主机 -> 交换机A -> 路由器A -> 路由器B

  • Java 网络爬虫基础知识入门解析

    前言 说起网络爬虫,大家想起的估计都是 Python ,诚然爬虫已经是 Python 的代名词之一,相比 Java 来说就要逊色不少.有不少人都不知道 Java 可以做网络爬虫,其实 Java 也能做网络爬虫而且还能做的非常好,在开源社区中有不少优秀的 Java 网络爬虫框架,例如 webmagic .我的第一份正式工作就是使用 webmagic 编写数据采集程序,当时参与了一个舆情分析系统的开发,这里面涉及到了大量网站的新闻采集,我们就使用了 webmagic 进行采集程序的编写,由于当时不知

  • 盘点网络编程必须要知道的基础知识

    在Java编程开发中,网络通信的开发是很重要的一部分,它是两台或多台计算机进行网络的基础,网络程序编写的目的也就是为了与其他计算机之间进行网络通信,所以今天大灰狼就来和大家分享一下Java网络通信中要的知道的一些知识. 其实在Java的发展过程中,为了更加方便的进行网络通信,开发者逐渐的将网络编程中所需要的一些内容封装成了不同的类,用户在进行网络编程时,只需要创建相应类的对象,并且调用相应的方法即可. 首先我们来了解一下网络的通信结构. 局域网和因特网 在网络通信中,两台计算机的信息传输可以使用

  • Cisco路由技术基础知识详解之一

    Cisco路由技术基础知识详解 路由器 <一> 最简单的网络可以想象成单线的总线,各个计算机可以通过向总线发送分组以互相通信.但随着网络中的计算机数目增长,这就很不可行了,会产 生许多问题: 1.带宽资源耗尽.     2.每台计算机都浪费许多时间处理无关的广播数据.     3.网络变得无法管理,任何错误都可能导致整个网络瘫痪.     4.每台计算机都可以监听到其他计算机的通信. 把网络分段可以解决这些问题,但同时你必须提供一种机制使不同网段的计算机可以互相通信,这通常涉及到在一些ISO网

  • Cisco路由技术基础知识详解

    Cisco路由技术基础知识详解 路由器 <一> 最简单的网络可以想象成单线的总线,各个计算机可以通过向总线发送分组以互相通信.但随着网络中的计算机数目增长,这就很不可行了,会产 生许多问题: 1.带宽资源耗尽.     2.每台计算机都浪费许多时间处理无关的广播数据.     3.网络变得无法管理,任何错误都可能导致整个网络瘫痪.     4.每台计算机都可以监听到其他计算机的通信. 把网络分段可以解决这些问题,但同时你必须提供一种机制使不同网段的计算机可以互相通信,这通常涉及到在一些ISO网

  • 网络基础学习之十九路由器的硬件连接

    在了解了路由器的基础知识后,从本篇开始就要正式介入路由器的使用了.本篇所要介绍的就是使用前的基础工作--路由器的硬件连接. 因为路由器属于一种用于网络之间互联的高档网络接入设备,因其连接的网络可能多种多样,所以其接口类型也就比较多.为此,在正式介绍路由器的连接方法之前我们有必要对路由器的一些基本接口进行认识. 一.路由器接口 路由器具有非常强大的网络连接和路由功能,它可以与各种各样的不同网络进行物理连接,这就决定了路由器的接口技术非常复杂,越是高档的路由器其接口种类也就越多.路由器既可以对不同局

  • Google关键词广告基础知识问答

    1.google关键词广告是什么?  答:google官方对这个广告的英文描述叫adwords,它是显示在搜索结果页面右侧的网站链接广告.它是属于CPC(cost-per-click)收费--按点击次数收费的网络广告类型. 2.google关键词广告和搜索结果页面左侧网站排名是否有关系?  答:没有任何关系,搜索结果页面左侧网站排名是完全按照google自身的算法而的出来的,无法进行人工干预的(当然,可以利用它的算法的规则来提高网站排名,这部分内容不在本文讨论范围之类):而关键词广告是人工添加的

  • Java基础知识杂文

    1.基本概念 IO是主存和外部设备(硬盘.终端和网络等)拷贝数据的过程.IO是操作系统的底层功能实现,底层通过I/O指令进行完成. 所有语言运行时系统提供执行I/O较高级别的工具.(c的printfscanf,java的面向对象封装) 2.Java标准io回顾 Java标准IO类库是io面向对象的一种抽象.基于本地方法的底层实现,我们无须关注底层实现.InputStream\OutputStream(字节流):一次传送一个字节.Reader\Writer(字符流):一次一个字符. 3.nio简介

随机推荐