1、前言
说来惭愧,我是学软件出生的,误打误撞去了一家搞网络设备的公司。本来对网络不熟悉,只知道一些基础的知识。虽然在公司主要是搞应用层开发,但是毕竟是网络公司,不懂网络肯定是不行的。为此要很下心来学习一些网络知识,从最基本的开始。网络设备最重要的是对报文转发和控制。高性能搞并发的转发报文需要很强的技术。目前炒的比较火的sdn(软件定义网络),将网络转发和控制分开,移到应用层。技术很先进,容易跟踪定位问他。例如intel的开发的dpdk,目前已经被很多公司采用。今天从简单的二层口和三层口学习起。
2、计算机网络
学过计算机网络的人都知道,网络是分层次的。执行流程与邮局非常类似。例如从省寄信到某个乡村,邮局顺序一次是省邮局、市邮局、县邮局、镇邮局。一级一级的,最终送到乡村。iso给出网络标准是七层,而实际网络则是四层,即物理层、数据链路层、网络层、应用层。传统的网络设备通常工作在数据链路层和网络层,例如交换机、路由器。而目前有些网络控制设备则工作在应用层,这种设备用于对应用层的报文进行分析,进行应用识别和审计。
3、二层设备和三层设备
二层设备是工作数据链路层的设备。二层交换机可以识别数据包中的MAC地址信息,根据MAC地址进行转发,并将这些MAC地址与对应的端口记录在自己内部的一个地址表中。具体的工作流程如下:
(1) 当交换机从某个端口收到一个数据包,它先读取包头中的源MAC地址,这样它就知道源MAC地址的机器是连在哪个端口上的;
(2) 再去读取包头中的目的MAC地址,并在地址表中查找相应的端口;
(3) 如表中有与这目的MAC地址对应的端口,把数据包直接复制到这端口上;
(4) 如表中找不到相应的端口则把数据包广播到所有端口上,当目的机器对源机器回应时,交换机又可以学习一目的MAC地址与哪个端口对应,在下次传送数据时就不再需要对所有端口进行广播了。
不断的循环这个过程,对于全网的MAC地址信息都可以学习到,二层交换机就是这样建立和维护它自己的地址表。
三层设备是工作在网络层的设备。路由器是最常用的三层设备,利用不同网络的ID号(即IP地址)来确定数据转发的地址。IP地址是在软件中实现的,描述的是设备所在的网络,有时这些第三层的地址也称为协议地址或者网络地址。