networking中的数据包stream

我无法想象networkingstream量。 例如。 如果局域网中有15台电脑

  • 当数据包从路由器到本地局域网时,是否通过所有的计算机?
  • 它是否到达每台计算机的以太网卡,并且这些计算机根据它们的物理地址接受数据包?
  • 数据包将会先到哪个pc? 到最近的路由器? 如果第一台电脑捕捉到这个数据包会发生什么(虽然不是这样)?
  • 当一台电脑播放一条消息时会发生什么? 是否必须为所有PC产生14个数据包,或者只有一个数据包到达所有PC? 如果它是一个包,并被第一台PC捕获,其他PC如何获得?

我无法想象这个stream量是如何stream动的? 可能是我的比喻是完全错误的。 有人可以解释我吗?

确切的程序取决于networking的types,拓扑结构和设备。 我将尝试描述与大多数以太网相关的过程。

条款

  • MAC地址 :就像社会安全号码一样。 它不会随着你的移动而改变
  • IP地址 :就像地址一样,当你移动(长距离)时,它会改变。
  • TCP数据包 :带有TCP端口信息的数据(有时也称为TCP段)
  • IP数据报 :带有IP信息的数据
  • 以太网帧 :带有MAC信息的数据

IP地址分为networking和节点两部分。 您在计算机或路由器上configuration的子网决定IP地址所在的networking。 您需要使用IP地址(和子网)configuration接口才能路由到该接口。

根据您的路由器,接收数据包时可能会发生以下几种情况:

家庭路由器( NAT网关)

  1. 数据包进入路由器
  2. 路由器从IP数据报中提取IP地址
  3. 路由器检查目的地,3.如果地址不是当前路由器,它通常会丢弃数据包(如果多于NAT网关,请阅读以下内容)
  4. 路由器从数据包中提取端口号5路由器检查转发表以查看该端口是否与内部IP地址相关联
  5. 如果是:交付(见下文)
  6. 否则:丢弃

真正的路由器

  1. 数据包进入路由器
  2. 路由器从IP数据报中提取IP地址
  3. 路由器检查它是否是目标IPnetworking的一部分
  4. 如果是的话:交付(见下文)
  5. 否则,请检查TTL (同样来自IP数据报)以查看是否应该丢弃或发信号为无法传送。
  6. 如果仍然可交付,请检查路由表是否为networking目的地,如果已知则将其转发到下一个路由器。
  7. 否则,将其转发到默认网关,丢弃数据包,或发送一个无法传送的ICMP响应。 (取决于configuration)

交付(以太网)

  1. 路由器检查IP地址是否在其ARP表中(IP地址到MAC地址)。
  2. 如果不是,则发送一个ARP请求来定位MAC地址。
  3. 一旦收到ARP响应,将数据包发送到该MAC地址。

ARP请求是一个广播帧,所以每台计算机都可以看到这个请求。 如果没有回应,可能会默默地放弃或回应。 路由器只发送一帧用于广播(如果它也是桥接的,则可以在桥接器的每个接口上发送)。 要发送广播帧,有一个称为广播地址的特殊地址 。 在以太网上,地址是FF:FF:FF:FF:FF:FF(二进制全1)。

网桥(包括交换机)将广播帧指向FF:FF:FF:FF:FF:FF,并将其发送到每个端口。 某些网桥(如pipe理型交换机)自己跟踪ARP请求,以便它们不需要广播,只需回复ARPcaching中的内容即可。 防火墙可以configuration为阻止这些广播,但是可能会对IPnetworking产生递减效果(防火墙的两端不能在没有路由器的情况下相互通话)。

从路由器到节点取决于硬件(通常是网桥,交换机或集线器)

网桥从一个端口接收事物input,并将其发送到一个(或多个)端口。 从技术上讲,交换机是桥梁,但防火墙或无线接入点也是桥梁。

开关

交换机会记住哪个端口有哪个MAC地址。 (通常,它会从ARP响应中学习)。 交换机将把帧(包含一个数据包)发送到目的端口。 在极less数情况下,交换机不知道MAC地址,它的行为就像一个集线器,并将信息发送到每个地址。

枢纽

集线器不记得哪个端口有MAC地址。 集线器将始终将帧发送到每个端口。 有很多问题(如碰撞)与集线器相关联。

交付(再次)

最后,此时帧将一直持续到集线器和交换机,直到它到达目的地或被丢弃。 像STP这样的东西存在,以防止它永远转发。

我可以build议你阅读维基百科关于以太网的优秀文章系列吗?

对于互联网上的数据包是如何工作的一个非常简单,但很好的概述,有一个老的animation电影,描述得很好。 短片很好地完成了,非技术types的一个很好的介绍。 去网上战士并寻找电影链接。

首先确保你对OSI模型图层有一个很好的把握。 在这种情况下,特别是第2层(数据链路层)和第3层(networking层)。 由于我们正在谈论LAN上的数据包stream – 我们主要是在谈论Layer 2。

计算机通常插入networking交换机(这是第2层设备)。 因此,交换机将只发送数据包到特定物理目标端口,该端口具有PC的第二层硬件地址(MAC地址),该数据包的目的地址是注册在交换机的MAC地址表中。

(曾经有集线器,数据包将被发送到所有的计算机,而计算机只是忽略那些不注定的数据包 – 这些都不是很常见)

即使在局域网级别,也要掌握很多数据包stream。 OSI模型将帮助您组织这些信息,直到您有足够的信息将它们放在一起。

答案是“这要看情况”。 然而,今天最常见的答案是更精确一点。 在大多数当前的系统中,路由器连接到交换机。 路由器LAN上的任何PC也可能通过中间交换机连接到该交换机。 交换机知道连接到哪个MAC地址,并且可以询问(通过ARP请求)谁拥有数据包目的地的IP地址。 一旦知道,它知道在哪里发送数据包。 广播数据包将发送到所有交换机的端口。

在共享介质的情况下(旧式集线器),有点不同,因为连接到集线器的所有系统都会看到每个数据包,但是networking堆栈通常设置为忽略未广播的数据包,或发送到系统的IP地址。 但现在这种情况已经不常见了,因为大多数networking使用交换机而不是集线器。

看看你是否可以得到一个思科包示踪剂的副本。 学习这些东西真的很方便。