数据包从源到目的地的传输过程

数据包从源到目的地的传输过程
数据包从源到目的地的传输过程

数据包从源到目的地的传输过程

步骤1:PC1 需要向PC2 发送一个数据包

PC1 将IP 数据包封装成以太网帧,并将其目的MAC 地址设为R1 FastEthernet 0/0 接口的MAC 地址。

PC1 是如何确定应该将数据包转发至R1 而不是直接发往PC2?这是因为PC1 发

现源IP 地址和目的IP 地址位于不同的网络上。

PC1 通过对自己的IP 地址和子网掩码执行AND 运算,从而了解自身所在的网络。同样,PC1 也对数据包的目的IP 地址和自己的子网掩码执行AND 运算。如果两次运算结果一致,则PC1 知道目的IP 地址处于本地网络中,无需将数据包转发到默认网关(路由器)。如果AND 运算的结果是不同的网络地址,则PC1 知道目的IP 地址不在本地网络中,因而需要将数据包转发到默认网关(路由器)。

注:如果数据包目的IP 地址与PC1 子网掩码进行AND 运算后,所得到的结果并非PC1 计算得出的自己所在的网络地址,该结果也未必就是实际的远程网络地址。在PC1 看来,只有当掩码和网络地址相同时,目的IP 地址才属于本地网络。远程网络可能使用不同的掩码。如果目的IP 地址经过运算后得到的网络地址不同于本地网络地址,则PC1 无法知道实际的远程网络地址,它只知道该地址不在本地网络上。

PC1 如何确定默认网关(路由器R1)的MAC 地址?PC1 会在其ARP 表中查找默认网关的IP 地址及其关联的MAC 地址。

如果该条目不存在于ARP 表中会发生什么情况?PC1 会发出一个ARP 请求,然后路由器R1 作出ARP 回复。

步骤2:路由器R1 收到以太网帧

1. 路由器R1 检查目的MAC 地址,在本例中它是接收接口FastEthernet 0/0 的MAC 地址。因此,R1 将该帧复制到缓冲区中。

2. R1 看到“以太网类型”字段的值为0x800,这表示该以太网帧的数据部分包含IP 数据包。

3. R1 解封以太网帧。

4. 由于数据包的目的IP 地址与路由器R1 的所有直连网络均不匹配,R1 将求助于路由表来确定数据包的路由方式。R1 搜索路由表中的条目,看看其中是否存在网络地址和子网掩码的组合能否构成目的IP 地址所在的网络。在本例中,路由表存在192.168.4.0/24 网络的路由条目。数据包的目的IP 地址为192.168.4.10,这是该网络中的主机IP 地址。

R1 到192.168.4.0/24 网络的路由的下一跳IP 地址为192.168.2.2,送出接口为FastEthernet 0/1。这表示IP 数据包将封装到一个新的以太网帧中,其目的MAC 地址为下一跳路由器的IP 地址对应的MAC 地址。由于送出接口连接的是以太网,R1 必须将下一跳IP 地址解析为目的MAC 地址。

5. R1 在其FastEthernet 0/1 接口的ARP 缓冲区中查找下一跳IP 地址

192.168.2.2。如果该条目不在ARP 缓冲区中,R1 会从FastEthernet 0/1 接口发出一个ARP 请求。R2 以ARP 回复应答。收到ARP 回复后,R1 便使用192.168.2.2 条目及相关MAC 地址更新其ARP 缓冲区。

6. IP 数据包被封装到新的以太网帧中,并从R1 的FastEthernet 0/1 接口发出。

步骤3:数据包到达路由器R2

1. 路由器R2 检查目的MAC 地址,在本例中它是接收接口FastEthernet 0/0 的MAC 地址。因此,R1 将该帧复制到缓冲区中。

2. R2 看到“以太网类型”字段的值为0x800,这表示该以太网帧的数据部分包含IP 数据包。

3. R2 解封以太网帧。

4. 由于数据包的目的IP 地址与路由器R2 的所有接口地址均不匹配,R2 将查询其

路由表来确定数据包的路由方式。R2 使用与R1 相同的过程在路由表中搜索数据包的目

的IP 地址。

R2 的路由表中有到192.168.4.0/24 的路由,下一跳IP 地址为192.168.3.2 且送出接口为Serial 0/0/0。因为送出接口不是以太网,所以R2 不需要将下一跳的IP 地址解析为目的MAC 地址。

当接口为点对点串行连接时,R2 将IP 数据包封装成适合送出接口(HDLC、PPP 等)使用的数据链路帧格式。在此情况下,第2 层封装为PPP;因此,数据链路目的地址将设

置为广播地址。请记住,串行接口没有MAC 地址。

5. IP 数据包封装成新的数据链路帧(PPP),然后通过serial 0/0/0 送出接口发送出去。

步骤4:数据包到达R3

1. R3 接收并将数据链路PPP 帧复制到缓冲区中。

2. R3 解封数据链路PPP 帧。

3. R3 在路由表中搜索数据包的目的IP 地址。路由表的搜索结果显示,该地址所在的网络为R3 的直连网络。这表示该数据包可以直接发往目的设备,不需要将其发往另一台路由器。

因为送出接口是直连的以太网,所以R3 需要将数据包的目的IP 地址解析为目的MAC 地址。

4. R3 在其ARP 缓存中搜索数据包的目的IP 地址192.168.4.10。如果该条目不在ARP 缓冲区中,R3 会从FastEthernet 0/0 接口发出一个ARP 请求。PC2 用其自身的MAC 地址回复ARP 应答。R3 用条目192.168.4.10 及ARP 应答中返回的MAC 更新其ARP 缓存。

5. IP 数据包被封装到新的数据链路(以太网)帧中,并从R3 的FastEthernet 0/0 接口发出。

步骤5:封装有IP 数据包的以太网帧到达PC2

1. PC2 检查目的MAC 地址,发现该地址与接收接口的MAC 地址(PC2 的以太网网卡)匹配。因此PC2 将数据帧的剩余部分复制到缓冲区中。

2. PC2 看到“以太网类型”字段的值为0x800,这表示该以太网帧的数据部分包含IP 数据包。

3. PC2 解封以太网帧并将IP 数据包传递至操作系统的IP 进程。

数据包转发过程

路由器转发数据包过程详解 (2010-05-22 20:59:09) 转载 标签: 分类:学习交流 路由器 数据包转发 it 主机PC1向主机PC2发个数据包,中间经过B路由器,请问源地址和源MAC是怎么变化的? 答:就假设拓扑图是这个样子吧:PC1-----(B1-B2) -------PC2 B1和B2是路由器B上的两个接口, PC1和PC2是PC,由主机PC1向主机PC2发送数据包,那么在主机PC1形成的数据包的目的IP就是PC2的IP,源IP就是主机PC1的IP地址,目标MAC地址就是B1的MAC地址,源MAC地址就是PC1的MAC地址。 转发过程:假如是第一次通信PC1没有PC2的ARP映射表 PC1在本网段广播一个数据帧(目的MAC地址为:FFFF:FFFF:FFFF:FFFF)帧格式为: 段的路由。此时路由器给PC1回复一个应答数据包,告诉PC1自己的MAC地址就是PC1要通信的PC2主机的MAC地址。而此时PC1建立ARP映射表,将该MAC地址(即路由器的B1接口)与PC2的IP地址建立映射关系。实际上是路由器对其进行了“欺骗”。 其应答数据帧格式为: 对于路由器B同样建立了自己的ARP映射表:将PC1的MAC地址与PC1的IP地址映射。

数据包在流出B2接口的时候其数据包的帧格式为: PC2所在的网段各主机将自己的IP地址与数据包中的目的IP地址比对。若符合则将自己的MAC地址替换上广播MAC地址,并回复该数据帧: 的对应关系调出来。将PC1的MAC地址覆盖路由器B2接口的MAC地址。另一方面路由器更新ARP映射表,将PC2的MAC地址与PC2的IP地址映射。 此时流出路由器B1接口的数据包的帧格式为: 地址建立对应关系。 此后每次通信时由于PC1要与PC2通信时。由于PC1已经建立了到PC2IP地址的ARP映射,所以下次要通信时直接从本地ARP调用。 简单说一下,网络设备间(包括设备之间和计算机之间)如果要相互通信的话必需经过以下这几个步骤: (以TCP/IP协议通信为例) 1、发送端的应用程序向外发出一个数据包。 2、系统判断这个数据包的目标地址是否在同一个网段之内。 3、如果判断出这个数据包的目标地址与这台设备是同一个网段的,那么系统就直接把这个数据包封装成帧,这个数据帧里面就包括了这台设备的网卡MAC地址,然后这个帧就直接通过二层设备(也就是大家说的不带路由的交换机/HUB之类的~^-^)发送给本网段内的目标地址。

数据包与数据帧大小

简单的说,你上网打开网页,这个简单的动作,就是你先发送数据包给网站,它接收到了之后,根据你发送的数据包的IP地址,返回给你网页的数据包,也就是说,网页的浏览,实际上就是数据包的交换。 1、数据链路层对数据帧的长度都有一个限制,也就是链路层所能承受的最大数据长度,这个值 称为最大传输单元,即MTU。以以太网为例,这个值通常是1500字节。 2、对于IP数据包来讲,也有一个长度,在IP包头中,以16位来描述IP包的长度,也就是说, 一个IP包,最长可能是65535字节。 3、结合以上两个概念,第一个重要的结论就出来了,如果IP包的大小,超过了MTU值,那么就需要 分片,也就是把一个IP包分为多个,这个概念非常容易理解,一个载重5T的卡车,要拉10T的货,它 当然就得分几次来拉了。 编辑本段 辨析 4、IP分片是很多资料常讲的内容,但是我倒是觉得分不分片其实不重要,重要的是另一个东西。一个 数据包穿过一个大的网络,它其间会穿过多个网络,每个网络的MTU值是不同的。我们可以设想,如果 接受/发送端都是以太网,它们的MTU都是1500,我们假设发送的时候,数据包会以1500来封装,然而, 不幸的是,传输中有一段X.25网,它的MTU是576,这会发生什么呢?我想,这个才是我们所关心的。 当然,结论是显而易见的,这个数据包会被再次分片,咱开始用火车拉,到了半路,不通火车,只通汽车, 那一车货会被分为很多车……仅此而已,更重要的是,这种情况下,如果IP包被设置了“不允许分片标志”,那 会发生些什么呢?对,数据包将被丢弃,然后收到一份ICMP不可达差错,告诉你,需要分片! 这个网络中最小的MTU值,被称为路径MTU,我们应该有一种有效的手段,来发现这个值,最笨的方法或许是先 用traceroute查看所有节点,然后一个个ping…… 编辑本段

内核协议栈数据包转发完全解析

内核协议栈数据包转发 目录 1 NAPI流程与非NAPI 1.1NAPI驱动流程 1.2非NAPI流程 1.3NAPI和非NAPI的区别 2内核接受数据 2.1数据接收过程 2.2 采取DMA技术实现 3 e100采用NAPI接收数据过程 3.1 e100_open 启动e100网卡 3.2 e100_rx_alloc_list 建立环形缓冲区 3.3 e100_rx_alloc_skb 分配skb缓存 3.4 e100_poll 轮询函数 3.5 e100_rx_clean 数据包的接收和传输 3.6 e100_rx_indicate 4 队列层 4.1、软中断与下半部 4.2、队列层 5采用非NAPI接收数据过程 5.1netif_rx 5.2轮询与中断调用netif_rx_schedule不同点 5.3 netif_rx_schedule 5.4 net_rx_action 5.5 process_backlog 6数据包进入网络层 6.1 netif_receive_skb(): 6.2 ip_rcv(): 6.3 ip_rcv_finish(): 6.4 dst_input(): 6.5本地流程ip_local_deliver: 6.6转发流程ip_forward(): 1 NAPI流程与非NAPI 1.1NAPI驱动流程: 中断发生 -->确定中断原因是数据接收完毕(中断原因也可能是发送完毕,DMA完毕,甚至是中断通道上的其他设备中断) -->通过netif_rx_schedule将驱动自己的napi结构加入softnet_data的poll_list 链表,禁用网卡中断,并发出软中断NET_RX_SOFTIRQ -->中断返回时触发软中断调用相应的函数net_rx_action,从softnet_data的poll_list

计算机网络__交换机工作原理

计算机网络交换机工作原理 在前面了解到根据交换机在OSI参考模型中工作的协议层不同,将交换机分为二层交换机、三层交换机、四层交换机。交换机工作的协议层不同,其工作原理也不相同。下面我们将介绍各层交换机的工作原理。 1.二层交换机工作原理 二层交换机能够识别数据包中的MAC地址信息,然后根据MAC地址进行数据包的转发,并将这些MAC地址与对应的端口记录在内部的地址列表中。二层交换机的工作原理如下:当交换机从端口收到数据包后,首先分析数据包头中的源MAC地址和目的MAC地址,并找出源MAC地址对应的交换机端口。然后,从MAC地址表中查找目的MAC地址对应的交换机端口。 如果MAC地址表中存在目的MAC地址的对应端口,则将数据包直接发送到该对应端口。如果MAC地址表中没有与目的MAC地址的对应端口,则将数据包广播到交换机所有端口,待目的计算机对源计算机回应时,交换机学习目的MAC地址与端口的对应关系,并将该对应关系添加至MAC地址表中。 这样,当下次再向该MAC地址传送数据时,就不需要向所有端口广播数据。并且,通过不断重复上面的过程,交换机能够学习到网络内的MAC地址信息,建立并维护自己内部的MAC地址表。如图6-10所示,为二层交换机工作原理示意图。 图6-10 二层交换机工作原理 2.三层交换机工作原理 三层交换机是在二层交换机的基础上增加了三层路由模块,能够工作于OSI参考模型的网络层,实现多个网段之间的数据传输。三层交换机既可以完成数据交换功能,又可以完成数据路由功能。其工作原理如下: 当三层交换机接收到某个信息源的第一个数据包时,交换机将对该数据包进行分析,并判断数据包中的目的IP地址与源IP地址是否在同一网段内。如果两个IP地址属于同一网段,

路由器的工作原理

路由器的工作原理 路由器的是实现网络互连,在不同网络之间转发数据单元的重要网络设备。路由器主要工作在OSI参考模型的第三层(网络层),路由器的主要任务就是为经过路由器的每个数据帧寻找一条最佳传输路径,并将该数据有效地传送到目的站点。为了完成这项工作,在路由器中保存着各种传输路径的相关数据——路由表(Routing Table),供路由选择时使用。由此可见,选择最佳路径的策略即路由算法是路由器的关键所在。因此,当路由器接收到来自一个网络接口的数据包时,首先根据其中所含的目的地址查询路由表,决定转发路径(转发接口和下一跳地址),然后从ARP缓存中调出下一跳地址的MAC地址,将路由器自己的MAC 地址作为源MAC,下一跳地址的MAC作为目的MAC,封装成帧头,同时IP数据包头的TTL(Time To Live)也开始减数,最后将数据发送至转发端口,按顺序等待,传送到输出链路上去。在这个过程中,路由器被认为了执行两个最重要的基本功能:路由功能与交换功能。 路由功能 路由功能是指路由器通过运行动态路由协议或其他方法来学习和维护网络拓扑结构,建立,查询和维护路由表。 路由表里则保存着路由器进行路由选择时所需的关键信息,包含了目的地址、目的地址的掩码、下一跳地址、转发端口、路由信息来源、路由优先级、度量值(metric)等。 路由信息可通过多种协议的学习而来,其来源方式可分为直连路由、静态路由、缺省路由和动态路由。一个路由器上可以同时运行多个不同的路由协议,每个路由协议都会根据自己的选路算法计算出到达目的网络的最佳路径,但是由于选路算法不同,不同的路由协议对某一个特定的目的网络可能选择的最佳路径不同。此时路由器根据路由优先级(决定了来自不同路由来源的路由信息的优先权)选择将具有最高路由优先级(数值最小)的路由协议计算出的最佳路径放置在路由表中,作为到达这个目的网络的转发路径。(优先级顺序:直连路由>静态路由>动态路由(OSPF>RIP)) 而对于一个特定的路由协议,可以发现到达目的网络的所有路径,根据选路

网络通信中的数据包(帧)

网络通信中的数据包(帧) 帧(Frame),数据链路层的协议数据单元(protocol data unit)。网络设备将“位”组成一个个的字节,然后这些字节“封装”成帧,在网络上传输。 数据链路层的主要职责是控制相邻系统之间的物理链路,它在传送“比特”信息的基础上,在相邻节点间保证可靠的数据通信。为了保证数据的可靠传输,把用户数据封装成帧。 在网络中,计算机通信传输的是由“0”和“1”构成的二进制数据,二进制数据组成“帧”(Frame),帧是网络传输的最小单位。实际传输中,在铜缆(指双绞线等铜质电缆)网线中传递的是脉冲电流;在光纤网络和无线网络中传递的是光和电磁波(当然光也是一种电磁波)。针对高速脉冲电流而言,我们人为地用低电平的脉冲代表“0”、用高电平的脉冲代表“1”。这些虚拟的“0”或“1”就是“位”(Bit)。在计算机网络中一般8个位组成了一个“字节”(Byte)。学过计算机的人都知道字节(Byte)是计算机的数据储存单位。网络技术的初学者大都会把“Bit”(位)与“Byte”(字节)相混淆,谈到100Mbps以太网,就会以为它是每秒钟能传100MB数据的网络,实际上只是25MB(理论值)。如果把脉冲电流看成是轨道,那么帧就是运行在轨道上的火车。火车有机车和尾车,帧也有一个起点,我们称之为“帧头”,而且帧也有一个终点,我们称之为“帧尾”。帧头和帧尾之间的部分是这个帧负载的数据(相当于火车车头和车尾之间的车厢)。 为什么要把数据“封装”成帧呢?因为用户数据一般都比较大,有的可以达到MB字节,一下子发送出去十分困难,于是就需要把数据分成许多小份,再按照一定的次序发送出去。 帧是当计算机发送数据时产生的,确切地说,是由计算机中安装的网卡产生的。帧只对于能够识别它的设备才有意义。对于集线器来说,帧是没有意义的,因为它是物理层设备,只认识脉冲电流。有许多人对帧不理解,所以不能很好地理解交换机与集线器的区别。

交换机VLAN数据转发过程说明(802.1Q:基于端口的VLAN)

交换机对带802.1q标签的以太网帧转发过程说明(802.1q:基于端口的VLAN)一、带802.1q标签的以太网帧说明: IEEE于1999年正式签发了802.1q标准,即Virtual Bridged Local Area Networks协议,规定了VLAN的国际标准实现,从而使得不同厂商之间的VLAN互通成为可能。 在802.1q以太网帧中,在原有的标准的以太网帧头中的源地址后增加了一个4字节的802.1q 帧头来实现该技术的。在这4字节的802.1q标签头包含了2个字节的标签协议标识(TPID:Tag Protocol Identifier,它的值是8100),和2个字节的标签控制信息(TCI:Tag Control Information)。TPID是IEEE定义的新的类型,表明这是一个加了802.1q标签的文本。 TCI(标签控制信息):包括了三个方面的内容:Priority、CFI、VLAN ID。现对这三个内容进行详细的解释: Priority:这3位指明帧的优先级。一共有8种优先级,主要用于当交换机阻塞时,优先发送哪个数据包; CFI(Canonical Format Indicator):这一位主要用于总线型的以太网与FDDI、令牌环网交换数 据时的帧格式; VLAN ID(VLAN Identified):这是一个12位的域,指明VLAN的ID,一共有4096个,每个支持802.1q协议的设备发送出来的数据包都会包含这个域,以指明自己属于哪个VLAN; 二、交换机对带802.1q标签的以太网数据帧转发说明: 从第一点可以看出,802.1q标签头的4个字节是新增加的,目前一般的网卡和原来老式的交换机和HUB并不支持802.1q,因此这些设备发送出来的数据包的以太网帧头不包含这4个字节,同时也无法识别这4个字节。因此,对于支持802.1q交换机来说,如果某个端口上所连接的设备也都能够识别和发送这种带802.1q标签头的数据包文,那么我们将这种端口称为Tag端口;相反,如果该端口所连接的设备不能够识别和发送这种带802.1q标签头的数据包文,那么我们将这种端口称为

数据传输过程详解

数据传输过程详解 一、FTP客户端发送数据到FTP服务器端,详述其工作过程。两台机器的连接情况如下图所示: 详细解答如下 1.1、假设初始设置如下所示: 客户端FTP端口号为:32768 协议是水平的,服务是垂直的。 物理层,指的是电信号的传递方式,透明的传输比特流。 链路层,在两个相邻结点间的线路上无差错地传送以帧为单位的数据。 网络层,负责为分组交换网上的不同主机提供通信,数据传送的单位是分组或包。 传输层,负责主机中两个进程之间的通信,数据传输的单位是报文段。 网络层负责点到点(point-to-point)的传输(这里的“点”指主机或路由器),而传输层负责端到端(end-to-end)的传输(这里的“端”指源主机和目的主机)。 1.3、数据包的封装过程 不同的协议层对数据包有不同的称谓,在传输层叫做段(segment),在网络层叫做数据报(datagram),在链路层叫做帧(frame)。数据封装成帧后发到传输介质上,到达目的主机后每层协议再剥掉相应的首部,最后将应用层数据交给应用程序处理。两台计算机在不同的网段中,那么数据从一台计算机到另一台计算机传输过程中要经过一个或多个路由器。 1.4、工作过程 (1)在PC1客户端,将原始数据封装成帧,然后通过物理链路发送给Switch1的端口1。形成的帧为: 注:发送方怎样知道目的站是否和自己在同一个网络段?每个IP地址都有网络前缀,发送方只要将目的IP地址中的网络前缀提取出来,与自己的网络前缀比较,若匹配,则意味着数据报可以直接发送。也就是说比较二者的网络号是否相同。本题中,PC1和PC2在两个网络段。 (2)Switch1收到数据并对数据帧进行校验后,查看目的MAC地址,得知数据是要

数据包抓包分析

数据链路层数据包抓包分析 实验内容 (1)安装Wireshark软件。 (2)掌握抓包软件的使用 (3)掌握通过抓包软件抓取帧并进行分析的办法 实验步骤 (1)常用的抓包软件包括Sniffer、NetXRay、Wireshark (又名EtheReal)。 我们采用免费的Wireshark,可以从https://www.360docs.net/doc/2d11387769.html,或其他网站下载。安装完成后,Wireshark的主界面和各模块功能如下: 命令菜单(command menus):最常用菜单命令有两个:File、Capture。File菜单允许你保存捕获的分组数据或打开一个已被保存的捕获分组数据文件。Capture菜单允许你开始捕获分组。 显示筛选规则(display filter specification):在该字段中,可以填写协议的名称或其他信息,根据此内容可以对分组列表窗口中的分组进行过滤。 捕获分组列表(listing of captured packets):按行显示已被捕获的分组内容,其中包括:Wireshark赋予的分组序号、捕获时间、分组的源地址和目的地址、协议类型、分组中所包含的协议说明信息。在该列表中,所显示的协议类型是发送或接收分组的最高层协议的类型。分组首部明细(details of selected packet header):显示捕获分组列表窗口中被选中分组的头部详细信息。包括:与以太网帧有关的信息,与包含在该分组中的IP数据报有关的信息。如果利用TCP或UDP承载分组, Wireshark也会显示TCP或UDP协议头部信息。最后,分组最高层协议的头部字段也会被显示。 分组内容窗口(packet content):以ASCII码和十六进制两种格式显示被捕获帧的完整内容。(2)下面我们进行抓包练习。 在capture菜单中选中options,可以设置抓包选项,如下图所示,这里我们需要选

交换机基本原理和转发过程

交换机基本原理和转发过程 (李建昂 0023000149 专用设备/驱动科室) 本文主要介绍了一下交换机的工作原理,通过本文能够熟悉交换机的原理并对二层交换的一些概念有较深的理解。 首先介绍一下几个设备。我们经常会看到一些设备的名字,比如HUB、交换机等。这些设备之间到底有什么区别和联系,下面就简单说一下。 1、Ethernet HUB Ethernet HUB的中文名称叫做以太网集线器,其基本工作原理是广播技术(broadcast),也就是HUB从任何一个端口收到一个以太网数据帧后,它都将此以太网数据帧广播到其它所有端口,HUB不存储哪一个MAC地址对应于哪一个端口。 以太网数据帧中含有源MAC地址和目的MAC地址,对于与数据帧中目的MAC地址相同的计算机执行该报文中所要求的动作;对于目的MAC地址不存在或没有响应等情况,HUB既不知道也不处理,只负责转发。 HUB工作原理: (1) HUB从某一端口A收到的报文将发送到所有端口; (2) 报文为非广播报文时,仅与报文的目的MAC地址相同的端口响应用户A; (3) 报文为广播报文时,所有用户都响应用户A。 随着网络应用不断丰富,网络结构日渐复杂,导致传统的以太网连接设备HUB已经越来越不能满足网络规划和系统集成的需要,它的缺陷主要表现在以下两个方面: (1) 冲突严重——HUB对所连接的局域网只作信号的中继,所有物理设备构成了一个冲突域; (2) 广播泛滥 2、二层交换技术 二层交换机的出现能够在一定程度上解决HUB存在的缺陷——主要是冲突严重的问题,其与HUB的区别从大的方面来看可以分为以下三点: (1)从OSI体系结构来看,HUB属于OSI模型的第一层物理层设备,而交换机属于OSI的第二层数据链路层设备。也就意味着HUB只是对数据的传输起到同步、放大

数据包从源到目的地的传输过程

数据包从源到目的地的传输过程 步骤1:PC1 需要向PC2 发送一个数据包 PC1 将IP 数据包封装成以太网帧,并将其目的MAC 地址设为R1 FastEthernet 0/0 接口的MAC 地址。 PC1 是如何确定应该将数据包转发至R1 而不是直接发往PC2?这是因为PC1 发 现源IP 地址和目的IP 地址位于不同的网络上。 PC1 通过对自己的IP 地址和子网掩码执行AND 运算,从而了解自身所在的网络。同样,PC1 也对数据包的目的IP 地址和自己的子网掩码执行AND 运算。如果两次运算结果一致,则PC1 知道目的IP 地址处于本地网络中,无需将数据包转发到默认网关(路由器)。如果AND 运算的结果是不同的网络地址,则PC1 知道目的IP 地址不在本地网络中,因而需要将数据包转发到默认网关(路由器)。 注:如果数据包目的IP 地址与PC1 子网掩码进行AND 运算后,所得到的结果并非PC1 计算得出的自己所在的网络地址,该结果也未必就是实际的远程网络地址。在PC1 看来,只有当掩码和网络地址相同时,目的IP 地址才属于本地网络。远程网络可能使用不同的掩码。如果目的IP 地址经过运算后得到的网络地址不同于本地网络地址,则PC1 无法知道实际的远程网络地址,它只知道该地址不在本地网络上。 PC1 如何确定默认网关(路由器R1)的MAC 地址?PC1 会在其ARP 表中查找默认网关的IP 地址及其关联的MAC 地址。 如果该条目不存在于ARP 表中会发生什么情况?PC1 会发出一个ARP 请求,然后路由器R1 作出ARP 回复。

步骤2:路由器R1 收到以太网帧 1. 路由器R1 检查目的MAC 地址,在本例中它是接收接口FastEthernet 0/0 的MAC 地址。因此,R1 将该帧复制到缓冲区中。 2. R1 看到“以太网类型”字段的值为0x800,这表示该以太网帧的数据部分包含IP 数据包。 3. R1 解封以太网帧。

交换机的工作过程

交换机的功能及工作过程 By:吾怜茜 一.交换机概述: 交换机是一种工作在二层的设备,但是随着技术的不断进步,现在已经出现了诸如三层交换机,多层交换机产品。在本篇中讨论的是二层交换机的一些特性。 二.交换机的功能: 1.地址学习 有些地方也叫做基于源MAC地址学习,这个功能主要就是学习和存储MAC 地址。 2.帧的转发/过滤 数据帧的转发主要是交换机能够根据MAC地址表来转发数据,过滤则是对一些受限制的数据进行阻止或丢弃。 3.环路避免 由于交换机的某些特性会带来一些问题,比如形成环路,因此为了保证网络上数据的正确传输以及网络的稳定要采取一些措施来避免这些问题,主要是通过STP来实现,稍后会讲到。 三.交换机的工作过程: 交换机在运行的时候要维护几张表,比如CAM表,vlan.data表。CAM表用来保存学到的MAC地址;VLAN.DATA文件用来保存VLAN相关的信息。 1.在交换机初始加电的时候它的MAC地址表是空的,当其他与其相连的设备(PC,交换机,路由器等)向它发送一个信息的时候,交换机就会根据数据的源MAC和目标MAC对数据进行处理,因为发的是第一个包,所以这时候交换机会把源MAC地址和数据从本交换机进来的端口号做关联,然后加上VLAN号保存起来形成一个CAM表条目。因为交换机的MAC地址表现在是空的,所以它不知道数据的目的地在那里,这时候交换机会发送ARP请求把数据从除了数据进来的端口之外的所有端口广播,这个过程称为泛洪,当目标主机收到数据之后会返回一个回应包,告诉交换机自己的MAC地址,这时候交换机又会根据目标主机返回的包把目标主机的MAC地址和进来的端口关联起来加上VLAN号形成一个新的CAM表条目。这个过程就是地址学习。我们通过下面的图来详细了解一下。

ppp数据包格式分析

PPP数据包格式分析 PPP简介 点对点协议(PPP)为在点对点连接上传输多协议数据包提供了一个标准方法。PPP 最初设计是为两个对等节点之间的IP 流量传输提供一种封装协议。在TCP-IP 协议集中它是一种用来同步调制连接的数据链路层协议(OSI 模式中的第二层),替代了原来非标准的第二层协议,即SLIP。除了IP 以外PPP 还可以携带其它协议,包括DECnet 和Novell 的Internet 网包交换(IPX)。 PPP是一种数据链路层协议,遵循HDLC(高级数据链路控制协议)族的一般报文格式。PPP是为了在点对点物理链路(例如RS232串口链路、电话ISDN线路等)上传输OSI模型中的网络层报文而设计的,它改进了之前的一个点对点协议–SLIP协议–只能同时运行一个网络协议、无容错控制、无授权等许多缺陷,PPP是现在最流行的点对点链路控制协议。 PPP的帧格式 图1 PPP的帧格式解释 FCS:帧校验 标志flag:字段恒为0×7f 地址(adress):字段恒为0xff 控制(control)字段恒为0×03 协议(protocol):字段表示PPP报文中封装的payload(data字段)的类型,如果为0×0021,则表示PPP封装的IP报文,0×002B表示IPX报文,0×0029表示AppleTalk报文,这几种都属于PPP的数据报文;如果为0×8021则表示PPP的LCP报文(用来协商连接),如果为0xC021则属于PPP的NCP报文(用来协商封装的三层协议),这些属于PPP的控制报文。 LCP 链路控制协议(LCP) LCP 建立点对点链路,是PPP 中实际工作的部分。LCP 位于物理层的上方,负责建立、配置和测试数据链路连接。LCP 还负责协商和设置WAN 数据链路上的控制选项,这些选项由NCP 处理。 NCP PPP允许多个网络协议共用一个链路,网络控制协议(NCP) 负责连接PPP(第二层)和网络协议(第三层)。对于所使用的每个网络层协议,PPP 都分别使用独立的NCP来连接。例如,IP 使用IP 控制协议(IPCP),IPX 使用Novell IPX 控制协议(IPXCP)。

网络中数据传输过程的分析

网络中数据传输过程的分析 我们每天都在使用互联网,我们电脑上的数据是怎么样通过互联网传输到到另外的一台电脑上的呢?把自己的理解写一下,可能有很多细节还没有能的很清楚!希望在以后可以使之更加的完善!有不对的地方还请指正. 我们知道现在的互联网中使用的TCP/IP协议是基于,OSI(开放系统互联)的七层参考模型的,(虽然不是完全符合)从上到下分别为应用层表示层会话层传输层网络层数据链路层和物理层。其中数据链路层又可是分为两个子层分别为逻辑链路控制层(Logic Link Control,LLC )和介质访问控制层((Media Access Control,MAC )也就是平常说的MAC层。LLC对两个节点中的链路进行初始化,防止连接中断,保持可靠的通信。MAC层用来检验包含在每个桢中的地址信息。在下面会分析到。还要明白一点路由器是在网路层的,而网卡在数据链路层。 我们知道,ARP(Address Resolution Protocol,地址转换协议)被当作底层协议,用于IP地址到物理地址的转换。在以太网中,所有对IP的访问最终都转化为对网卡MAC地址的访问。如果主机A的ARP列表中,到主机B的IP地址与MAC地址对应不正确,由A发往B数据包就会发向错误的MAC地址,当然无法顺利到达B,结果是A与B根本不能进行通信。 首先我们分析一下在同一个网段的情况。假设有两台电脑分别命名为A和B,A需要相B发送数据的话,A主机首先把目标设备B的IP地址与自己的子网掩码进行“与”操作,以判断目标设备与自己是否位于同一网段内。如果目标设备在同一网段内,并且A没有获得与目标设备B的IP地址相对应的MAC地址信息,则源设备(A)以第二层广播的形式(目标MAC地址为全1)发送ARP请求报文,在ARP请求报文中包含了源设备(A)与目标设备(B)的IP地址。同一网段中的所有其他设备都可以收到并分析这个ARP请求报文,如果某设备发现报文中的目标IP地址与自己的IP地址相同,则它向源设备发回ARP响应报文,通过该报文使源设备获得目标设备的MAC地址信息。为了减少广播量,网络设备通过ARP表在缓存中保存IP与MAC地址的映射信息。在一次ARP 的请求与响应过程中,通信双方都把对方的MAC地址与IP地址的对应关系保存在各自的ARP表中,以在后续的通信中使用。ARP表使用老化机制,删除在一段时间内没有使用过的IP与MAC地址的映射关系。一个最基本的网络拓扑结构:

二层交换机的转发过程描述

二层交换机的转发过程描述 本文将浅谈支持VLAN中二层交换机转发的具体过程,通过图文结合了解VLAN协议802.1Q文档中的帧在数据包中的具体体现。 上图就是二层交换机的具体转发过程,下面对上图中进行具体的阐述。 首先,我们来看一下TPID这个是什么意思? VLAN协议802.1Q文档中的帧在数据包的中的体现为下图: 标签协议识别符(Tag Protocol IdenTIfier,TPID):一组16位元的域其数值被设定在0x8100以用来辨别某个IEEE 802.1Q的帧为已被标签的,而这个域所被标定位置与乙太形式/长度在未标签帧的域相同,这是为了用来区别未标签的帧。通过判断此项的值是否是0x8100就可得出此帧是否是VLAN的帧。 优先权代码点(Priority Code Point,PCP):以一组3位元的域当作IEEE 802.1p优先权的参考,从0(最低)到7(最高),用来对资料流作传输的优先级。 标准格式指示(Canonical Format Indicator,CFI):1位元的域。若是这个域的值为1,则MAC地指则为非标准格式;若为0,则为标准格式;在乙太交换器中他通常默认为0。在以太和令牌环中,CFI用来做为两者的相容。若帧在乙太端中接收资料则CFI的值须设为1,且这个端口不能与未标签的其他端口桥接。 虚拟局域网识别符(VLAN IdenTIfier,VID):12位元的域,用来具体指出帧是属于哪个特定VLAN。值为0时,表示帧不属于任何一个VLAN;此时,802.1Q标签代表优先权。16位元的值0、1、0xFFF为保留值,其他的值都可用来做为小于4094个VLAN的识别符。此项表示VLAN ID的值是多少。 其次,我们来看看支持VLAN的交换表的表项:

TCP数据包的封装与发送

TCP数据包的封装与发送 一、实验目的 1.掌握TCP的工作特点; 2.熟悉TCP数据包的结构; 3.深刻理解网络体系结构中传输层与上下层之间的关系; 二、实验环境 1.PC机一台 2.Windows 操作系统 三、实验准备 1.复习TCP协议的相关内容; 2.熟练掌握TCP数据包中各自段的作用; 四、实验内容(二选一) 1.编写程序构造TCP包结构,并填写各字段,将封装后的TCP包的内容在屏幕上输出并写入指定的文件中; 2.TCP包的数据字段内容额长度自定; 五、实验报告要求 1.报告内容要有主程序的流程图和程序代码; 2.报告内容要有运行结果的截图; 3.对实验过程进行分析,对存在的问题分析。 实验相关代码 #include #include #include #include #include #pragma comment(lib,"ws2_32.lib") //数据结构及宏定义: #define IPVER 4 //IP协议预定 #define MAX_BUFF_LEN 65500 //发送缓冲区最大值 #define DEST_PORT 5050 //目的端口号

#define SOUR_PORT 8080 //源端口号 typedef struct ip_hdr //定义IP首部 { UCHAR h_verlen; //4位首部长度,4位IP版本号UCHAR tos; //8位服务类型TOS USHORT total_len; //16位总长度(字节) USHORT ident; //16位标识 USHORT frag_and_flags; //3位标志位 UCHAR ttl; //8位生存时间TTL UCHAR proto; //8位协议(TCP, UDP 或其他) USHORT checksum; //16位IP首部校验和 ULONG sourceIP; //32位源IP地址 ULONG destIP; //32位目的IP地址 }IP_HEADER; typedef struct tsd_hdr //定义TCP伪首部 { ULONG saddr; //源地址 ULONG daddr; //目的地址 UCHAR mbz; //没用 UCHAR ptcl; //协议类型 USHORT tcpl; //TCP长度 }PSD_HEADER; typedef struct tcp_hdr //定义TCP首部 { USHORT th_sport; //16位源端口 USHORT th_dport; //16位目的端口 ULONG th_seq; //32位序列号 ULONG th_ack; //32位确认号 UCHAR th_lenres; //4位首部长度/6位保留字 UCHAR th_flag; //6位标志位 USHORT th_win; //16位窗口大小 USHORT th_sum; //16位校验和 USHORT th_urp; //16位紧急数据偏移量 }TCP_HEADER; using namespace std; //主要函数: //CheckSum:计算校验和的子函数 USHORT checksum(USHORT *buffer, int size) { unsigned long cksum=0; while(size >1) { cksum+=*buffer++; size -=sizeof(USHORT);

实验7.路由器基本功能实现程序

实验七路由器基本功能的设计和实现 序号:14姓名:邓博文学号:20131120014成绩指导教师:序号:11姓名:叶爽学号:20131120005成绩指导教师:序号:13姓名:徐润浩学号:20131120013成绩指导教师:序号:53姓名:王伟雄学号:20131170029成绩指导教师: 一、实验目的: (1) 实现静态路由表维护 (2) 实现IP数据包处理、处理IP数据包的TTL值、ARP请求与解析、重新计算IP数据包的头部校验值 (3) 熟悉生成和处理ICMP报文的方法 (4) 要求有良好的编程规范与注释信息,要求有详细的说明文档,包括程序的设计思想、活动图、关键问题以及解决方法。 二、实验环境: (1)VC6.0 (2)局域网能连接Internet。 三、程序设计的关键问题以及解决方法有哪些? 1、由于winpcap不提供获得本机MAC地址的方法,导致我们不知道怎样获得本机MAC地址。 解决方法:本程序采用发送ARP包的方式获得本机MAC,即首先发送目的IP 为本机的ARP请求包,再捕获ARP应答包即可获得本机的MAC地址。由函数unsigned char*GetSelfMac()实现,本函数负责获得本机的MAC地址,实现方法是给本机发送ARP请求数据帧,并解析本机的ARP应答数据帧,原理和获取其它主机MAC地址类似,唯一的区别是发送和接受在同一个线程中实现。2、如何更快高速的完成路由器的路由转发功能? 解决方法:建立两个全局的链表,即数据包的缓存列表SP和IP地址、MAC地址映射的缓存列表IP-MAC。数据包缓存列表SP用于存储需要转发但暂时没有下一跳MAC地址的IP数据包;缓存列表IP-MAC用于存储IP地址与MAC地址的映射关系。路由器得到需要转发的数据包后,可以首先在IP-MAC缓存列表查找下一跳的MAC地址,如果找到则转发该数据包,否则把数据包存入缓存队列SP中并向下一跳的MAC地址后再转发该数据包。

数据包与数据帧大小

数据包与数据帧大小

简单的说,你上网打开网页,这个简单的动作,就是你先发送数据包给网站,它接收到了之后,根据你发送的数据包的IP地址,返回给你网页的数据包,也就是说,网页的浏览,实际上就是数据包的交换。 1、数据链路层对数据帧的长度都有一个限制,也就是链路层所能承受的最大数据长度,这个值 称为最大传输单元,即MTU。以以太网为例,这个值通常是1500字节。 2、对于IP数据包来讲,也有一个长度,在IP包头中,以16位来描述IP包的长度,也就是说, 一个IP包,最长可能是65535字节。 3、结合以上两个概念,第一个重要的结论就出来了,如果IP包的大小,超过了MTU 值,那么就需要 分片,也就是把一个IP包分为多个,这个概念非常容易理解,一个载重5T的卡车,要拉10T的货,它 当然就得分几次来拉了。

4、IP分片是很多资料常讲的内容,但是我倒是觉得分不分片其实不重要,重要的是另一个东西。一个 数据包穿过一个大的网络,它其间会穿过多个网络,每个网络的MTU值是不同的。我们可以设想,如果 接受/发送端都是以太网,它们的MTU都是1500,我们假设发送的时候,数据包会以1500来封装,然而, 不幸的是,传输中有一段X.25网,它的MTU是576,这会发生什么呢?我想,这个才是我们所关心的。 当然,结论是显而易见的,这个数据包会被再次分片,咱开始用火车拉,到了半路,不通火车,只通汽车, 那一车货会被分为很多车……仅此而已,更重要的是,这种情况下,如果IP包被设置了“不允许分片标志”,那 会发生些什么呢?对,数据包将被丢弃,然后收到一份ICMP不可达差错,告诉你,需

交换机端口转发规则

交换机端口转发规则一 交换机端口处理过程 HCSE的教材上根本没有讲各种接口接收带TAG的FRAME时候的规则。所以以前老是以为是跟发送的规则一样。走了很多弯路废了好多脑细胞,痛苦啊。跟很多培训过的兄弟交流过都深有同感。 tag就是普通的ethernet报文,报文结构的变化是在源mac地址和目的mac地址之后,加上了4bytes的vlan信息,也就是vlan tag头;untag就是普通的ethernet报文,比tag报文少了4 bytes字节。 情况列举 Switch收发 Switch对标记的处理 remark Access (接收) Tagged = PVID 不接收 (注:部分高端产品可能接收。) Access (接收) Tagged =/ PVID 不接收 (注:部分高端产品可能接收。) Access (接收) Untagged 接收增加tag=PVID 从PC Access (发送) Tagged = PVID 转发删除tag Access (发送) Tagged =/ PVID 不转发不处理 Access (发送) Untagged 无此情况无此情况无此情况 Trunk (接收) Tagged = PVID 接收不修改tag Trunk (接收) Tagged =/ PVID 接收不修改tag Trunk (接收) Untagged 接收增加tag=PVID Trunk (发送) Tagged = PVID If Passing then 转发删除tag Trunk (发送) Tagged =/ PVID If Passing then 转发不修改tag Trunk (发送) Untagged 无此情况无此情况无此情况(注) Hybrid (接收) Tagged = PVID 接收不修改tag 对端是trunk Hybrid (接收) Tagged =/ PVID 接收不修改tag 对端是trunk Hybrid (接收) Untagged 接收增加tag=PVID 类Trunk Hybrid (发送) Tagged = PVID Tag 和 untag 中列出的vlan可以passing 看Tag项和untag项 Hybrid (发送) Tagged =/ PVID Tag 和 untag 中列出的vlan可以passing 看Tag项和untag项 Hybrid (发送) Untagged 无此情况无此情况无此情况(注) 我来解释一下 收报文: Acess端口1、收到一个报文,判断是否有VLAN信息:如果没有则打上端口的PVID,并进行交换转发,如果有则直接丢弃(缺省) 发报文: Acess端口: 1、将报文的VLAN信息剥离,直接发送出去 收报文: trunk端口: 1、收到一个报文,判断是否有VLAN信息:如果没有则打上端口

实验:路由器转发数据包

拓扑图 实验内容 原理:IP数据包由路由器在网络之间转发,路由器会检查自己的路由表,查找通往目的网络的下一跳,如果路由表有相应的路径,路由器会将数据包转发到指示下一跳的接口上。如果路由表中没有相对应的路径,但有默认路径,路由器会将数据包转发到默认路径所指示的接口上。如果路由表中没有相对应的路径,也没有默认路径,路由器就会丢弃该数据包。 环境: 三个LAN 网络 连接 主机 主机IP 10.1.1.0/24 路由器0 PC_A 10.1.1.1 10.1.2.0/24 路由器1 PC_C 10.1.2.1 10.1.3.0/24 路由器2 PC_B 10.1.3.1 路由器间连接 设备 接口 IP地址 连接到 接口 IP地址 路由器0 S0/0/0 192.168.1.1/24路由器1 S0/0/0 192.168.1.2/24路由器0 S0/0/1 192.168.2.1/24路由器2 S0/0/0 192.168.2.2/24路由器路由表信息 路由器0: 目的网络 下一跳 接口 10.1.1.0/24 直连 Fa0/0 192.168.1.0/24 直连 S0/0/0 192.168.2.0/24 直连 S0/0/1 10.1.2.0/24 192.168.1.2 S0/0/0 0.0.0.0(默认) 192.168.2.2 S0/0/1 路由器1: 目的网络 下一跳 接口 10.1.2.0/24 直连 Fa0/0 M a H J

目的网络 下一跳 接口 10.1.3.0/24 直连 Fa0/0 192.168.2.0/24 直连 S0/0/0 任务1:测试PC_A 访问PC_C,运行模拟 1. 单击 Simulation(模拟)按钮进入模拟模式 2. 单击“Add Simple PDU ”添加简单PDU 工具,单击PC_A 主机再单击PC_C 主机,添加简 单的PC_A ping PC_C 主机的测试 3. 单击“Edit Filters ”编辑事件过滤器,我们只查看ICMP 信息 M a H J

交换机转发数据包过程

二层网络的数据包转发过程模拟 2012-01-07 13:22 拓扑如下: P C0如果需要去p i n g P C1时,过程如下描述: 1、P C0产生I C M P回应请求包 2、送往I P协议给予封装 3、I P协议判断目的地址I P是本地网络,还是远程网络 4、判断是本地,则封包发到交换机; 判断是远程,则发送到默认网关,若无则丢弃报文 5、因为不知道默认网关的M A C地址,所以广播A R P报文,获取默认网关的M A C 6、知道网关M A C,则将I P数据包封装到数据帧中,发往交换机 注意:当P C0将数据包送到交换机,交换机将记录下来的源地址的M A C 上述过程是一个只有一个V L A N的交换机,很简单。

上面这个拓扑是有两个V L A N的,并且设置了V L A N的I P地址V L A N1192.168.1.1255.255.255.0 V L A N2192.168.2.1255.255.255.0 将P C0放入V L A N1,P C1放入V L A N2 P C0p i n g V L A N1的地址如上过程一样 P C0p i n g V L A N2的过程如下所述 1、产生I C M P回应请求报文 2、封装到I P协议 3、I P协议判断是远程网络,送往默认网关 4、到网关后,从底层开始解包 5、三层信息无法解析,因为该设备是二层设备,直接丢弃 得到一个信息:V L A N的M A C都是一样的 拓扑如下:

三层交换机划分了两个V L A N,和上面一样的V L A N,P C4属于V L A N2的 V L A N1192.168.1.253 V L A N2192.168.2.253 P C0的默认网关指向三层设备 P C0p i n g P C4过程如下描述: 1、产生I C M P回应请求报文 2、送入I P协议封装起来 3、I P协议判定是远程网络,送入网关 4、A R P广播获取网关M A C 5、重新产生I C M P,封装到I P 6、经过二层交换机,数据包内容不变 7、当数据包到达三层设备,开始解包 8、解析三层信息,进行路由选择 9、不知道目的I P的M A C地址 10、A R P广播获取 11、三层记录A R P,M A C信息 12、三层路由信息选择V L A N2直连接口 13、数据帧的源M A C是三层设备,而它的M A C只能有一个,所以多个V L A N的M A C是一样的。不同的设备产生的M A C肯定不一样的 这里讲的是一个设备 14、数据包进入目的地址

相关文档
最新文档