精华内容
下载资源
问答
  • 数据转发过程概述

    2021-01-04 14:30:14
    比如从主机A访问服务器A的HTTP(80端口)的过程数据是怎么转发的? 第一步:TCP封装 当主机A建立了到达目的地服务器A的TCP连接后,便开始对应用层数据进行封装; 第二步:IP封装 第三步:查找路由 ...

    网络,已经从方方面面影响着我们的吃穿住行的日常习惯,人们往往对网络既熟悉又陌生,熟悉的是我们每天都在使用它,陌生的是它是原理。

    我们通过网络来传输数据的过程,是怎样的呢?比如从主机A访问服务器A的HTTP(80端口)的过程,数据是怎么转发的?

    第一步:TCP封装

                  当主机A建立了到达目的地服务器A的TCP连接后,便开始对应用层数据进行封装;

                  

    第二步:IP封装

                

    第三步:查找路由

                  主机A必须要拥有到达目的地A的路由

                

            如果是主机A到主机B传输数据,那就需要ARP

           通过ARP缓存表找到主机B的MAC地址。

           如果表项里没有主机B的MAC地址,主机A发送ARP请求。

        

    第四步:以太网封装;

    第五步:数据帧转发;

                 

           

            网关检查是否具有到达目的网络的路由条目。

           如果存在转发路径,则为数据包添加一个新的二层帧头和帧尾,并继续转发。

    第六步:数据帧的解封装

           

          RTB以服务器A的MAC地址作为目的MAC继续转发。

         服务器A接收到该数据帧后,发现目的MAC为自己的MAC,于是会继续处理该数据帧。

    第七步:数据包解封装

        

           服务器A检查数据包的目的IP地址,发现目的IP与自己的IP地址相同。

           服务器A剥掉数据包的IP头部后,会送往上层协议TCP继续进行处理。

    第八步:数据段解封装

        

            服务器A检查TCP头部的目的端口,然后将数据段发送给应用层的HTTP协议进行处理。

     

     

    展开全文
  • 数据转发过程

    2021-09-25 20:11:18
    1,数据转发过程概述 数据可以在同一网络或者不同网络中间转发,所以数据转发的过程也可以分为本地转发和远程转发。以校园网的拓扑为例。首先我们的PC(personal computer)直接连上的就是局域网(私网),当我们...

    写在最前面:这是我第一次写博客(刚刚上大三),老师建议我们可以把学会的东西写下来并记录下来,以达到学习的目的。所以我来了。第一次写,肯定有许多见解浅显甚至错误的地方,还需要各位大佬们指正,谢谢!

     

    0(看看了解一下),数据的传输过程在以太网中依赖于TCP/IP协议簇和底层协议的配合。计算机网络将网络层次划分成五种不同的层次,由高到低分别为:应用层,传输层,网络层,数据链路层,物理层。在这里我们假设要进行端到端的通信,主要分析传输层,网络层,数据链路层。

    1,数据转发过程概述

           数据可以在同一网络或者不同网络中间转发,所以数据转发的过程也可以分为本地转发和远程转发。以校园网的拓扑为例。首先我们的PC(personal computer)直接连上的就是局域网(私网),当我们需要访问远端的web服务器(公网)时便需要走网关(普遍意义上的路由器)。假设此时我们的PC1需要访问服务器1的web服务,并且假设两者已经建立了TCP连接。

     //这里的公网网段不太严谨(10.0.0.0~10.255.255.255,172.16.0.0~172.31.255.255,192.168.0.0~192.168.255.255这三个网段规定是私网的ip,这里为了方便就将就用了,还请读者见谅)

    2,TCP封装(传输层)

           从应用层下来的数据首先要执行加密压缩(这里的加密和压缩是OSI模型中会话层和表示层的功能)后才到达了传输层,要进行传输层的封装(此时是TCP封装,而传输层有两种协议TCP和UDP因此有两种封装方式:TCP封装 UDP封装 )。

     Web服务是基于传输层的TCP协议封装数据并转发,所以如上图从应用层下来的数据经历加密和压缩后由传输层进行TCP封装,即在数据Data部分加上TCP头部。此时的得到的数据PDU(协议数据单元)我们称之为:数据段(Segment)。此时注意TCP头部的目的端口号80(Destination Port:80)表示数据应该交付给的应用层的http协议下的web服务进行处理。目的端口号的不同,代表要交付的上层的协议也不同,这里列举几个常见的目的端口号(

              FTP(数据连接)----- 20              //文件传输协议·TCP

              FTP  (控制连接)   ----- 21

             Telnet    ----- 23                              //远程终端协议·TCP

             Smtp     ----- 25                              //电子邮件传输协议·TCP

             DNS     ----- 53                               //域名系统·TCP/UDP

             TFTP     ----- 69                              //简单文件传输协议·UDP 

             HTTP      ----- 80                            //超文本传输协议·TCP

             POP3       ----- 110                         //邮局协议版本3·TCP

            HTTPS    ----- 443                         //超文本传输安全协议·TCP

    源端口号(Source Port)为主机随机选择的端口号,与以上的知名端口号不同。TCP报文段首部的其他字段就不一一介绍,感兴趣的读者可自行了解。所以当我们在进行了TCP的封装后,传输层向高层用户屏蔽了下面网络的核心的细节,导致对于应用进程来说,似乎传输层提供了应用进程间的逻辑通信。但是为了了解数据的转发过程,我们还需要继续往下研究。

    3,IP封装(网络层)

          当PC 1完成了传输层的封装以后,便进入了网络层的数据封装,在进行IP层的封装时,如果IP报文的大小大于网络的最大传输单元MTU的值,可能还会被分片。分装好后的数据PDU我们称之为数据包(Packet)

          如上图在进行IP封装(在数据部分加上IP头部,此时的数据部分对于网络层来说包括TCP Header和Data)的时候首先需要明确源地址和目的地址,源地址Source IP Address:10.0.15.1即PC 1 自己的私网的IP地址,目的地址Destination IP Address:172.16.10.1即为服务器Server 1 的IP地址。

           生存时间TTL字段的作用是用来减少网络环路造成的影响,默认TTL的值为255。路由器转发一个数据包时,该值会被减1,如果路由器发现收到的数据包该值减为0。若目的地址为自己的地址则直接交付上层处理,若不是自己的地址则丢弃该数据包。*Tracert就是发送一个TTL=1的报文来跟踪数据的转发

           协议字段值标识了传输层所使用的协议,这里该字段的填充值为0X06(Protocol:0X06)表示传输层使用的是TCP协议。这里列举几个常见的协议字段值(

            ICMP   -----    0X01               //网际控制报文协议

            IGMP   -----   0X02               //网际组管理协议

            TCP   -----   0X06                 //传输控制协议

            UDP   -----   0X11                 //用户数据报协议

            OSPF   -----   0X59               //开放式最短路径优先(区域间路由协议的一种)

          剩下的IP报文头部的其他字段值就不一一赘述,感兴趣的读者可自行查看相关文献。

    4,以太网封装(数据链路层)

           当我们完成了网络层的封装以后,接下来就到了数据链路层的封装,以太网封装。以太网中数据帧的封装格式有两种:IEEE802.3格式和EthernetⅡ帧格式。简单来看他们之间的区别在于帧Length/Type的值取值的范围(IEEE802.3帧:Length/Type<=1500(0X05DC)  ;   EthernetⅡ帧:Length/Type>=1536(0X0600)  )。这里我们只讨论与上文联系的EthernetⅡ帧,这也是目前以太网中应用最多的帧。

          好的,现在我们进行数据链路层的EthernetⅡ帧封装,如图

    在数据链路层的封装中,IP Header + TCP Header + Data对于帧来说就是数据部分。即在数据部分前面加上EthernetⅡ的帧头,以及在数据部分尾部加上帧尾FCS(帧校验序列)。做完这些事情后,我们将得到的数据称为:数据帧(Frame)。这里稍微讲解一下帧头的3个字段。

    D.MAC(Destination.MAC,目的Mac地址)在最前面,表示这个帧我要发送到目的哪个物理网卡的物理地址上,这个地址可以是单播地址(1对1),组播地址(1对多),广播地址(1对所有(同一个局域网段内))。

    S.MAC(Source.MAC,源Mac地址)表示本机此时正在使用的那个网卡的物理地址(*一台设备可能有多个网卡,以太网卡,无线网卡等等,具体是用什么方式连接网络,进行数据通讯,那么就封装的是哪个网卡的Mac地址。闲扯一下,虽然网卡的Mac地址在它出厂的时候就已经固化在ROM里面了,只读不写,但是读出来的Mac在操作系统中是可以更改的,更多可以参考苹果的设备)这个地址只能是单播地址。

    Type字段表示数据帧中封装的数据遵循哪个IP层的协议。这里的Type=0X0800表示数据是一个IPv4的数据包。这里列举几个常见的Type字段值(

               IPv4协议   ------   0X0800

               IPv6协议   ------   0X86dd

               ARP协议   ------   0X0806

               帧中继ARP   ------   0X0808

               RARP协议    ------   0X8035

               Apple Talk地址解析协议   ------   0X80F3

               SNMP协议   ------   0X814C

               PPP协议   ------    0X880B

               MPLS协议(单播)   ------   0X8847

               MPLS协议(组播)   ------   0X8848

               PPPoE协议(发现阶段)   ------   0X8863

               PPPoE协议(会话阶段)   ------   0X8864

    5,数据在局域网和公网中的转发。

            如果你看到了这里,证明你已经清楚的知道,这些数据在转发之前是如何在设备中封装的,解封的过程和封装一样,一层层从最外面给它脱掉“衣服”,每脱掉一层就发送给上层查看,一直到这个过程结束,这里就不啰嗦了。

    好的,那么首先是在局域网中的转发:

            还记得之前提到的图片嘛,不记得了,没关系,我Ctrl+V让你少滚一下鼠标滑轮。

          这里我们继续,PC 1要访问访问Server 1上的Web服务,并且已经按照约定打包封装好了数据帧。那么对于这个数据帧,首先我们知道它的目的IP地址(172.16.10.1/24)不是PC 1自己这个网段(10.0.15.0/24)里面的数据。那么这个数据帧就要经过网关(网关,字面意义上的网络的关口,对于局域网的用户来说所有访问外网的流量,我并不关心它之后由哪些路由器等等网络设备转发出去,我只关心我要出去,就必须要走网关。所以当你在本机的cmd窗口里arp-a试图查看百度的ip地址和Mac地址的映射关系时,不好意思,你找不到。有的只是,网关的ip地址和Mac地址的映射项,以及本局域网内所有你访问过的网络设备的ip地址和Mac地址的映射项等等,例如PC 2)来转发出去。这里的网关就是直连该网段的路由器AR1的一个端口GE0/0/0,它的ip地址是10.0.15.254/24。而封装的数据帧的D.Mac地址就是网关的Mac地址。

           数据帧首先从Ehternet0/0/1要走到接入交换机LSW 1。在到了LSW 1上时,交换机会查看自己的MAC地址表(Mac地址和端口的映射关系表),发现,噢原来目的mac地址是网关的mac地址,好的,那我就由我的GE0/0/1接口发送出去,到网关(AR1的G0/0/0)好吧。行,此时交换机打开并检查了数据帧,并对比了它的Mac地址表,然后转发出去。所以在局域网中的二层数据转发类比,交换机(层二设备)只是查看了数据帧后根据Mac地址表转发出去,并没有重新封装解封装。

           好的,现在我们的数据帧到了网关(GE0/0/0)。路由器AR1,接收到数据帧后首先会将数据帧打开(路由器是层三的设备,所以会查看到数据帧的IP层),然后对比自己的路由表发现,去往172.16.10.0/24网段的数据应该从自己的GE0/0/2口(10.1.15.1)转发到AR2的GE0/0/0口(10.1.15.2)。注意,这个时候路由器就会进行帧的重新封装和解封装。怎么封装呢,如图:

     

    目的Mac地址就是AR2的GE0/0/0口的物理地址。而源地址就是自己AR1上GE0/0/2口的物理地址。将数据帧重新分装成帧后,转发出去。

            到达AR2后也是类似上文所说,查看数据帧打开路由表,然后根据路由表知道了该转发到下一跳的地址后,重新解封装和封装数据帧并转发。最后到了对应网段,转发出去。所以在广域网中三层转发类比,路由器(层三设备)查看了数据包后根据路由表重新对帧进行了封装和解封装(添加一个新的二层帧头帧尾)后,再进行转发。

           好了到此为止,数据的转发过程基本上很浅显的讲完了,因为我本人能力有限,很多地方肯定写得还不够好,希望读者能指正,共勉,感谢阅读!

    展开全文
  • 工业以太网交换机的三种转发方式

    千次阅读 2021-04-06 09:44:32
    广域网的交换机(switch)就是一种在通信系统完成信息交换功能的设备。那么,交换机的转发方式有哪几种呢?接下来我们就跟随飞畅科技的小编一起来详细了解下吧! 转发方式: 1.直通转发(cut-through switching ) 2....

    交换(switching)是按照通信两端传输信息的要求,用人工或设备自动完成的方法,把要传输的信息送到符合要求的相应路由上的技术的统称。根据工作位置的不同,可以分为广域网交换机和局域网交换机。广域网的交换机(switch)就是一种在通信系统中完成信息交换功能的设备。那么,交换机的转发方式有哪几种呢?接下来我们就跟随飞畅科技的小编一起来详细了解下吧!

    转发方式:
    1.直通转发(cut-through switching )
    2.存储转发(Store-and-Forward switching)
    3.无碎片转发(Fragment-free switching)

    由于第三种方法主要是第一种“直通转发”的变形,所以只着重介绍第一二种方法。

    无论是直通转发还是存储转发都是一种二层的转发方式,而且它们的转发策略都是基于 目的MAC(DMAC)的,在这一点上这两种转发方式没有区别。

    它们之间的最大区别在于,它们何时去处理转发,也就是交换机怎样去处理数据包的接收进程和转发进程的关系。

    转发类型:

          1、直通式(Cut Through)

          直通方式的以太网交换机可以理解为在各端口间是纵横交叉的线路矩阵电话交换机。它在输入端口检测到一个数据包时,检查该包的包头,获取包的目的地址,启动内部的动态查找表转换成相应的输出端口,在输入与输出交叉处接通,把数据包直通到相应的端口,实现交换功能。由于不需要存储,延迟非常小、交换非常快,这是它的优点。

         它的缺点是,因为数据包内容并没有被以太网交换机保存下来,所以无法检查所传送的数据包是否有误,不能提供错误检测能力。由于没有缓存,不能将具有不同速率的输入/输出端口直接接通,而且容易丢包。

          2、存储转发(Store; Forward)

          存储转发方式是计算机网络领域应用最为广泛的方式。它把输入端口的数据包检查,在对错误包处理后才取出数据包的目的地址,通过查找表转换成输出端口送出包。正因如此,存储转发方式在数据处理时延时大,这是它的不足,但是它可以对进入交换机的数据包进行错误检测,有效地改善网络性能。尤其重要的是它可以支持不同速度的端口间的转换,保持高速端口与低速端口间的协同工作。

          3、碎片隔离(Fragment Free)

          这是介于前两者之间的一种解决方案。它检查数据包的长度是否够64个字节,如果小于64字节,说明是假包,则丢弃该包;如果大于64字节,则发送该包。这种方式也不提供数据校验。它的数据处理速度比存储转发方式快,但比直通式慢。

          无论是直通转发还是存储转发都是一种二层的转发方式,而且它们的转发策略都是基于 目的MAC(DMAC)的,在这一点上这两种转发方式没有区别。它们之间的最大区别在于,它们何时去处理转发,也就是交换机怎样去处理数据包的接收进程和转发进程的关系。

    好了,以上内容就是飞畅科技关于交换机三种转发方式的相关详细介绍,希望能对大家有所帮助!

    展开全文
  • 一、传输层协议—TCP TCP是一种面向连接的传输层协议,提供...TCP链接传输的数据每个字节都编上一个序号。序号字段的值指的是本报文段所发送的数据的第一个字节的序号 Aequence Number 32比特 序号字段。TCP链

    一、传输层协议—TCP

    TCP是一种面向连接的传输层协议,提供可靠的传输服务。

    1.1 TCP报文格式

    在这里插入图片描述

    字段长度含义
    Source Port16比特源端口,标识哪个应用程序发送
    Destination Port16比特目的端口,标识哪个应用程序接收
    Sequence Number32比特序号字段。TCP链接中传输的数据流中每个字节都编上一个序号。序号字段的值指的是本报文段所发送的数据的第一个字节的序号
    Aequence Number32比特序号字段。TCP链接中传输的数据流中每个字节都编上一个序号。序号字段的值指的是本报文段所发送的数据的第一个字节的序号
    Data Offset4比特数据偏移,即首部长度,指出TCP报文段的数据起始处距离TCP报文段的起始处有多远,以32比特(4字节)为计算单位。最多有60字节的首部,若无选项字段,正常为20字节
    Reserved6比特保留,必须填0
    URG1比特紧急指针有效标识。它告诉系统此报文段中有紧急数据,应尽快传送(相当于高优先级的数据)
    ACK1比特确认序号有效标识。只有当ACK=1时确认号字段才有效。当ACK=0时,确认号无效
    PSH1比特标识接收方应该尽快将这个报文段交给应用层。接收到PSH = 1的TCP报文段,应尽快的交付接收应用进程,而不再等待整个缓存都填满了后再向上交付。
    RST1比特重建连接标识。当RST=1时,表明TCP连接中出现严重错误(如由于主机崩溃或其他原因),必须释放连接,然后再重新建立连接
    SYN1比特同步序号标识,用来发起一个连接。SYN=1表示这是一个连接请求或连接接受请求
    FIN1比特发端完成发送任务标识。用来释放一个连接。FIN=1表明此报文段的发送端的数据已经发送完毕,并要求释放连接
    Window16比特窗口:TCP的流量控制,窗口起始于确认序号字段指明的值,这个值是接收端正期望接收的字节数。窗口最大为65535字节
    Checksum16比特校验字段,包括TCP首部和TCP数据,是一个强制性的字段,一定是由发端计算和存储,并由收端进行验证。在计算检验和时,要在TCP报文段的前面加上12字节的伪首部
    Urgent Pointer16比特紧急指针,只有当URG标志置1时紧急指针才有效。TCP的紧急方式是发送端向另一端发送紧急数据的一种方式。紧急指针指出在本报文段中紧急数据共有多少个字节(紧急数据放在本报文段数据的最前面)
    Options可变选项字段。TCP协议最初只规定了一种选项,即最长报文段长度(数据字段加上TCP首部),又称为MSS。MSS告诉对方TCP“我的缓存所能接收的报文段的数据字段的最大长度是MSS个字节”新的RFC规定有以下几种选型:选项表结束,无操作,最大报文段长度,窗口扩大因子,时间戳。
    Padding可变填充字段,用来补位,使整个首部长度是4字节的整数倍
    data可变TCP负载
    • 窗口扩大因子:3字节,其中一个字节表示偏移值S。新的窗口值等于TCP首部中的窗口位数增大到(16+S),相当于把窗口值向左移动S位后获得实际的窗口大小。
    • 时间戳:10字节,其中最主要的字段是时间戳值(4字节)和时间戳回送应答字段(4字节);
    • 选项确认选项:

    1.2 TCP协议过程

    1.2.1 TCP连接建立过程

    TCP通过三次握手建立可靠连接。
    在这里插入图片描述
    TCP是一种可靠的,面向连接的全双工传输层协议。
    TCP连接的建立是一个三次握手的过程。如图所示:

    1. 主机A(通常也称为客户端)发送一个标识了SYN的数据段,表示期望与服务器A建立连接,此数据段的序列号(seq)为a。
    2. 服务器A回复标识了SYN+ACK的数据段,此数据段的序列号(seq)为b,确认序列号为主机A的序列号加1(a+1),以此作为对主机A的SYN报文的确认。
    3. 主机A发送一个标识了ACK的数据段,此数据段的序列号(seq)为a+1,确认序列号为服务器A的序列号加1(b+1),以此作为对服务器A的SYN报文段的确认。

    1.2.2 TCP传输过程

    在这里插入图片描述TCP的可靠传输还体现在TCP使用了确认技术来确保目的设备收到了从源设备发来的数据,并且是准确无误的。确认技术的工作原理如下:目的设备接收到源设备发送的数据段时,会向源端发送确认报文,源设备收到确认报文后,继续发送数据段,如此重复。
    如图所示,主机A向服务器A发送TCP数据段,为描述方便假定每个数据段的长度都是500个字节。当服务器A成功收到序列号是M+1499的字节以及之前的所有字节时,会以序列号M+1499+1=M+1500进行确认。另外,由于数据段N+3传输失败,所以服务器A未能收到序列号为M+1500的字节,因此服务器A还会再次以序列号M+1500进行确认。

    1.2.3 TCP流量控制

    TCP滑动窗口技术通过动态改变窗口大小来实现对端到端设备之间的数据传输进行流量控制
    在这里插入图片描述
    如图所示,主机A和服务器A之间通过滑动窗口来实现流量控制。为方便理解,此例中只考虑主机A发送数据给服务器A时,服务器A通过滑动窗口进行的流量控制。
    主机A向服务器发送4个长度为1024字节的数据段,其中主机的窗口大小为4096个字节。服务器A收到第3个数据段后,缓存区满,第4个数据段被丢弃。服务器以ACK3073响应,窗口大小调整为3072,表明服务器的缓冲区只能处理3072个字节的数据段。于是主机A改变其发送速率,发送窗口大小为3072的数据段。

    1.2.4 TCP连接关闭过程

    主机在关闭连接之前,要确认收到来自对方的ACK。
    在这里插入图片描述

    TCP支持全双工模式传输数据,这意味着同一时刻两个方向都可以进行数据的传输。在传输数据之前,TCP通过三次握手建立的实际上是两个方向的连接,因此在传输完毕后,两个方向的连接必须都关闭。
    TCP连接的建立是一个三次握手的过程,而TCP连接的终止则要经过四次握手。
    如图所示:

    1. 主机A想终止连接,于是发送一个标识了FIN,ACK的数据段,序列号为a,确认序列号为b。
    2. 服务器A回应一个标识了ACK的数据段,序列号为b,确认序号为a+1,作为对主机A的FIN报文的确认。
    3. 服务器A想终止连接,于是向主机A发送一个标识了FIN,ACK的数据段,序列号为b,确认序列号为a+1。
    4. 主机A回应一个标识了ACK的数据段,序列号为a+1,确认序号为b+1,作为对服务器A的FIN报文的确认。
      以上四次交互便完成了两个方向连接的关闭。

    二、传输层协议—UDP

    UDP是一种面向无连接的传输层协议,传输可靠性没有保证。

    2.1 UDP报文格式

    在这里插入图片描述

    字段长度描述
    Source Port2字节标识哪个应用程序发送(发送进程)
    Destination Port2字节标识哪个应用程序接收(接收进程)
    Length2字节UDP首部加上UDP数据的字节数,最小为8
    Checksum2字节覆盖UDP首部和UDP数据,是可选的
    data octets变长UDP负载,可选的

    2.2 UDP传输过程

    在这里插入图片描述
    主机A发送数据包时,这些数据包是以有序的方式发送到网络中的,每个数据包独立地在网络中被发送,所以不同的数据包可能会通过不同的网络路径到达主机B。这样的情况下,先发送的数据包不一定先到达主机B。因为UDP数据包没有序号,主机B将无法通过UDP协议将数据包按照原来的顺序重新组合,所以此时需要应用程序提供报文的到达确认、排序和流量控制等功能。通常情况下,UDP采用实时传输机制和时间戳来传输语音和视频数据。
    在这里插入图片描述
    UDP适合传输对延迟敏感的流量,如语音和视频。
    在使用TCP协议传输数据时,如果一个数据段丢失或者接收端对某个数据段没有确认,发送端会重新发送该数据段。
    TCP重新发送数据会带来传输延迟和重复数据,降低了用户的体验。对于迟延敏感的应用,少量的数据丢失一般可以被忽略,这时使用UDP传输将能够提升用户的体验。

    三、数据转发过程

    数据包在相同网段内或不同网段之间转发所依据的原理基本一致。
    在这里插入图片描述
    数据可以在同一网络内或者不同网络间传输,数据转发过程也分为本地转发和远程转发,但两者的数据转发原理是基本一样的,都是遵循TCP/IP协议簇。

    3.1 TCP封装

    当主机建立了到达目的地的TCP连接后,便开始对应用层数据进行封装。
    在这里插入图片描述
    主机A会对待发送的应用数据首先执行加密和压缩等相关操作,之后进行传输层封装。Web应用是基于传输层的TCP协议传输数据的。主机A使用TCP进行报文封装时,必须填充源端口和目的端口字段,初始序列号和确认序列号字段,标识位,窗口字段以及校验和字段。此例中数据段的源端口号为主机A随机选择的1027号端口,目的端口号为服务器A的TCP知名端口80。

    3.2 IP封装

    在这里插入图片描述
    主机A完成传输层(TCP封装)封装后,一般会进行网络层数据封装,在使用IP进行封装时,需要明确IP报文的源和目的地址。如果IP报文的大小大于网络的最大传输单元(MTU),则该报文有可能在传输过程中被分片。
    生存时间(TTL)字段用来减少网络环路造成的影响。ARG3系列路由器产生的数据包,默认TTL值为255。路由器转发一个数据包时,该值会被减1,如果路由器发现该值被减为0,就会丢弃该数据包。这样,即使网络中存在环路,数据包也不会在网络上一直被转发。
    协议字段标识了传输层所使用的协议。本例中,传输层使用的是TCP协议,所以该字段的填充值为0X06。

    3.3 查找路由

    主机A必须要拥有到达目的地的路由。

    在这里插入图片描述
    每个主机都会独自维护各自的路由表项。主机A在完成IP封装后发送数据前需要先检查是否能够到达目的端,这个过程是通过查找路由来完成的。在此示例中,主机A拥有一条到达“任何网络”的路由,它发往其他网络的数据都会通过IP地址为10.1.1.1的接口转发到下一跳,即网关10.1.1.254。

    3.4查找MAC地址表

    在这里插入图片描述
    接下来,由于数据包要被封装成数据帧,所以主机A需要获取下一跳的MAC地址,也就是网关的MAC地址。主机首先会查询ARP缓存表。本例中,主机A的ARP缓存表中存在网关MAC地址的表项。
    如果没有查找到网关的MAC地址表项,主机A会通过发送ARP请求来获取网关的MAC地址。

    3.5 以太网封装

    在这里插入图片描述
    主机A在链路层封装数据帧时,会遵循IEEE 802.3或Ethernet_II标准,Ethernet_II帧头中的类型字段填充为0x0800,以表示网络层使用的是IP协议。源MAC地址为主机A的MAC地址,目的MAC地址为网关路由器E0/0接口的MAC地址。

    3.6 数据帧转发

    在这里插入图片描述
    主机A工作在半双工状态下,所以会使用CSMA/CD来检测链路是否空闲。如果链路空闲,主机A会将一个前导码(Preamble)和一个帧首定界符(SFD)附加到帧头然后进行传输。前导码的作用是使接收设备进行同步并做好接收数据帧的准备。前导码是包括了7个字节的二进制“1”、“0”交替的代码,即1010…10共56位。帧首定界符是长度为1个字节的10101011二进制序列,它的作用是使接收端对帧的第一位进行定位。
    在这里插入图片描述
    本例中,主机A发送数据帧到共享以太网,此网络中的所有网络设备都会收到该帧。设备收到帧之后,首先会进行FCS校验。如果FCS校验未能通过,则帧被立即丢弃。对于通过了FCS校验的帧,设备会检查帧中的目的MAC地址。如果帧中的目的MAC地址与自己的MAC地址不同,设备将丢弃帧,如果相同,则会继续处理。处理过程中,帧头帧尾会被剥去(也就是解封装),剩下的数据报文会被根据帧头中的类型字段的值来送到网络层中的对应协议模块去处理。

    3.7数据包转发过程

    网关检查是否具有到达目的网络的路由条目。如果存在转发路径,则为数据包添加一个新的二层帧头和帧尾,并继续转发。
    在这里插入图片描述
    RTA收到此数据报文后,网络层会对该报文进行处理。RTA首先根据IP头部信息中的校验和字段,检查IP数据报文头部的完整性,然后根据目的IP地址查看路由表,确定是否能够将数据包转发到目的端。RTA还必须对TTL的值进行处理。另外,报文大小不能超过MTU值。如果报文大小超过MTU值,则报文将被分片。
    网络层处理完成后,报文将被送到数据链路层重新进行封装,成为一个新的数据帧,该帧的头部会封装新的源MAC地址和目的MAC地址。如果当前网络设备不知道下一跳的MAC地址,将会使用ARP来获得。

    3.8 数据帧解封装

    RTB以服务器A的MAC地址作为目的MAC继续转发。
    服务器A接收到该数据帧后,发现目的MAC为自己的MAC,于是会继续处理该数据帧。
    在这里插入图片描述
    该示例中,服务器A处于一个共享以太网中,两台服务器都会收到RTB发送的数据帧。该帧的目的MAC地址与服务器B的接口MAC地址不匹配,所以会被服务器B丢弃。
    服务器A成功收到该帧,并通过FCS校验。服务器A将利用帧中的类型字段来识别在网络层处理该数据的协议。该示例中,服务器A会将解封装后的此数据交给网络层的IP协议来进行处理。

    3.9 数据包解封装

    在这里插入图片描述
    服务器A通过IP协议来处理该报文,首先会通过校验和字段来验证报文头的完整性,然后检查IP报文头中的目的IP地址是否与自己当前的IP地址匹配。
    如果在源与目的之间的数据传输期间数据发生了报文分片,则报文会被目的端重新组合。标识字段用于标识属于同一数据源的分片报文,偏移量表示该分片在原分组中的相对位置。标志字段目前只有两位有意义,标志字段最低位为1表示后面还有分片,为0表示这已经是最后一个数据片;中间一位为1表示不能分片,为0表示允许分片。所有的分片报文必须被目的端全部接收到后才会进行重新组合。
    协议字段表示此数据包携带的上层数据是哪种协议的数据。需要注意的是,下一个报头并非总是传输层报头。例如,ICMP报文也是使用IP协议封装,协议字段值为0x01。

    3.10 数据端解封装

    在这里插入图片描述
    当IP报文头被处理完并剥离后,数据段会被发送到传输层进行处理。在此示例中,传输层协议使用的是TCP,且发送端和接收端已经通过三次握手建立了连接。传输层收到该数据段后,TCP协议会查看并处理该数据段头部信息,其中目的端口号为80,用于表示处理该数据的应用层协议为HTTP协议。TCP处理完头部信息后会将此数据段头部进行剥离,然后将剩下的应用数据发送到HTTP协议进行处理。

    展开全文
  • 本文主要讲述了 IP 数据报的发送和转发过程,参考:计算机网络微课堂 IP 数据报的发送和转发过程包含以下两部分: 主机发送 IP 数据报 路由器转发 IP 数据报 说明:后续举例忽略了 ARP 协议获取目的主机或路由器...
  • 目标:OSI七层模型、TCP/IP四层模型、以太网帧结构、MAC地址作用、数据转发方式一、OSI七层模型1、物理层:在设备之间进行比特流传输。2、数据链路层:将比特组合成字节,再将字节组合成帧,使用链路层地址(MAC地址)...
  • 交换机转发过程: 当以太网帧到达交换机后,交换机会自动并学习该数据帧的源mac地址,与进入的接口形成绑定关系,当该表项被转发时,会刷新老化时间 当一台终端设备访问同一网段其他ip地址时,将正常进行ip封装、...
  •  交换机接收完整的数据帧后才开始转发过程  延迟大,延迟取决于数据帧的长度。  交换机检测错误,一旦发现错误数据包将会丢弃。 Fragment-free 碎片隔离  交换机接收完数据包的前64字节(一个最短帧长度)...
  • 当路由器接收到一个数据包时,工作过程如下: 首先提取数据包头的目的MAC信息,与自身MAC表比较: 如果找到对应项,则按MAC表进行转发(与交换机一样); 如果没找到则提取数据包头的目的IP信息,则与自身的路由表进行...
  • 计算机网络-交换机/转发帧的过程

    千次阅读 2021-11-22 16:26:35
    交换机 转发过程
  • 路由器的转发过程: PC1在本网段广播一个数据帧(目标MAC地址为:全F)本网段直连路由器可以直接接受帧 由于PC2和PC1不在同一网段,路由器不转发广播帧。需要路由器来完成一系列的封装和解封装 首先一个从PC1发出的...
  • 以太网交换机自学习和转发帧的流程9.1 总结9.2 课后练习 8. 集线器与交换机的区别   早期的总线型以太网最初使用粗同轴电缆作为传输媒体,后来演进到使用价格相对便宜的细同轴电缆。当初认为这种连接方法既简单又...
  • 目录MAC 地址 每个网卡或三层网口都有一个 MAC 地址, MAC 地址是烧录到硬件上,因此也称为硬件地址。MAC 地址作为数据链路设备的地址标识符,需要保证网络的每个 MAC 地址都...
  • 可参考:http://lxr.linux.no/linux+v2.6.30.4/net/网络设备接口部分主要负责从物理介质接收和发送数据,实现的文件在linu/driver/net目录下面。网络接口核心部分是整个网络接口的关键部位,它为网络协议提供统一的...
  • 以太网数据格式前导码目的地址源地址类型数据FCS最小的数据帧是多少字节? MAC地址 每个网卡或三层网口都有一个MAC地址,MAC地址是烧录到硬件上,因此也叫硬件地址。MAC地址作为数据链路设备的地址标识符,需要保证...
  • 2. IP 编址与数据转发过程 2.1 IP编址 IP 地址分为网络位和主机位。 IP 地址由32个二进制位组成,通常用点分十进制形式表示。 二、十、十六进制: 2.2 IP分类 私有地址: 10.0.0.0/8 172.16.0.0/16 192.168....
  • 以太网逻辑上是总线结构...转发过滤:网桥接收到一个帧后,根据此帧的目的mac地址,查找网桥的地址表,确定发往哪个接口,或是丢弃 交换式集线器 又叫 以太网交换机、交换机 工作在数据链路层,二层设备 替代了网..
  • 以太网的发展历史、演化过程以及工作基理以前花了大篇幅介绍以太网(十几篇文章左右),今天再来简单介绍一下,因为每个人的理解不同,不同的文章的角度不同让你理解的东西也不同。以太网简介以太网是一...
  • 9: 在转发数据过程中,如果在路由表中没有找到包的目的地地址,则根据路由器的配置转发到默认接口或者用户返回目标地址不可达的信息。 二、路由表的形成 路由表 路由器中·维护的路由条目的集合 路由器根据...
  • 电力数据通信网是以保障电网安全生产为目的,采用路由器、光端机等设备搭建而成,用于传输电网生产控制信号、电网公司办公内网、视频会议等综合业务的通信网络。电力数据通信网网络结构与公司运维范围内变电站的地理...
  • 以太网帧格式MAC-in-MAC异步传输模块以太帧的格式前导码以太帧前端有一个叫做前导码(Preamble)的部分,它由0、1数字交替组合而成,表示一个以太帧的开始,也是对端网卡能够确保与其同步的标志。前导码末尾两个比特是...
  • 交换机对数据帧的转发和过滤

    千次阅读 2021-12-14 17:07:55
    上图,PCA发出数据帧,其目的地址是PCD的地址MAC_D。交换机在端口E1/0/1收到数据帧后,检索MAC地址表项,发现目的MAC地址MAC_D所对应的端口是E1/0/4,就把此数据帧从E1/0/4转发,不在端口E1/0/2和E1/0/3转发,PCB...
  • 以太网

    2021-03-07 13:47:52
    IEEE 802.11——无线以太网 IEEE 802.2——逻辑链路控制 IEEE 802.3——带冲突检测的载波侦听多路访问协议CSMA/CD(半双工以太网) 终端之间的通信 MAC:介质接入控制地址 二层以太接口的物理地址,通常不可改变。...
  • 你知道以太网数据帧在网络如何发送和接收的吗?一文带你搞懂它那么,网络层的IP数据包是如何在网络传输的呢?答案是根据目的IP地址查找路由表转发的,那么什么是路由表,路由表是如何生成的?路由表是如何指导...
  • (帧格式有一丢丢改动) 802.3局域网 =以太网 (二)以太网提供无连接、不可靠的服务 无连接:发送方和接收方之间无“握手过程”。 不可靠:不对发送方的数据帧编号,接收方不向发送方进行确认,差错帧直接丢弃,...
  • 2.1 若在同一网段,则先查询arp缓存是否有目的ip的mac地址,如果arp缓存有则封装mac包,将ip数据发送给目的主机;如果arp缓存没有则发送arp请求得到目的主机的mac地址 2.2 若不在同一网段,则将数据包发送...
  • 对于搞IT的同行而言,大部分人都不会直接和网络打交道,因此除非从事网络开发,否则对网络内部机制也不会太关心,但是明白网络数据是怎么走的,这对每个IT工程师应该是很重要的基础知识。网络数据包如何在网络上游荡...
  • 数据链路层:数据链路层是OSI参考模型的第二层,介乎于物理层和网络层之间。数据链路层在物理层提供的服务的基础上向网络层提供服务,其最基本的服务是将源自物理层来的数据可靠地传输到相邻节点的目标机网络层。...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 31,753
精华内容 12,701
关键字:

以太网中数据转发的过程