云计算相关技术简介(二)-OSI网络模型

本篇文章主要介绍云计算环境中的相关的网络技术,主要面向openstack network(neutron)组件,其提供了网络服务API,实现了一个Software Defined Network(SDN)的解决方案。本篇介绍网络技术中的基础概念和知识。

1、Ethernet,以太网。以太网是一种计算机局域网技术。IEEE组织的IEEE 802.3标准制定了以太网的技术标准,它规定了包括物理层的连线、电子信号和介质访问层协议的内容。以太网是应用最普遍的局域网技术,取代了其他局域网技术如令牌环、FDDI和ARCNET。在OSI(Open System Interconnect)模型中,以太网协议为第二层,也就是数据链路层(data link layer),在数据链路层,主机之间通过交换frames(数据帧)进行通信,每个主机在局域网中由一个唯一的物理地址标记media access control(MAC) address。在openstack中,每一个虚拟机器的实例都由一个唯一的mac地址,这个mac地址和宿主机的mac地址不同。mac地址是一个48位的信息,通常用十六进制进行标识,比如08:00:27:b9:88:74。一般的mac地址是硬编码到网卡(Ethernet network interface card ( NIC ))中去的,不过现代的NIC允许通过程序去更改mac地址。在linux中可以通过ip命令查看网卡信息。在局域网内部,每一个主机都可以直接发送帧信息到其他的主机,局域网也可以支持广播,也就是一台主机可以发送帧信息给在网络上的每一台主机(通过特殊的目标地址ff:ff:ff:ff:ff:ff),ARP和DHCP就是利用了局域网广播技术的两个很有名的协议,局域网支持广播,有时候局域网也被称为broadcast domain. 当一个NIC接收到一帧数据时,一般NIC会check帧的目标地址是否位NIC的mac或是广播地址,但是在云计算环境中,frame的目标地址也可能是计算实例的,因此网卡也可以设置promiscuous mode,不过滤帧数据,直接将所有的帧数据传给上层的操作系统。现代的局域网用交换机去实现网络主机之间的互联,网络交换机,是一个扩大网络的器材,能为子网络中提供更多的连接端口,以便连接更多的计算机。

2、VLAN,虚拟局域网,VLAN是建立在物理网络基础上的一种逻辑子网,因此建立VLAN需要相应的支持VLAN技术的网络设备。当网络中的不同VLAN间进行相互通信时,可以采用路由的支持,这时就需要增加路由设备——要实现路由功能,既可采用路由器,也可采用三层交换机来完成。openstack可以利用vlan技术隔离不同项目的网络交通(traffic),通过一个物理的switch,可以实现三个隔离的网络(三个vlan)。一个虚拟局域网中的站点所发送的广播数据包将仅转发至属于同一VLAN的站点。

3、子网和ARP,IP协议中的IP地址一般分为两个部分,网络号(network number)和主机标识(host identifier),两个主机如果具有相同的网络号,则他们属于同一个子网。ARP假设所有在同一个子网的机器在同一个局域网内,网络管理员在分配IP地址和掩码的时候需要注意这一点,否则ARP可能不能正常工作。 子网掩码有两种表示方式,如IP地址192.168.1.5,前24位位网络号,再网络掩码为255.255.255.0,或可以一起写为192.168.1.5/24。当第一次host a尝试和host b进行通信时,不知道目标的mac地址位置,host A就需要发送一个ARP请求广播到局域网,然后host B接收到这个信息之后知道是要相互通信(ip地址为host b的地址),就将自己的mac地址发给了a。然后a和b就可以直接发送帧信息了。

4、DHCP,Dynamic Host Configuration Protocol (DHCP) 可以动态获取IP地址,一个DHCP服务器将IP地址分发给网络主机(也可称为DHCP clients),一般过程为:(1)客户端(DHCP Client)发送获取IP请求,广播一个udp请求,(2)DHCP server发送一个可用的ip地址信息给client,(3)client发送一个request给server,同意这个ip,(4)server发送一个信息给client,同意这个分配。

5、IP,IP协议定义了怎样去将数据报文通过路由达到不同的局域网的主机上。IP协议依赖于特定的网络主机,称为路由或网关。路由是一个主机连接至少两个局域网络,能够将数据报文从一个局域网前向发送到另一个局域网,一个路由器有多个ip地址,每个ip地址属于一个局域网。

6、TCP/UDP/ICMP,建立在IP层之上的传输层协议,TCP为面向连接的协议,路由只在连接建立的时候,后续为有序传输;UDP为非连接的协议,每个UDP报文相互独立路由,上层的应用可以依靠相关的报文字段在应用层上进行组装。

还有上层的诸多应用协议,如HTTP,FTP,HTTPS等,都是在IP层之上建立的应用层协议,如有必要,可以根据自己应用的特点自行设计网络应用协议。

OSI model是计算机网络技术的重点内容,也是计算机通信技术核心和关键,是计算机网络技术的基石,在有设计网络通信的软件开发中,我们一般会用到抽象的软件开发库进行开发,如基于套接字(socket)的开发,有系统提供原生的socket编程接口,以及一些优化了开发过程的网络开发库,如python的twisted,c++ boost的asio库等等。

互联网七层或五层协议设计精巧,好比剥洋葱一样,下一层会在上一层的基础上添加一定的关于特定层信息的报文头,通过每个层的不同的抽象功能,使得计算机通信从少量的文本,到大量的流媒体带宽需求都会显得游刃有余。而且基于端口的协议实际上也借鉴了现实世界中的港口的概念,数据传输好比货物运输,计算机的不同端口就实现了每个任务独立的通信。因此可以说计算机网络技术是单个计算机的精兵强将变成声势浩大的百万大军的有利武器,是计算机技术中的最伟大发明之一。更多的网络协议细节会后续在计算机网络课程中详细介绍。