1 2 3 4 上一个 下一个 229 回复 最新回复: Jan 8, 2018 5:50 PM hitjackma 转至原始发贴 RSS
  • 15. Re: 网络基本功系列:细说网络那些事儿
    Zhang,Jiawen

    感谢支持才是,我倒是希望还有人来讨论。。。

  • 16. Re: 网络基本功系列:细说网络那些事儿
    fish_long

    感谢分享和回复。

  • 17. Re: 网络基本功系列:细说网络那些事儿
    Zhang,Jiawen

    欢迎以及谢谢支持。

    PC1发送的数据包记录的源地址是一个内部地址,那服务端接收到了PC1发送的请求之后是如何将消息返回给PC1的?

    服务器端在给PC1 发送响应报文的时候,通过PC 1的IP地址发现与自己不是同一网段,因此把报文发送给路由器R2,由R2通过报文的目的地址(即PC 1的IP地址),查找路由表之后,再进行转发。其实过程是和PC1发给服务器相似的~

     

    不知道有没有说清楚。。。反正有什么问题咱再讨论。

  • 18. Re: 网络基本功系列:细说网络那些事儿
    NaNi_Z

    服务器端在给PC1 发送响应报文的时候,通过PC 1的IP地址发现与自己不是同一网段,因此把报文发送给路由器R2,由R2进行转发。

    可是网络上可能会有很多路由器连接着这种192的局域网地址,R2如何知道该发往哪里呢?

     

    之前的问题可能问的不太清楚,我再描述一下:

        比如说,路由器的WAN口和LAN口不是一个网段的,PC1与WebServer都分别连接在R1和R2的LAN口上。

        现在PC1要访问WebServer的服务,那它发送的请求信息中的目的IP是R2的WAN口IP还是WebServer的IP?我认为是R2的WAN口IP,请求消息经R1转发后可以找到R2,R2接收到这个请求后再将这个请求转发给WebServer。

        现在WebServer要给PC1发送响应。可是现在它拥有的PC1的IP地址是一个内部地址,网络上的每一个路由器都有可能连接着这样一个内部地址,甚至R2的LAN口一侧通过另一个路由器就可能拥有一个与PC1相同的IP。R2转发这个响应后是否知道该将它发往R1,这个响应消息是如何正确的发送到PC1的呢?

     

    感谢你的回答~

  • 19. Re: 网络基本功系列:细说网络那些事儿
    Zhang,Jiawen

    这是一个很好的问题

    这里存在一个IP的替换。PC 1访问WebServer的时候用的是R2的WAN口IP作为它的目的IP。PC 1产生的IP包的源IP地址是私网IP,但私网IP不能到公网上,所以PC1的源IP会被替换成R1的WAN口IP。这样R2回复IP包的时候,用的是R1的WAN口IP作为目的IP。

  • 20. Re: 网络基本功系列:细说网络那些事儿
    daiwliang

    访问远程设备过程中,图示的目标MAC地址源MAC地址源IP地址都随着路由到不同的网络不断变化的。

  • 21. Re: 网络基本功系列:细说网络那些事儿
    NaNi_Z

    谢谢你的回答,搜了一下发现是NAT。

     

    自己创建的虚拟机的网络常常使用NAT模式,却没想起来PC上网也是这种模式。NAT的映射过程已查了一下,现在访问外部资源的整个过程已经比较清楚了。

     

    再次感谢。

  • 22. Re: 网络基本功系列:细说网络那些事儿
    NaNi_Z

    谢谢回复。这个过程我现在已经比较清楚了。

  • 23. Re: 网络基本功系列:细说网络那些事儿
    Zhang,Jiawen

    不客气。具体实现方式应该是不止一种,比如NAT,proxy。

  • 24. Re: 网络基本功系列:细说网络那些事儿
    Stone_He

    LZ发的帖子都非常好啊  刚看完Wireshark那篇  这个接着看...

  • 25. Re: 网络基本功系列:细说网络那些事儿
    Zhang,Jiawen

    谢谢~

  • 26. Re: 网络基本功系列:细说网络那些事儿
    Zhang,Jiawen

    下一节写交换机。写的时候突然想起以前写的TCAM芯片驱动,因为启动时芯片一个总线(好像是QDR2)寄存器的bug芯片起不来。期间测信号,调整寄存器配置值,尝试一切办法。最后厂商承认是芯片bug,work around。印象太深现在还记得很清楚。

  • 27. Re: 网络基本功系列:细说网络那些事儿
    Zhang,Jiawen

    网络基本功():细说交换机

     

    转载请在文首保留原文出处:EMC中文支持论坛https://community.emc.com/go/chinese image001.gif

     

     

    介绍

     

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


    更多信息

     

    帧转发:

     

    网络及电信中的交换概念

    以太网上的帧包含源MAC地址与目的MAC地址。交换机从源设备接收到帧并快速发往目的地址。交换的基本概念指基于以下两条准则做出决策的设备:

    ·         进入(ingress)端口

    ·         目的地址

     

    术语ingress用于描述帧通过特定端口进入设备,egress用于描述设备通过特定端口离开设备。交换机做出转发决定的时候,是基于进入端口以及消息的目的地址的。

     

    LAN交换机维护一张表,通过这张表决定如何转发数据流。LAN交换机唯一智能部分是利用这张表基于消息的进入端口和目的地址来转发。一个LAN交换机中只有一张定义了地址和端口的主交换表;因此,无论进入端口如何,同一目的地址的消息永远从同一出口离开。

     

    MAC地址表的动态更新

     

    一个交换机要知道使用哪一个端口传送帧,首先必须学习各端口有哪些设备。随着交换机学习到端口与设备的关系,它建立起一张MAC地址表,或内容可寻址寄存表(CAM)。CAM是一种应用于高速查找应用的特定类型的memory。交换机将连接到它的端口的设备的MAC地址记录到MAC表中,然后利用表中信息将帧发送至输出端口设备,该端口已指定给该设备。

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

     

    以下步骤描述了更新MAC地址表的方法:

    1.     交换机在port 1接收到来自PC 1的帧。

    image002.jpg

     

    2.     交换机检查源MAC地址并与MAC地址表相比较。

    ·         如果地址不在表中,则交换机在MAC地址表中将PC 1的源MAC地址关联到进入端口(port 1)。

    image003.jpg

    ·         如果已经存在该源地址的MAC地址表项,则交换机重置老化计时器。通常一个表项会保持5分钟。

     

    3.     交换机记录源地址信息之后,检查目的地址

    ·         如果目的MAC地址不在表项中或如果它是一个广播MAC地址,则交换机把该帧泛洪(flood)至除了进入端口以外的所有端口。

    image004.jpg

     

    4.     目标设备(PC 3)返回目的地址为PC 1的单播帧。

    image005.jpg

     

    5.     交换机地址表中输入PC 3的源MAC地址以及进入端口的端口号。在表项中找到该帧的目的地址及关联的输出端口。

    image006.jpg

     

    6.     交换机现在可以在源和目标设备之间传送帧而无需泛洪,因为地址表中已有指定关联端口的表项。

    image007.jpg

     

    交换机转发方式:

     

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

    运行在存储转发模式下的交换机在发送信息前要把整帧数据读入内存并检查其正确性。尽管采用这种方式比采用直通方式更花时间,但采用这种方式可以存储转发数据,从而保证其准确性。由于运行在存储转发模式下的交换机不传播错误数据,因而更适合大型局域网。存储转发模式有两大主要特征区别于直通转发模式:

    差错控制:

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

    image008.jpg

    自动缓存:

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

    Cisco的主要交换方式是存储转发交换。

     

    直通交换(Cut-Through

    直通交换的一个优势是比存储转发技术更为快速。采用直通模式的交换机会在接收完整个数据包之前就读取帧头,并决定把数据发往哪个端口。不用缓存数据也不用检查数据的完整性。这种交换方式有两大特点:快速帧转发以及无效帧处理。

    快速帧转发:

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

    image009.jpg

    使用直通方式的交换机能够快速决定是否有必要检查帧头的更多部分,以针对额外的过滤目的。例如,交换机可以检查前14个字节(源MAC地址,目的MAC,以太网类型字段),以及对之后的40字节进行检查,以实现IPv4三层和四层相关功能。

    无效帧处理:

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

     

    无碎片转发(Fragment Free

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

     

    交换机域:

     

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

     

    冲突域

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

    如下图所示,每一个交换机端口连接到一台主机,每一个交换机端口代表一个隔离的冲突域。

    image010.jpg

     

    广播域

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

    当设备发出二层广播包,帧中的目的MAC地址被设置为全二进制数,广播域中的所有设备都会接收到该帧。二层广播域也称为MAC广播域。MAC广播域包含LAN上所有接收到广播帧的设备。广播通信比较多时,可能会带来广播风暴。特别是在包含不同速率的网段,高速网段产生的广播流量可能导致低速网段严重拥挤,乃至崩溃。

     

     

     

     

  • 28. Re: 网络基本功系列:细说网络那些事儿
    NaNi_Z

    终于迎来第二篇,支持~

     

    好吧,我又有个问题。

    我想确认一下。交换机(二层)转发时是只关心MAC不关心IP的吧?那么交换机即使是连接了多台不同网段的机器也是可以让他们相互通信的吧?

     

    没有条件做这个试验,容我直接问了。

  • 29. Re: 网络基本功系列:细说网络那些事儿(8月18日更新)
    Zhang,Jiawen

    常规的情况下不同网段需通过网关访问的方式我想你应该是已经了解的~这个系列的第一篇文章也有提到。

     

    关于交换机连接不同网段的机器一定要实现相互通信,应该需要特殊的设置:

    比如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地址。这样就可以相互通信了。