假设要发送的信息 D 有 d 比特。在偶校验方案中,发送方只需包含一个附加的比特,选择它的值,使得这 d+1 比特中 1 的总数是偶数。对于奇校验方案,选择校验比特值使得有奇数个 1。单个校验比特被存放在一个单独的字段中。
采用单个奇偶校验位方式。接收方的操作也很简单。接收方只需要数一数接收的 d + 1 比特中 1 的数目即可。如果在采用偶校验方案中发现了奇数个值为 1 的比特,接收方知道至少出现了一个比特差错。更精确的说法是,出现了奇数个比特差错。
二维奇偶校验
单比特奇偶校验方案的二维一般化方案。这里 D 中的 d 个比特被划分为 i 行 j 列。对每行和每列计算奇偶值。产生的 i+j+1 奇偶比特构成了链路层帧的差错检测比特。现在假设在初始 d 比特信息中出现了列单个比特差错。使用这种二维奇偶校验方案,包含比特值改变的列和行的校验值都将会出现差错。因此接收方不仅可以检测到出现了单个比特差错的事实,而且还可以利用存在奇偶校验差错的列和行的索引来实际识别发生差错的比特并纠正它!
点对点链路(point-to-point link)由链路一端的单个发送方和链路另一端的单个接收方组成。许多链路层协议都是为点对点链路设计的,如点对点协议 (point-to-point protocol, PPP)和高级数据链路控制(high-level data link control HDLC)就是两种这样的协议。
在随机接入协议中,一个传输节点总是以信道的全部速率(即 R bps ) 进行发送,当有碰撞时,涉及碰撞的每个节点反复地重发它的帧(也就是分组),到该帧无碰撞地通过为止。但是当一个节点经历一次碰撞时,它不必立刻重发该帧。相反,它在重发该帧之前等待一个随机时延。涉及碰撞的每个节点独立地选择随机时延。因为该随机时延是独立地选择的,所以下述现象是有可能的:这些节点之一所选择的时延充分小于其他碰撞节点的时延,并因此能够无碰撞地将它的帧在信道中发出。
时隙 ALOHA
所有帧由 L 比特组成
时间被划分成长度为 L/R 秒的时隙。
节点只在时隙起点开始传输帧。
节点是同步的。每个节点都知道时隙何时开始。
如果在一个时隙中有两个或者更多个帧碰撞。则所有节点在该时隙结束之前检测到该碰撞事件。令 p 是一个概率,即一个在 0 和 1 之间的数。在每个节点中,时隙 ALOHA 的操作是简单的。
因为网络寻址通常是分层次的(不像 MAC 寻址那样是扁平的),即使当网络中存在冗余路径时,分组通常也不会通过路由器循环。(然而,当路由器表被误配置时,分组可能循环;IP 用一个特殊的报文首部字段来限制循环。)所以,分组就不会被限制到一棵生成树上,并可以使用源和目的地之间的最佳路径。因为路由器没有生成树限制,所以它们允许以丰富的拓扑结构构建因特网,例如包括欧洲和北美之间的多条活跃链路。路由器的另一个特色是它们对第二层的广播风暴提供了防火墙保护。尽管也许路由器最重要的缺点就是它们不是即插即用的,即路由器和连接到它们的主机都需要人为地配置 IP 地址 C 而且路由器对每个分组的处理时间通常比交换机更长,因为它们必须处理高达第三层的字段。
通常,由几百台主机组成的小网络通常有几个局域网网段。对于这些小网络、交换机就足够了,因为它们不要求 IP 地址的任何配置就能使流量局部化并增加总计吞吐量。但是在由几千台主机组成的更大网络中,通常在网络中(除了交换机之外)还包括路由器。路由器提供了更健壮的流量隔离方式和对广播风暴的控制,并在网络的主机之间使用更智能的路由。
在该等级结构的顶端,边界路由器与接入路由器相连。在每台接入路由器下面,有 3 层交换机。每台接入路由器与一台第一层交换机相连,每台第一层交换机与多台第二层交换机以及一台负载均衡器相连。每台第二层交换机又通过机架的 TOR 交换机(第三层交换机)与多个机架相连。所有链路通常使用以太网作为链路层和物理层协议,并混合使用铜缆和光缆。通过这种等级式设计,可以将数据中心扩展到几十万台主机的规模。
一名学生 Bob 将他的便携机与学校的以太网交换机相连,下载一个 Web 页面(比如说 www.google.com主页)。
Bob 便携机上的操作系统生成一个 DHCP 请求报文,并将这个报文放入具有目的端口 67(DHCP 服务器)和源端口 68(DHCP 客户)的 UDP 报文段,该 UDP 报文段则被放置在一个具有广播 IP 目的地址(255.255.255.255)和源 IP 地址 0.0.0.0 的 IP 数据报中(4.3.I 节),因为 Bob 的便携机还没有一个 IP 地址。
包含 DHCP 请求报文的 IP 数据报则被放置在以太网帧中。该以太网帧具有目的 MAC 地址 FF:FF:FF:FF:FF:FF,使该帧将广播到与交换机连接的所有设备;该帧的源 MAC 地址是 Bob 便携机的 MAC 地址 00:I6:D3:23:68:8A。
包含 DHCP 请求的广播以太网帧是第一个由 Bob 便携机发送到以太网交换机的帧。该交换机在所有的出端口广播入帧,包括连接到路由器的端口。
路由器在它的具有 MAC 地址 00:22:6B:45:1F 的接口接收到该广播以太网帧,该帧中包含 DHCP 请求、并且从该以太网帧中抽取出 IP 数据报。该数据报的广播 IP 目的地址指示了这个 IP 数据报应当由在该节点的高层协议处理,因此该数据报的载荷(一个 UDP 报文段)被分解向上到达 UDP,DHCP 请求报文从此 UDP 报文段中抽取出来。此时 DHCP 服务器有了 DHCP 请求报文。
我们假设运行在路由器中的 DHCP 服务器能够以 CIDR 块 68.85.2.0/24 分配 IP 地址)所以本例中,在学校内使用的所有 IP 地址都在 Comcast 的地址块中。我们假设 DHCP 服务器分配地址 68.85.2.101 给 Bob 的便携机。DHCP 服务器生成包含这个 IP 地址以及 DNS 服务器的 IP 地址(68.87.71.226)、默认网关路由器的 IP 地址(68.85.2.l)。和子网块(68.85.2.0/24)(等价为“网络掩码")的一个 DHCP ACK 报文该 DHCP 报文被放入一个 UDP 报文段中,UDP 报文段被放人一个 IP 数据报中,IP 数据报再被放入一个以太网帧中。这个以太网帧的源 MAC 地址是路由器连到归属网络时接口的 MAC 地址址(00:22:6B:45:1F:1B),目的 MAC 地址是 Bob 便携机的 MAC 地址
包含 DHCP ACK 的以太网帧由路由器发送给交换机。因为交换机是自学习的、并且先前从 Bob 便携机收到(包含 DHCP 请求的)以太网帧,所以该交换机知道寻址到 00:16:03:23:68:8A 的帧仅从通向 Bob 便携机的输出端口转发。
Bob 便携机接收到包含 DHCPACK 的以太网帧,从该以太网帧中抽取 IP 数据报,从 IP 数据报中抽取 UDP 报文段,从 UDP 报文段抽取 DHCPACK 报文。Bob 的 DHCP 客户则记录下它的 IP 地址和它的 DNS 服务器的 IP 地址。它还在其 IP 转发表中安装默认网关的地址。Bob 便携机将向该默认网关发送目的地址为其子网 68.85.2.0/24 以外的所有数据报。此时,Bob 便携机已经初始化好它的网络组件,并准备开始处理 Web 网页获取。
Bob 便携机上的操作系统因此生成一个 DNS 查询报文,将字符串 www.google.com 放入 DNS 报文的问题段中。该 DNS 报文则放置在一个具有 53 号(DNS 服务器)目的端口的 UDP 报文段中。该 UDP 报文段则被放入具有 IP 目的地址 68.87.71.226 和源 IP 地址 68.85.2.101 的 IP 数据报中。
Bob 便携机则将包含 DNS 请求报文的数据报放入一个以太网帧中.该帧将发送(在链路层寻址)到 Bob 学校网络中的网关路由器。然而,即使 Bob 便携机经过上述第 5 步中的 DHCPACK 报文知道了学校网关路由器的 IP 地址(68.85.2.1),但仍不知道该网关路由器的 MAC 地址。为了获得该网关路由器的 MAC 地址,Bob 便携机将需要使用 ARP 协议。
Bob 便携机生成一个具有目的 lP 地址 68.85.2.1(默认网关)的 ARP 查询报文,将该 ARP 报文放置在一个具有广播目的地址(FF:FF:FF:FF:FF:FF)的以太网帧中,并向交换机发送该以太网帧,交换机将该帧交付给所有连接的设备,包括网关路由器。
网关路由器在通往学校网络的接口上接收到包含该 ARP 查询报文的帧,发现在 ARP 报文中目标 IP 地址 68.85.2.1 匹配其接口的 IP 地址。网关路由器因此准备一个 ARP 回答,指示它的 MAC 地址 00:22:6B:45:1F:1B 对应 IP 地址 68.85.2.1~它将 ARP 回答放在一个以太网帧中,其目的地址为 00:16:D3:23:68:8A(Bob 便携机),并向交换机发送该帧,再由交换机将帧交付给 Bob 便携机。
Bob 便携机接收包含 ARP 回答报文的帧并从 ARP 回答报文中抽取网关路由器的 MAC 地址(00:22:6B:45:1F:1B)
Bob 便携机现在(最终!)能够使包含 DNS 查询的以太网帧寻址到网关路由器的 MAC 地址。注意到在该帧中的 IP 数据报具有 IP 目的地址 68.87.71.226(DNS 服务器),而该帧具有目的地址 00:22:68:45:1F:1B(网关路由器)。Bob 便携机向交换机发送该帧,交换机将该帧交付给网关路由器。
网关路由器接收该帧并抽取包含 DNS 查询的 IP 数据报。路由器查找该数据报的目的地址(68.87.71.226),并根据其转发表决定该数据报应当发送到 Comcast 网络中最左边的路由器 IP 数据报放置在链路层帧中,该链路适合将学校路由器连接到最左边 Comcast 路由器,并且该帧经这条链路发送。
在 Comcast 网络中最左边的路由器接收到该帧,抽取 IP 数据报,检查该数据报的目的地址(68.87.71.226),并根据其转发表确定出接口,经过该接口朝着 DNS 服务器转发数据报,而转发表己根据 Comcast 的域内协议(如 RIP、OSPF 或 IS-IS)以及因特网的域间协议 BGP 所填写。
最终包含 DNS 查询的 IP 数据报到达了 DNS 服务器。DNS 服务器抽取出 DNS 查询报文,在它的 DNS 数据库中查找名字www.google.com,找到包含对应www.google.com的IP地址(64.233.169.105)的DNS源记录,前面讲过这种缓存数据源于google.com的权威DNS服务器。该DNS服务器形成了一个包含这种主机名到IP地址映射的DNS回答报文,将该DNS回答报文放入UDP报文段中,该报文段放入寻址到Bob便携机(68.85.2.101)的IP数据报中。该数据报将通过Comcast网络反向转发到学校的路由器,并从这里经过以太网交换机到Bob便携机。
Bob 便携机从 DNS 报文抽取出服务器www.google.com的IP地址。最终,在大量工作后,Bob便携机此时准备接触www.google.com服务器!
既然 Bob 便携机有了www.google.com的IP地址,它能够生成TCP套接字(2.7节),该套接字将用于向吓叩.google.com发送HTTPGET报文(2.2.3节)。当Bob生成TCP套接字时,在Bob便携机中的TCP必须首先与www.google.com中的TCP执行三次握手。Bob 便携机因此首先生成一个具有目的端口 80(针对 HTTP 的)的 TCP SYN 报文段,将该 TCP 报文段放置在具有目的 1P 地址 64.233.169.105(www.google.com)的IP数据报中,将该数据报放置在MAC地址为00:22:68:45:1F:1B(网关路由器)的帧中,并向交换机发送该帧.
最终,包含 TCPSYN 的数据报到达www.googole.com0从数据报抽取出TCPSYN报文并分解到与端口80相联系的欢迎套接字。对于谷歌HTTP服务器和Bob便携机之间的TCP连接生成一个连接套接字。产生一个TCP SYN ACK 报文段,将其放入向 Bob 便携机寻址的一个数据报中,最后放入链路层帧中,该链路适合将www.google.com连接到其第一跳路由器。
包含 TCP SYN ACK 报文段的数据报通过谷歌、Comcast 和学校网络,最终到达 Bob 便携机的以太网卡,数据报在操作系统中分解到步骤 18 生成的 TCP 套接字,从而进入连接状态。
借助于 Bob 便携机上的套接字,现在(终于!)准备向www.googJe.com发送字节HTTP GET 报文则写入套接字,其中 GET 报文成为一个 TCP 报文段的载荷。该 TCP 报文段放置进一个数据报中,并交付到www.google.com,如前面步骤18-20所述。
在www.google.com的HTTP服务器从TCP套接字读取HTTP GET 报文,生成一个 HTTP 响应报文,将请求的 Web 页内容放入 HTTP 响应体中,并将报文发送了,Bob 的浏览器生成包含要获取的 URL 的 HTTPGET 报文进 TCP 套接字中。
包含 HTTP 回答报文的数据报通过谷歌、Comcast 和学校网络转发,到达 Bob 便携机。Bob 的 Web 浏览器程序从套接字读取 HTTP 响应,从 HTTP 响应体中抽取 Web 网页的 html, 并最终(终于!)显示了 Web 网页。