网络那些事情(一)(网络传输,交换机,VLAN,Trunck):


网络设备:

网  桥:工作在数据链路层,在不同或相同类型的LAN之间存储并转发数据帧,必要时进行链路层上的协议转换。可连接两个或多个网络,在其中传送信息包。
交换机:工作在数据链路层,原理等同于多端口网桥。作用是连接数个相同网段的不同主机,减少网内冲突,隔离冲突域。利用存储转发和过滤技术来从物理上分割网段。
路由器:工作在网络层,在不同的网络间存储并转发分组。
可在异种网络之间(即不同类型的局域网互连,局域网与广域网,广域网与广域网)传输数据并进行路径选择,使用专门的软件协议从逻辑上对整个网络进行划分。
网 关:对高层协议(包括传输层及更高层次)进行转换的网间连接器。
允许使用不兼容的协议,比如SPX
/IPX和TCP/IP的系统和网络互连。因为协议转换是网关最重要的功能,所以答案是工作在传输层及以上层次。
网 卡:在物理层上网卡主要是完成物理接口的连接,电信号的传送以及将数据分解为适当大小的数据包之后向网络上发送的功能.
数据链路层功能包括链路建立和拆除,帧定界同步顺序差错控制这些。大多认为主要工作在物理层。 当然,很多设备在概念上变得越来越模糊。如桥接路由器是网桥和路由器的组合,允许多重连接,对某一种协议具有专用路由选择方法,对其他协议只充当网桥的作用。

 简介目录:

网络传输
交换机
VLAN与Trunk
路由(上)
路由(下)
链路聚合
IP地址与子网
NAT原理与配置
ICMP与ARP
TCP滑动窗口
TCP重传
TCP确认机制
TCP窗口调整与流控
Wireshark抓包实例诊断TCP连接问题 (精)
Wireshark抓包实例诊断TCP重传 (精)
Wireshark抓包实例诊断TCP重复ACK与乱序 (精)
Wireshark抓包实例诊断TCP窗口与reset (精)
Wireshark抓包实例诊断HTTP问题 (精)
Wireshark抓包实例诊断数据库问题  
HTTP(上)
HTTP(下)
DNS(上) (NEW)
细说Linux网络配置(上)
细说Linux网络配置(下)
常用诊断工具:ping
网络性能监测与实例(上)
网络性能监测与实例(下)
tcpdump的妙用  (上)
tcpdump的妙用(下)

一. 网络传输

网络服务器向客户端传送数据的过程:

1.     需要传送的数据是网络服务器的HTML页面。
2.     应用协议HTTP报文头添加到HTML数据之前。报文头信息包括:服务器所使用的HTTP版本,以及表明它包含发给网络客户端信息的状态编码。
3.     HTTP应用层协议将HTML格式的网页数据发送给传输层。TCP传输层用于管理网络服务器和客户端之间的会话。 4.     IP信息添加到TCP信息之前。IP指定适当的源和目的IP地址。这些信息就构成了IP报文。
5. 以太网协议添加到IP报文的两端之后,就形成了数据链路帧。
上述帧发送至通向网络客户端的路径上的最近一个路由器。
路由器移除以太网信息,观察IP报文,判定最佳路径,将报文插入一个新的帧,并发送至目标路径上下一个相邻路由器。
每一个路由器在转发之前都移除并添加新的数据链路层信息。
6. 数据通过互联网络传输,互联网络包含媒介和中间设备。 7. 客户端接收到包含数据的数据链路帧,处理各层协议头,之后以添加时相反的顺序移除协议头。
首先处理并移除以太网信息,之后是IP协议信息,接下来TCP信息,最后是HTTP信息。
8. 之后,将网页信息传递给客户端网页浏览器软件。

数据封装:

消息要在网络中传输,必须对它进行编码,以特定的格式进行封装,同时需要适当地封装以足够的控制和地址信息,以使它能够从发送方移动到接收方。

消息大小:

理论上,视频或邮件信息是能够以大块非中断型流从网络源地址传送到目的地址,但这也意味着同一时刻同一网络其他设备就无法收发消息。
这种大型数据流会造成显著延时。并且,如果传输过程中连接断开,整个数据流都会丢失需要全部重传。

因此更好的方法是将数据流分割segmentation)为较小的,便于管理的片段,能够带来两点好处:

1.发送较小片段,网络上同时可有多个会话交错进行。这种在网络上将不同会话片段交错进行的过程称为多路传输(multiplexing)。
2.分割可提高网络通讯的可靠性。各消息片段从源地址到目的地址无需经过相同路径,如果一条路径被堵塞或断开,其余消息可从替换路径到达目的地址。
如果部分消息到不了目的地址,那只需重传丢失部分。

协议数据单元(Protocol Data Unit, PDU

数据片段在各层网络结构中采用的形式就称为协议数据单元(PDU)。
应用层数据在传输过程中沿着协议栈传递,每一层协议都会向其中添加信息。这就是封装的过程。

封装过程中,下一层对从上一层收到的PDU进行封装。在处理的每一个阶段PDU都有不同的名字来反应它的功能。

PDU按照TCP/IP协议的命名规范:

数据(Data):应用层PDU的常用术语
分段(Segment):传输层PDU
帧(Frame):网络层PDU
比特(Bits):在介质上物理传输数据所使用的PDU。

 封装

以网络服务器为例:
1.应用层数据HTML格式网页数据到传输层,被分成TCP分段。各TCP分段被打上标签,称为头(header),表明接收方哪一个进程应当接收此消息。 
2.传输层将网页HTML数据封装成分段并发送至网络层,执行IP层协议。整个TCP分段封装成IP报文,也就是再添上IP头标签。(IP头包括源和目的IP地址,以及目的地址所必须的信息)。
3.IP报文发送到接入层,封装以帧头和帧尾。每个帧头都包含源和目的物理地址。(物理地址唯一指定了本地网络上的设备。帧尾包含差错校正信息。由服务器网卡将比特编码传输给介质)。   

访问本地资源:

访问本地网络资源需要两种类型的地址:网络层地址和数据链路层地址。
网络层和数据链路层负责将数据从发送设备传输至接收设备。
两层协议都有源和目的地址,但两种地址的目的不同。

 网络地址:

网络层地址或IP地址包含两个部分:网络前缀和主机。

同一本地网络中,网络前缀部分是相同的,只有主机设备地址部分不同。

源IP地址  :发送设备:192.168.1.110
目的IP地址:接收设备:192.168.1.9

数据链路地址:

数据链路地址的目的是在同一网络中将数据链路帧从一个网络接口发送至另一个网络接口。

以太网LAN和无线网LAN是两种不同物理介质的网络示例,分别有自己的数据链路协议。

MAC与IP地址

发送方必须知道接收方的物理和逻辑地址。

发送方主机得到接收方的IP地址:比如域名系统(Domain Name System, DNS),或通过应用手动输入,如用户指定地址。

以太网MAC地址是怎么识别的呢?

发送方主机使用地址解析协议(Address Resolution Protocol, ARP)以检测本地网络的所有MAC地址。

发送主机在整个LAN发送ARP请求消息,这是一条广播消息。

ARP请求包含目标设备的IP地址,LAN上的每一个设备都会检查该ARP请求,看看是否包含它自身的IP地址。

只有符合该IP地址的设备才会发送ARP响应。ARP响应包含ARP请求中IP地址相对应的MAC地址。

访问远程资源:

默认网关

当主机发送消息到远端网络,必须使用路由器,也称为默认网关。

默认网关就是位于发送主机同一网络上的路由器的接口IP地址。

本地网络上的所有主机都能够配置自己的默认网关地址。
如果该主机的TCP/IP设置中没有配置默认网关地址,或指定了错误的默认网关地址,则远端网络消息无法被送达。

与远端网络设备通讯(网络层地址与数据链路层地址):

网络地址:

当报文的发送方与接收方位于不同网络,源和目的IP地址将会代表不同网络上的主机。

源IP地址:  发送设备的IP地址:192.168.1.110。
目的IP地址:接收设备的IP地址:172.16.1.99

数据链路地址

当报文的发送方与接收方位于不同网络,以太网数据链路帧无法直接被发送到目的主机。以太网帧必须先发送给路由器或默认网关。

当报文的发送方与接收方位于不同网络,协议的目标mac地址为默认网关的以太网MAC地址(而不是目标服务器的mac地址)。

IP报文封装成的以太网帧先被传输至默认网关(路由器)再转发给目的地址(如果目的服务器所在网路连接至该路由器)。否则再转发给另一个路由器。

发送设备如何确定路由器的MAC地址?

每一个设备通过自己的TCP/IP设置中的默认网关地址得知路由器的IP地址。之后,它通过ARP来得知默认网关的MAC地址,该MAC地址随后添加到帧中。

二. 交换机

介绍交换机的帧转发技术,MAC地址表的维护方式,三种帧转发模式,以及冲突域和广播域。

帧转发:

网络及电信中的交换概念

以太网上的帧包含源MAC地址与目的MAC地址。交换机从源设备接收到帧并快速发往目的地址。

交换的基本概念指基于以下两条准则做出决策的设备:

进入(ingress)端口
目的地址

ingress用于描述帧通过特定端口进入设备,egress用于描述设备通过特定端口离开设备。

交换机做出转发决定的时候,是基于进入端口以及消息的目的地址的。

LAN交换机维护一张表。LAN交换机唯一智能部分是利用这张表基于消息的进入端口和目的地址来转发。无论进入端口如何,同一目的地址的消息永远从同一出口离开。

简单说交换机就是根据不同目的地址将数据通过不同端口转发输出

MAC地址表的动态更新

一个交换机要知道使用哪一个端口传送帧,首先必须学习各端口有哪些设备。随着交换机学习到端口与设备的关系,它建立起一张MAC地址表,或内容可寻址寄存表(CAM)。

CAM是一种应用于高速查找应用的特定类型的memory。

交换机将连接到它的端口的设备的MAC地址记录到MAC表中,然后利用表中信息将帧发送至输出端口设备,该端口已指定给该设备。

交换机操作模式是:交换机学习“源地址”,基于“目的地址”转发

帧进入交换机时,交换机“学习”接收帧的源MAC地址,并将此地址添加到MAC地址表中,或刷新已存在的MAC地址表项的老化寄存器(默认5分钟会自动刷新映射);
后续报文如果去往该MAC地址,则可以根据此表项转发。帧转发时,交换机检查目的MAC地址并与MAC地址表中地址进行比较。
如果地址在表中,则转发至表中与MAC地址相对应的端口。如果没有在表中找到目的MAC地址,交换机会转发到除了进入端口以外的所有端口泛洪(flooding)。
有多个互连交换机的网络中,MAC地址表对于一个连接至其他交换机的端口记录多个MAC地址。

简单说交换机是通过将源地址的记录,作为之后的目的地址的模式。(如果找不到映射关系,就广播,从而得到源地址)

交换机转发方式:

存储转发交换(Store-and-Forward)

运行在存储转发模式下的交换机在发送信息前要把整帧数据读入内存并检查其正确性。

尽管采用这种方式比采用直通方式更花时间,但采用这种方式可以存储转发数据,从而保证其准确性。
由于运行在存储转发模式下的交换机不传播错误数据,因而更适合大型局域网。

存储转发模式有两大主要特征区别于直通转发模式:

差错控制:

使用存储转发技术的交换机对进入帧进行差错控制。
在进入端口接收完整一帧之后,交换机将数据报最后一个字段的帧校验序列(frame check sequence, FCS)与自己的FCS进行比较。
FCS校验过程用以帮助确保帧没有物理及数据链路错误,如果该帧校验正确,则交换机转发。
否则,丢弃。

自动缓存:

存储转发交换机通过进入端口缓存,支持不同速率以太网的混合连接。
例如,接收到一个以1Gb/s速率发出的帧,转发至百兆以太网端口,就需要使用存储转发方式。
当进入与输出端口速率不匹配时,交换机将整帧内容放入缓存中,计算FCS校验,转发至输出缓存之后将帧发出。
Cisco的主要交换方式是存储转发交换。

直通交换(Cut-Through

直通交换的一个优势是比存储转发技术更为快速。
采用直通模式的交换机会在接收完整个数据包之前就读取帧头,并决定把数据发往哪个端口。
不用缓存数据也不用检查数据的完整性。

这种交换方式有两大特点:快速帧转发以及无效帧处理。

快速帧转发:

一旦交换机在MAC地址表中查找到目的MAC地址,就立刻做出转发决定。而无需等待帧的剩余部分进入端口再做出转发决定。

使用直通方式的交换机能够快速决定是否有必要检查帧头的更多部分,以针对额外的过滤目的。

例如,交换机可以检查前14个字节(源MAC地址,目的MAC,以太网类型字段),以及对之后的40字节进行检查,以实现IPv4三层和四层相关功能。

无效帧处理:

对于大多数无效帧,直通方式交换机并不将其丢弃。
错误帧被转发至其他网段。
如果网络中出现高差错率(无效帧),直通交换可能会对带宽造成不利影响,损坏以及无效帧会造成带宽拥塞。
在拥塞情况下,这种交换机必须像存储转发交换机那样缓存。

无碎片转发(Fragment Free

无碎片转发是直通方式的一种改进模式。
交换机转发之前检查帧是否大于64字节(小于则丢弃),以保证没有碎片帧。
无碎片方式比直通方式拥有更好的差错检测,而实际上没有增加延时。 它比较适合于高性能计算应用,即进程到进程延时小于10毫秒的应用场景。

交换机域:

交换机比较容易混淆的两个术语是冲突域和广播域。这一段讲述这两个影响LAN性能的重要概念。

冲突域

设备间共享同一网段称为冲突域。
因为该网段内两个以上设备同时尝试通讯时,可能发生冲突。
使用工作在数据链路层的交换机可将各个网段的冲突域隔离,并减少竞争带宽的设备数量。
交换机的每一个端口就是一个新的网段,因为插入端口的设备之间无需竞争。结果是每一个端口都代表一个新的冲突域。
网段上的设备可以使用更多带宽,冲突域内的冲突不会影响到其他网段,这也成为微网段。

广播域

尽管交换机按照MAC地址过滤大多数帧,它们并不能过滤广播帧。
LAN上的交换机接收到广播包后,必须对所有端口泛洪。
互连的交换机集合形成了一个广播域。
网络层设备如路由器,可隔离二层广播域。
路由器可同时隔离冲突和广播域。

当设备发出二层广播包,帧中的目的MAC地址被设置为全二进制数,

广播域中的所有设备都会接收到该帧。

二层广播域也称为MAC广播域。MAC广播域包含LAN上所有接收到广播帧的设备。

广播通信比较多时,可能会带来广播风暴。

特别是在包含不同速率的网段,高速网段产生的广播流量可能导致低速网段严重拥挤,乃至崩溃。

 

 补充:交换机是基于链路层根据mac地址进行通信的:

常规的情况下不同网段需通过网关访问的方式
关于交换机连接不同网段的机器一定要实现相互通信,应该需要特殊的设置:
比如
PC 1 IP: 192.168.1.1,默认网关设为:192.168.2.1
PC 2 IP: 192.168.2.1,默认网关设为:192.168.1.1
PC 1发现与PC 2不是同一网段需要发送给网关,现在问题就是如何获得网关(也就是PC2 )的MAC地址。
所以PC 1发送包含网关IP地址的ARP。ARP到交换机这里, 交换机转发这个ARP广播包(没有VLAN的话),于是PC 2返回自己的MAC地址给PC 1。
现在,PC 1就有了PC 2的MAC地址。这样就可以相互通信了。
结果是:A没有办法向B发出ARP包。如果是同一网段,则会有直连的路由,而不在同一网段的情况下,A没有到B的路由,所以连ARP都发不出去。
如何将交换机相连的两个不同网段的机器互通,
网上方法说是将那两台机器的网关都设为自己。这样互Ping时就会直接广播ARP。
 
现在有网关G1和PC1一个网段,网关G2和PC2一个网段,他们都连在同一个交换机上。
PC1 Ping PC2时,不是一个网段将消息发送给网关,网关收到后发送一个ARP广播,之后找到PC2。类似的过程PC2找到PC1。
上面能够成立的前提条件是"网关收到后发送一个ARP广播",认为是不行的。
PC 1向PC 2发起通信时,判断与PC 2与自己不在同一网段,这时候把消息发给G1,由G1进行转发。
如果PC 1的ARP表中没有G1的MAC,则发送ARP,G1收到ARP之后,返回自己的MAC地址,而不会转发ARP到交换机。
所以,PC 1的ARP表中只会有G1的MAC地址,而不会有远端PC 2的MAC地址。
之后G1要实现跨网段的数据通信,需是根据目的IP地址的网络号与子网号,选择最佳出口对IP分组进行转发。

三. 细说VLAN与Trunk

网络性能是影响业务效率的一个重要因素。将大型广播域分段是提高网络性能的方法之一。

路由器能够将广播包阻隔在一个接口上,但是,路由器的LAN接口数量有限,它的主要功能是在网络间传输数据,而不是对终端设备提供网络接入。
现代交换机就是通过在二层交换机上创建VLAN来减少广播域,因此在某种程度上,学习交换机就是学习VLAN。

问题原因:

 

当网络上的所有设备在广播域产生大量的广播以及多播帧,就会与数据流竞争带宽。这是由网络管理数据流组成,如:ARP,DHCP,STP等。
这些广播帧到达交换机之后,遍历整个网络并到达所有节点直至路由器。随着网络节点增加,开销的总数也在增长,直至影响交换机性能。通过实施VLAN断开广播域将数据流隔离开来

DHCP是(Dynamic Host Configuration Protocol)动态主机配置协议:

作用就是给计算机分配IP地址,运行DHCP服务的网络设备就叫做DHCP服务器。

现在的家用路由器都具备提供DHCP服务的能力,可以说现在的家用路由器是DHCP服务器、DNS服务器、NAT(Network Address Translation,网络地址转换)服务器的集合体。

 什么是VLAN

 VLAN(virtual local area network)虚拟局域网是一组与位置无关的逻辑端口。

VLAN就相当于一个独立的三层网络(因为在此基础上用truck可以实现不同局域网通信,否则需要使用路由

 

图中缺省情况下,所有节点实际上都是同一VLAN。因此,这种拓扑接口可看作是基于同一VLAN的。

例如,Cisco设备默认VLAN是VLAN 1,也称为管理VLAN。
默认配置下包含所有的端口,体现在源地址表(source address table,SAT)中。
该表用于交换机按照目的MAC地址将帧转发至合适的二层端口。
引入VLAN之后,源地址表按照VLAN将端口与MAC地址相对应起来,从而使得交换机能够做出更多高级转发决策。

该设备可以将网络中的机器划分成多个不同的VLAN。

另一种常用的拓扑结构是两个交换机被一个路由器分离开来

这种情况下,每台交换机各连接一组节点。每个交换机上的各节点共享一个IP地址域,这里有两个网段:192.168.1.0192.168.2.0

注意,虽然两台交换机的各自的VLAN相同。但非本地网络数据流必须经过路由器转发。(路由器不会转发二层单播,多播以及广播帧。)这种拓扑逻辑类似于多VLAN。

在一台交换机上添加一个VLAN,去掉另一台交换机的话,结构如下所示:

每一个VLAN相当于一个独立的三层IP网络,

因此,192.168.1.0上的节点试图与192.168.2.0上的节点通信时,不同VLAN通信必须通过路由器即使所有设备都连接到同一交换机

二层单播,多播和广播数据只会在同一VLAN内转发及泛洪,因此VLAN 1产生的数据不会为VLAN 2节点所见。
只有交换机能看得到VLAN,节点和路由器都感觉不到VLAN的存在。

添加了路由决策之后,可以利用3层的功能来实现更多的安全设定,更多流量以及负载均衡。

VLAN的作用:

安全性:           每一个分组的敏感数据需要与网络其他部分隔离开,减少保密信息遭到破坏的可能性。
节约成本:         无需昂贵的网络升级,并且带宽及上行链路利用率更加有效。
性能提高:         将二层网络划分成多个逻辑工作组(广播域)减少网络间不必要的数据流并提升性能。
缩小广播域:        减少一个广播域上的设备数量。如上图所示:网络上有六台主机但有三个广播域:教职工,学生,访客。
提升IT管理效率:    网络需求相似的用户共享同一VLAN,从而网络管理更为简单。当添加一个新的交换机,在指定端口VLAN时,所有策略和步骤已配置好。
简化项目和应用管理:VLAN将用户和网络设备汇集起来,以支持不同的业务或地理位置需求。
每一个VLAN对应于一个IP网络,因此,部署VLAN的时候必须结合考虑网络地址层级的实现情况。

交换机间VLAN

两个交换机VLAN相同,都是默认VLAN 1,即两个交换机之间的联系同在VLAN 1之内。路由器是所有节点的出口。

 

这时单播,多播和广播数据自由传输,所有节点属于同一IP地址。这时节点之间的通信不会有问题,因为交换机的SAT显示它们在同一VLAN

而下面这种连接方式就会有问题。由于VLAN在连接端口的主机之间创建了三层边界,它们将无法通信。

 

这里有很多问题。

第一,所有主机都在同一IP网,尽管连接到不同的VLAN。
第二,路由器在VLAN 1,因此与所有节点隔离。
最后,两台交换机通过不同的VLAN互连。

每一点都会造成通信阻碍,合在一起,网络各元素之间会完全无法通信。

交换机用满或同一管理单元物理上彼此分离的情形是很常见的。

这种情况下,VLAN需要通过trunk延伸至相邻交换机。trunk能够连接交换机,在网络间传载VLAN信息。

对之前的拓扑的改进包括:

·    PC 1和PC 2分配到192.168.1.0网段以及VLAN 2。
·    PC 3和PC 4分配到192.168.2.0网段以及VLAN 3。
·    路由器接口连接到VLAN 2和VLAN 3。
·    交换机间通过trunk线互连(truck针对的是同VLAN间进行通信而不是单独一个VLAN)。
注意:
trunk端口出现在VLAN
1,他们没有用字母T来标识。
trunk在任何VLAN都没有成员(因为不是针对单独的某一个)。
现在VLAN跨越多交换机,同一VLAN下的节点可以物理上位于任何地方。

什么是Trunk

Trunk是在两个网络设备之间承载多于一种VLAN的端到端的连接,将VLAN延伸至整个网络。

VLAN Trunk允许VLAN数据流在交换机间传输,所以设备在同一VLAN,但连接到不同交换机,能够不通过路由器来进行通信。

一个VLAN trunk不属于某一特定VLAN,而是交换机和路由器间多个VLAN的通道。

当安装好trunk线之后,帧在trunk线传输是就可以使用trunk协议来修改以太网帧。这也意味着交换机端口有不止一种操作模式。

缺省情况下,所有端口都称为接入端口。
当一个端口用于交换机间互连传输VLAN信息时,这种端口模式改变为trunk,路由器通常不知道VLAN的存在并使用标准以太网帧或“untagged”帧。
trunk线能够使用“tagged”帧来标记VLAN或优先级。
因此,在trunk端口,运行trunk协议来允许帧中包含trunk信息。

VLAN tag如下图所示,包含类型域,优先级域,CFICanonical Format Indicator)指示MAC数据域,VLAN ID

不同交换机相同VLAN进行通信:

PC 1在经过路由表处理后向PC 2发送数据流。这两个节点在同一VLAN但不同交换机。步骤如下:

· 以太网帧离开PC 1到达Switch 1。
· Switch 1的SAT表明目的地是trunk线的另一端。
· Switch 1使用trunk协议在以太网帧中添加VLAN id。
· 新帧离开Switch 1的trunk端口被Switch 2接收。
· Switch 2读取trunk id并解析trunk协议。
· 源帧按照Switch 2的SAT转发至目的地(端口4)。

总结:

VLAN:将交换机的端口分成很多个独立的VLAN,哪怕是同一网段也是不能通信的(甚至可能造成ip冲突)。
trunk:使得不同交换机可以在同VLAN下通信,无视物理位置。

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM