网络分层体系
主流的理论体系中主要包含三种网络分层模型,即ISO的七层网络模型、TCP/IP的四层网络模型以及结合两种模型优点的五层网络模型,关于网络模型,主要起到对网络体系的一个整体认识,作为网络知识学习的开始,这也是各大教材、书籍一上来就讲解分层模型的原因。自顶向下、自底向上说的就是从底层到顶层还是从顶层到底层的学习顺序区别。
-
ISO七层网络模型
- 自顶向下分别是
应用层
、表示层
、会话层
、传输层
、网络层
、链路层
、物理层
- 自顶向下分别是
-
TCP/IP四层网络模型
- 自顶向下分别是
应用层
、传输层
、网络层
、网络接口层
,对应的将ISO模型中的表示层和会话层统一归结到应用层,链路层和物理层归结到网络接口层,更加抽象和简洁。
- 自顶向下分别是
-
五层网络模型
- 自定向下分别是
应用层
、传输层
、网络层
、链路层
、物理层
,五层模型是结合ISO、TCP/IP模型的折中定义,顺延了TCP/IP模型中对应用层的定义,保留了ISO对于链路层、物理层的区分;解决了TCP/IP四层模型中物理层面细节的缺失以及ISO模型中应用层面过于臃肿的缺点,五层模型也是最佳的学习路线
- 自定向下分别是
应用层
应用层主要面向的是计算机用户,更多的是软件编程人员,该层拥有最为完善的封装。ISO中的表示层、会话层主要也是对数据处理、连接的封装,辅助用户通过应用层协议完成在网络中的活动,在网络分层定义中都属于应用层面。表示层主要用于处理数据,对数据的压缩、安全、格式转换等;会话层建立、管理不同机器上的会话,对应主机的进程层面,指本地主机与远程主机的连接会话,代表有SSL、TLS。
- 该层关键点是应用协议,主要学习的内容也是具体协议的细节,常见的应用层协议有:HTTP、HTTPS、FTP、DNS等
- 从数据流视角来看,该层作为最高抽象存在,建立的是不同主机间应用与应用之间的通信
- 从数据角度来看,该层的数据为基于应用协议的报文数据
传输层
主要用于定义传输数据的协议端口号,以及传输的流控和差错校验,接受应用层的应用数据,对数据进行切割,分包,并将数据传递给网络层,同时负责数据是否有效到达对应端,原则上数据包一旦离开网卡,即代表进入传输层。
- 该层对应的协议主要为传输层协议,即TCP和UDP
- 从数据流视角,该层对应的是主机上的端口(即根据IP确定主机后,通过端口确定通信进程),建立的是不同主机上端口与端口之间的通信
- 从数据视角来看,数据在该层称之为数据报文
网络层
进行逻辑地址的寻址,实现不同网络间的路径选择,在网络中进行具体的数据传递;控制网络划分、子网运作;在计算机网络中进行通信的两个计算机之间可能会经过很多个数据链路,也可能还要经过很多通信子网,网络层的任务就是选择合适的网间路由和交换结点,确保数据及时传送。
- 该层对应的协议为网络层协议,主要有IP、ICMP(互联网控制信息协议) IGMP(组管理协议)
- 从数据流视角,该层对应的是主机的IP地址,即具体的主机,建立的是主机与主机之间的通信
- 从数据视角来看,数据在该层称之为数据包
链路层
在物理层提供比特流服务的基础上,建立相邻结点之间的数据链路,通过差错控制提供数据帧(Frame)在信道上无差错的传输,并进行各电路上的动作系列。数据链路层在不可靠的物理介质上提供可靠的传输。该层的作用包括:物理地址寻址、数据的成帧、流量控制、数据的检错、重发等。
- 从数据流视角,该层主要是负责节点与节点间具体的通信,是物理层基础之上的数据稳定传输
- 从数据视角来看,数据在该层称之为帧
物理层
构建网络视角的具体实物,规定的通信设备的功能与过程特征,负责物理学层面的信息传递
- 从数据视角来看,数据在该层称之为比特
网络数据通信模型
从数据角度来看,网络的传输,数据报文是由上向下逐层包装,最终通过物理层面进行传递。在应用层面主要为操作数据加应用层协议头部,传递至传输层,加装传输层协议,以此类推,逐层加装,最终变为帧,再通过物理层的传输媒介以比特的形式进行传输。
各层中物理设备及概念
在学习网络和实际操作过程中,很容易出现概念和设备对不上,经常一脸问号,比如,我们可能会听到一些网络工程师把路由器叫做网关,把交换机(三层)叫做路由,其实物理设备与我们术语中常说的一些概念是有层级关系的。
将网络互相连接起来要使用一些中间设备(或中间系统),ISO的术语称之为·中继(relay)系统
。根据中继系统所在的层次,可以有以下五种中继系统:
- 物理层(即常说的第一层、层L1)中继系统,即
转发器
(repeater)。 - 数据链路层(即第二层,层L2),即
网桥
或桥接器
(bridge)。 - 网络层(第三层,层L3)中继系统,即
路由器
(router)。 - 网桥和路由器的混合物
桥路器
(brouter)兼有网桥和路由器的功能。 - 在网络层以上的中继系统,即
网关
(gateway)。
以上标明的是纯理论层面的概念划分,并不等价于实际的物理设备(因为有很多词语与实际的物理设备或系统配置重名,导致混乱)
集线器
集线器的主要功能是对接收到的信号进行再生整形放大,以扩大网络的传输距离,同时把所有节点集中在以它为中心的节点上。集线器每个接口简单的收发比特,收到1就转发1,收到0就转发0,不进行碰撞检 测。集线器属于纯硬件网络底层设备,基本上不具有类似于交换机的"智能记忆"能力和"学习"能力。它也不具备交换机所具有的MAC地址表,所以它发送数据 时都是没有针对性的,而是采用广播方式发送。也就是说当它要向某节点发送数据时,不是直接把数据发送到目的节点,而是把数据包发送到与集线器相连的所有节点。
交换机
交换机拥有一条很高带宽的内部总线和内部交换矩阵。交换机的所有的端口都挂接在这条总线上,控制电路收到数据包以后,处理端口会查找内存中的地址对照表以确定目的MAC(网卡的硬件地址)的NIC(网卡)挂接在哪个端口上,通过内部交换矩阵迅速将数据包传送到目的端口,目的MAC若不存在则广播到所有的端口,接收端口回应后交换机会“学习”新的地址,并把它添加入内部MAC地址表中。
交换机是一种基于MAC地址识别,能完成封装转发数据包功能的网络设备。交换机可以"学习"MAC地址,并把其存放在内部地址表中,通过在数据帧的始发者和目标接收者之间建立临时的交换路径,使数据帧直接由源地址到达目的地址。
二层交换机(交换机)
是根据第二层数据链路层的MAC地址和通过站表选择路由来完成端到端的数据交换的。 二层交换机的数据传输流程:
(1) 当交换机从某个端口收到一个数据包,它先读取帧头中的源MAC地址,并将MAC地址与源端口做对应存储在站表中。
(2) 再去读取帧头中的目的MAC地址,并在地址表中查找相应的端口;
(3) 如表中有与这目的MAC地址对应的端口,把数据包直接复制到这端口上;
(4) 如表中找不到相应的端口则把数据包广播到同一VLAN下的所有端口,当目的机器对源机器回应时,交换机又可以学习一目的MAC地址与哪个端口对应,在下次传送数据时就不再需要对所有端口进行广播了。 不断的循环以上过程,对于全网的MAC地址信息都可以学习到,二层交换机就是这样建立和维护它自己的地址表。
因为站表的建立与维护是由交换机自动完成,而路由器又是属于第三层设备,其寻址过程是根据IP地址寻址和通过路由表与路由协议产生的。所以,第二层交换机的最大好处是数据传输速度快,因为它只须识别数据帧中的MAC地址,而直接根据MAC地址产生选择转发端口的算法又十分简单,非常便于采用ASIC专用芯片实现。显然,第二层交换机的解决方案,实际上是一个“处处交换”的廉价方案,虽然该方案也能划分子网、限制广播、建立VLAN,但它的控制能力较小、灵活性不够,也无法控制各信息点的流量,缺乏方便实用的路由功能。
三层交换机
是直接根据第三层网络层IP地址来完成端到端的数据交换的,具备路由器的功能。 三层交换机的数据传输:
(1)A设备通过三层交换机访问B设备
(2)已知B设备的IP,那么A就用子网掩码取得网络地址,判断目的IP是否与自己在同一网段,若在同一网络,但不知道转发数据所需的MAC地址,A就发送一个ARP请求,B返回其MAC地址,A用此MAC封装数据包并发送给交换机,交换机起用二层交换模块,查找MAC地址表,将数据包转发到相应的端口。
(3)如果B设备的IP地址显示不是同一网段的,那么A要实现和B的通讯,在流缓存条目中没有对应MAC地址条目,就将第一个正常数据包发送向一个缺省网关,这个缺省网关一般在操作系统中已经设好,对应第三层路由模块,所以对于不是同一子网的数据,最先在MAC表中放的是缺省网关的MAC地址;然后就由三层模块接收到此数据包,查询路由表以确定到达B的路由,将构造一个新的帧头,其中以缺省网关的MAC地址为源MAC地址,以主机B的MAC地址为目的MAC地址。通过一定的识别触发机制,确立主机A与B的MAC地址及转发端口的对应关系,并记录进流缓存条目表,以后的A到B的数据,就直接交由二层交换模块完成。这就通常所说的一次路由多次转发。 综上,第三层交换机是第二层交换器与路由器的二而一设备
四层交换机
四层交换机是基于传输层数据包的交换过程的,是一类基于TCP/IP协议应用层的用户应用交换需求的新型局域网交换机。 第四层交换机支持TCP/UDP第四层以下的所有协议,可识别至少80个字节的数据包包头长度,可根据TCP/UDP端口号来区分数据包的应用类型,从而实现应用层的访问控制和服务质量保证。所以,与其说第四层交换机是硬件网络设备,还不如说它是软件网络管理系统。也就是说,第四层交换机是一类以软件技术为主,以硬件技术为辅的网络管理交换设备。
路由器
路由器工作于OSI七层协议中的第三层,其主要任务是接收来自一个网络接口的数据包,根据其中所含的目的地址,决定转发到下一个目的地址。因此,路由器首先得在转发路由表中查找它的目的地址,若找到了目的地址,就在数据包的帧格前添加下一个MAC地址,同时IP数据包头的TTL(Time To Live)域也开始减数,并重新计算校验和。当数据包被送到输出端口时,它需要按顺序等待,以便被传送到输出链路上。
路由器在工作时能够按照某种路由通信协议查找设备中的路由表。如果到某一特定节点有一条以上的路径,则基本预先确定的路由准则是选择最优(或最经济)的传输路径。由于各种网络段和其相互连接情况可能会因环境变化而变化,因此路由情况的信息一般也按所使用的路由信息协议的规定而定时更新。
网络中,每个路由器的基本功能都是按照一定的规则来动态地更新它所保持的路由表,以便保持路由信息的有效性。为了便于在网络间传送报文,路由器总是先按照预定的规则把较大的数据分解成适当大小的数据包,再将这些数据包分别通过相同或不同路径发送出去。当这些数据包按先后秩序到达目的地后,再把分解的数据包按照一定顺序包装成原有的报文形式。路由器的分层寻址功能是路由器的重要功能之一,该功能可以帮助具有很多节点站的网络来存储寻址信息,同时还能在网络间截获发送到远地网段的报文,起转发作用;选择最合理的路由,引导通信也是路由器基本功能;多协议路由器还可以连接使用不同通信协议的网络段,成为不同通信协议网络段之间的通信平台。
一般来说,路由器的主要工作是对数据包进行存储转发,具体过程如下:
第一步:当数据包到达路由器,根据网络物理接口的类型,路由器调用相应的链路层功能模块,以解释处理此数据包的链路层协议报头。这一步处理比较简单,主要是对数据的完整性进行验证,如CRC校验、帧长度检查等。
第二步:在链路层完成对数据帧的完整性验证后,路由器开始处理此数据帧的IP层。这一过程是路由器功能的核心。根据数据帧中IP包头的目的IP地址,路由器在路由表中查找下一跳的IP地址;同时,IP数据包头的TTL(Time To Live)域开始减数,并重新计算校验和(Checksum)。
第三步:根据路由表中所查到的下一跳IP地址,将IP数据包送往相应的输出链路层,被封装上相应的链路层包头,最后经输出网络物理接口发送出去。
简单地说,路由器的主要工作就是为经过路由器的每个数据包寻找一条最佳传输路径,并将该数据包有效地传送到目的站点。由此可见,选择最佳路径策略或叫选择最佳路由算法是路由器的关键所在。为了完成这项工作,在路由器中保存着各种传输路径的相关数据——路由表(Routing Table),供路由选择时使用。上述过程描述了路由器的主要而且关键的工作过程,但没有说明其它附加性能,例如访问控制、网络地址转换、排队优先级等。
ARP全称 地址解析协议在局域网内信息是以帧传输的。要记住地址就要有一个ARP缓存表,保存的就是当前局域网内与你连接的机器的IP和MAC的地址。ARP—a就可以查看到这个表。第一个是IP。第二个是网卡地址。第三个是连接类型。
网关
网关分很多的类型:传输网关、应用网关、协议网关等等,我们经常说的网关是指的传输网关,简称网关。那么网关到底是什么呢?网关实质上是一个网络通向其他网络的IP地址。比如有网络A和网络B,网络A的IP地址范围为 “192.168.1.1192. 168.1.254”,子网掩码为255.255.255.0;网络B的IP地址范围为“192.168.2.1192.168.2.254”,子网掩码为255.255.255.0。在没有路由器的情况下,两个网络之间是不能进行TCP/IP通信的,即使是两个网络连接在同一台交换机(或集线器)上, TCP/IP协议也会根据子网掩码(255.255.255.0)判定两个网络中的主机处在不同的网络里。而要实现这两个网络之间的通信,则必须通过网关。网关的配置可在具有路由功能的设备上(路由器、三层及以上交换机)
如果网络A中的主机发现数据包的目的主机不在本地网络中,就把数据包转发给它自己的网关,再由网关转发给网络B的网关,网络B的网关再转发给网络B的某个主机。网络B向网络A转发数据包的过程也是如此。