admin 管理员组文章数量: 887016
1. L2转发,L3转发
网络传输中,每个节点会根据分组数据的地址信息,来判断该报文应该由哪个网卡发送出去。为此,各个地址会参考一个发出接口列表。在这一点上 MAC 寻 址与IP 寻址是一样的。只不过MAC 寻址中所参考的这张表叫做地址转发表,而 IP 寻址中所参考的叫做路由控制表。MAC 地址转发表中所记录的是实际的 MAC 地址本身,而路由表中记录的 IP 地址则是集中了之后的网络号。
2. 网络的构成要素
搭建一套网络环境要涉及各种各样的电缆和网络设备。在此仅介绍连接计算 机与计算机的硬件设备。
3. 网络设备
-
网卡
主机的每个端口有一个网卡。每个网卡有一个MAC地址。网卡的MAC地址是出厂设置好的,不可变的。
网卡的IP地址是软件层面分配得到的,是可变的。 -
中继器
放在链路中间,起信号放大作用。中继器两边的链路速率必须一致。
集线器就是多个中继器组合成的产物。
-
网桥/L2交换机
网桥支持存储转发,即先将端口输入的帧存储起来,再对收集的帧依次进行分析,处理,转发。故,可以连接不同速率链路。
网桥的转发依据目的MAC地址结合自身的地址转发表实现。
网桥自身的地址转发表采用自学习方式建立。
- 路由器/L3交换机
路由器负责为不同网络间建立连接,路由器从端口收到帧后,存储,处理,转发。
转发时依据目的IP地址,结合自身路由表来实现。
自身路由表通过路由协议来建立与维持。
-
4,7层交换机
也可通过软件实现,主要实现负载均衡,流量控制,防火墙等功能。 -
网关
也可通过软件实现,主要实现协议转换功能。防火墙,代理等也可算作网关。
2.5 TCP/IP 分层模型与通信示例
2.5.1 数据包首部
包可以说是全能性述语。帧用于表示数据链路层中包的单位。而数据报是IP和UDP等网络层以上的分层中包的单位。段则表示TCP数据
流中的信息。最后,消息是指应用协议中数据的单位。
2.5.2 发送数据包
假设甲给乙发送电子邮件,内容为:“早上好”。而从TCP/IP 通信上看,是 从一台计算机 A 向另一台计算机B 发送电子邮件。我们就通过这个例子来讲解一 下TCP/IP 通信的过程。
-
应 用 程 序 处 理
启动应用程序新建邮件,将收件人邮箱填好,再由键盘输入邮件内容“早上 好”,鼠标点击“发送”按钮就可以开始TCP/IP 的通信了。
首先,应用程序中会进行编码处理。例如,日文电子邮件使用ISO-2022-JP 或UTF-8 进行编码。这些编码相当于 OSI 的表示层功能。
编码转化后,实际邮件不一定会马上被发送出去,因为有些邮件的软件有一 次同时发送多个邮件的功能,也可能会有用户点击“收信”按钮以后才一并接收 新邮件的功能。像这种何时建立通信连接何时发送数据的管理功能,从某种宽泛 的意义上看属于 OSI参考模型中会话层的功能。应用在发送邮件的那一刻建立 TCP连接,从而利用这个 TCP连接发送数据。 它的过程首先是将应用的数据发送给下一层的 TCP,再做实际的转发处理。 -
TCP 模块的处理
TCP 根据应用的指示”,负责建立连接、发送数据以及断开连接。TCP 提供 将应用层发来的数据顺利发送至对端的可靠传输。
为了实现TCP的这一功能,需要在应用层数据的前端附加一个TCP首部。 TCP 首部中包括源端口号和目标端口号(用以识别发送主机跟接收主机上的应 用)、序号(用以发送的包中哪部分是数据)以及校验和”(用以判断数据是否被 损坏)。随后将附加了TCP 首部的包再发送给 IP。 -
IP 模块的处理
IP将TCP传过来的TCP首部和 TCP 数据合起来当做自己的数据,并在 TCP 首部的前端在加上自己的IP首部。因此,IP 数据包中IP 首部后面紧跟着 TCP 首 部,然后才是应用的数据首部和数据本身。IP首部中包含接收端IP地址以及发送 端IP 地址。紧随IP 首部的还有用来判断其后面数据是TCP 还是UDP 的信息。IP 包生成后,参考路由控制表决定接受此 IP 包的路由或主机。随后,IP 包 将被发送给连接这些路由器或主机网络接口的驱动程序,以实现真正发送数据。如果尚不知道接收端的 MAC 地址,可以利用 ARP(Address Resolution Protocol) 查找。只要知道了对端的 MAC 地址,就可以将 MAC 地址和 IP地址交 给以太网的驱动程序,实现数据传输。 -
网络接口(以太网驱动)的处理
从IP 传过来的IP 包,对于以太网驱动来说不过就是数据。给这数据附加上 以太网首部并进行发送处理。以太网首部中包含接收端 MAC 地址、发送端 MAC 地址以及标志以太网类型的以太网数据的协议。根据上述信息产生的以太网数据 包将通过物理层传输给接收端。发送处理中的 FCS”由硬件计算,添加到包的最 后。设置FCS的目的是为了判断数据包是否由于噪声而被破坏。
2.5.4 数据包接收处理
包的接收流程是发送流程的逆序过程。
-
网络接口(以太网驱动)的处理
主机收到以太网包以后,首先从以太网的包首部找到 MAC 地址判断是否为发 给自己的包。如果不是发给自己的包则丢弃数据”。
而如果接收到了恰好是发给自己的包,就查找以太网包首部中的类型域从而 确定以太网协议所传送过来的数据类型。在这个例子中数据类型显然是 IP 包 , 因 此再将数据传给处理 IP 的子程序,如果这时不是 IP 而是其他诸如 ARP 的 协 议 , 就把数据传给 ARP 处理。总之,如果以太网包首部的类型域包含了一个无法识别 的协议类型,则丢弃数据。 -
IP 模块的处理
IP 模块收到IP 包首部及后面的数据部分以后,也做类似的处理。如果判断得 出包首部中的IP 地址与自己的IP 地址匹配,则可接收数据并从中查找上一层的 协议。如果上一层是 TCP 就 将IP 包首部之后的部分传给 TCP 处理;如果是 UDP 则将IP 包首部后面的部分传给 UDP处理。对于有路由器的情况下,接收端地址 往往不是自己的地址,此时,需要借助路由控制表,在调查应该送达的主机或路 由器以后再转发数据。 -
TCP 模块的处理
在 TCP 模块中,首先会计算 一 下校验和,判断数据是否被破坏。然后检查是 否在按照序号接收数据。最后检查端口号,确定具体的应用程序。数据接收完毕后,接收端则发送一个“确认回执”给发送端。如果这个回执 信息未能达到发送端,那么发送端会认为接收端没有接收到数据而一直反复发送。数据被完整地接收以后,会传给由端口号识别的应用程序。 -
应用程序的处理
接收端应用程序会直接接收发送端发送的数据。通过解析数据可以获知邮件 的收件人地址是乙的地址。如果主机B 上没有乙的邮件信箱,那么主机B 返回给 发送端一个“无此收件地址”的报错信息。但在这个例子中,主机 B 上恰好有乙的收件箱,所以主机 B 和收件人乙能够 收到电子邮件的正文。邮件会被保存到本机的硬盘上。如果保存也能正常进行, 那么接收端会返回一个“处理正常”的回执给发送端。反之, 一旦出现磁盘满、 邮件未能成功保存等问题,就会发送一个“处理异常”的回执给发送端。由此,用户乙就可以利用主机 B 上的邮件客户端,接收并阅读由主机 A 上的 用户甲所发送过来的电子邮件——“早上好”。
3.1. 数据链路的作用
3.2. 数据链路相关技术
3.2.1 MAC地址
MAC 地址长48比特,结构如图3.5所示。在使用网卡 (NIC) 的情况下, MAC 地址一般会被烧人到 ROM 中。因此,任何一个网卡的MAC 地址都是唯一 的,在全世界都不会有重复。
3.2.2 共享介质型网络
从通信介质(通信介质)的使用方法上看,网络可分为共享介质型和非共 享介质型。
共享介质型网络指由多个设备共享一个通信介质的一种网络。最早的以太网 和 FDDI 就是介质共享型网络。在这种方式下,设备之间使用同一个载波信道进 行发送和接收。为此,基本上采用半双工通信方式,并有必要对介质进行访问控制。
共享介质型网络中有两种介质访问控制方式: 一种是争用方式,另一种是令 牌传递方式。
- 争用方式
争用方式 (Contention) 是指争夺获取数据传输的权力,也叫 CSMA (载波监 听多路访问)。这种方法通常令网络中的各个站”采用先到先得的方式占用信道发 送数据,如果多个站同时发送帧,则会产生冲突现象。也因此会导致网络拥堵与 性能下降。
在一部分以太网当中,采用了改良CSMA 的另一种方式——CSMA/CD* 方 式。CSMA/CD要求每个站提前检查冲突, 一旦发生冲突,则尽早释放信道。其具 体工作原理如下:
。如果载波信道上没有数据流动,则任何站都可以发送数据。
。检查是否会发生冲突。 一旦发生冲突时,放弃发送数据”,同时立即释放 载波信道。
。放弃发送以后,随机延时一段时间,再重新争用介质,重新发送帧。
- 令牌传递方式
令牌传递方式是沿着令牌环发送一种叫做“令牌”的特殊报文,是控制传输 的一种方式。只有获得令牌的站才能发送数据。这种方式有两个特点: 一是不会 有冲突,二是每个站都有通过平等循环获得令牌的机会。因此,即使网络拥堵也 不会导致性能下降。
3.2.3 非共享介质网络
在这种方式下,网络中的每个站直连交换机,由交换机负责转发数据帧。此方式 下,发送端与接收端并不共享通信介质,因此很多情况下采用全双工通信方式 。通过 以太网交换机构建网络,从而使计算机与交换机端口之间形成一对一的连接,即 可实现全双工通信。在这种一对一连接全双工通信的方式下不会发生冲突,因此 不需要 CSMA/CD 的机制就可以实现更高效的通信。该方式还可以根据交换机的高级特性构建虚拟局域网 (VLAN,Virtual LAN)" 、 进行流量控制等。当然,这种方式也有一个致命的弱点,那就是一旦交 换机发生故障,与之相连的所有计算机之间都将无法通信。
3.2.4 根据 MAC 地址转发
以太网交换机就是持有多个端口”的网桥。它们根据数据链路层中每个帧的 目标 MAC 地址,决定从哪个网络接口发送数据。这时所参考的、用以记录发送接 口的表就叫做转发表 (Forwarding Table)。
这种转发表的内容不需要使用者在每个终端或交换机上手工设置,而是可以 自动生成。数据链路层的每个通过点在接到包时,会从中将源 MAC 地址以及曾经 接收该地址发送的数据包的接口作为对应关系记录到转发表中。以某个 MAC 地址 作为源地址的包由某一接口接收,实质上可以理解为该 MAC 地址就是该接口的目 标。因此也可以说,以该 MAC 地址作为目标地址的包,经由该接口送出即可。这 一过程也叫自学过程。
由于 MAC 地址没有层次性”,转发表中的入口个数与整个数据链路中所有网 络设备的数量有关。当设备数量增加时,转发表也会随之变大,检索转发表所用 的时间也就越来越长。当连接多个终端时,有必要将网络分成多个数据链路,采 用类似于网络层的 IP地址一样对地址进行分层管理。
交换机转发方式:
交换机转发方式有两种, 一种叫存储转发,另一种叫直通转发。
存储转发方式检查以太网数据帧末尾的FCS”位后再进行转发。因 此,可以避免发送由于冲突而被破坏的帧或噪声导致的错误帧。
直通转发方式中不需要将整个帧全部接收下来以后再进行转发。只 需要得知目标地址即可开始转发。因此,它具有延迟较短的优势。但同 时也不可避免地有发送错误帧的可能性。
3.2.5 环路检测技术
通过网桥连接网络时, 一旦出现环路该如何处理?这与网络的拓扑结构和所 使用的网桥种类有直接关系。最坏的情况下,数据帧会在环路中被一而再再而三 地持续转发。而一旦这种数据帧越积越多将会导致网络瘫痪。
为此,有必要解决网络中的环路问题。具体有生成树与源路由两种方式。如 果使用具有这些功能的网桥,那么即使构建了一个带有环路的网络,也不会造成 那么严重的问题。只要搭建合适的环路,就能分散网络流量,在发生某一处路由 故障时选择绕行,可以提高容灾能力。
- 生成树方式
每个网桥必须在每1~10秒内相互交换 BPDU (Bridge Protocol Data Unit) 包,从而判断哪些端口使用哪些不使用,以便消除环 路。 一旦发生故障,则自动切换通信线路,利用那些没有被使用的端口继续进行 传输。
例如,以某一个网桥为构造树的根 (Root), 并对每个端口设置权重。这一权 重可以由网络管理员适当地设置,指定优先使用哪些端口以及发生问题时该使用 哪些端口。生成树法其实与计算机和路由器的功能没有关系,但是只要有生成树的功能 就足以消除环路。
IEEE802.1D中所定义的生成树方法有一个弊端,就是在发生故障切换网络时 需要几十秒的时间。为了解决这个用时过长的问题,在IEEE802.1W 中定义了一 个叫RSTP(Rapid Spanning Tree Protocol) 的方法。该方法能将发生问题时的恢复 时间缩短到几秒以内。
- 源路由法
该方式可以判断发 送数据的源地址是通过哪个网桥实现传输的,并将帧写入 RIF(Routing Information Field)。网桥则根据这个 RIF信息发送帧给目标地址。因此,即使网桥 中出现了环路,数据帧也不会被反复转发,可成功地发送到目标地址。在这种机 制中发送端本身必须具备源路由的功能。
3.2.6 VLAN
那么 VLAN 究竟是什么?如图3.15所示,该交换机按照其端口区分了多个网 段,从而区分了广播数据传播的范围、减少了网络负载并提高了网络的安全性。 然而异构的两个网段之间,就需要利用具有路由功能的交换机(如3层交换机), 或在各段中间通过路由器的连接才能实现通信。
对这种 VLAN 进行了扩展,又定义了 IEEE802.1Q 的 标 准 ( 也 叫 TAG VLAN),该标准允许包含跨越异构交换机的网段。TAG VLAN 中对每个网段都用 一个 VLAN ID 的标签进行唯一标识。在交换机中传输帧时,在以太网首部加入这 个VID 标签,根据这个值决定将数据帧发送给哪个网段。各个交换机之间流动的 数据帧的格式请参考图3.21 中的帧格式。
3.3. 以太网
3.3.1 以太网连接形式
3.3.4 以太网帧格式
以太网帧前端有一个叫做前导码 (Preamble) 的部分,它由0、1数字交替组合而 成,表示一个以太网帧的开始,也是对端网卡能够确保与其同步的标志。如图3.19所 示。前导码末尾是一个叫做SFD(Start Frame Delimiter) 的域,它的值是“11”。在这 个域之后就是以太网帧的本体(图3.20)。前导码与SFD合起来占8个字节。
帧尾最后出现的是FCS”。用它可以检查帧是否有所损坏。在通信传输过程中 如果出现电子噪声的干扰,可能会影响发送数据导致乱码位的出现。因此,通过 检查这个 FCS字段的值可以将那些受到噪声干扰的错误帧丢弃。FCS 中保存着整个帧除以生成多项式的余数”。在接收端也用同样的方式计 算,如果得到 FCS 的值相同,就判定所接收的帧没有差错”。
在3.2.6节中将要介绍的VLAN 中,帧的格式又会有所变化(图3.21)。
3.5. PPP
3.5.1 PPP 定义
3.5.2 LCP 与 NCP
在开始进行数据传输前,要先建立一个 PPP 级的连接”。当这个连接建立以 后就可以进行身份认证、压缩与加密。
在PPP 的主要功能中包括两个协议: 一个是不依赖上层的 LCP 协议 (Link Control Protocol), 另一个是依赖上层的 NCP 协 议 (Network Control Protocol)。如 果上层为IP, 此时的 NCP也叫做IPCP(IP Control Protocol)。
LCP 主要负责建立和断开连接、设置最大接收单元 (MRU,Maximum Receive Unit) 、设置验证协议 (PAP 或 CHAP) 以及设置是否进行通信质量的监控。而IPCP 则负责IP 地址设置以及是否进行 TCP/IP 首部压缩等设备。
通过PPP 连接时,通常需要进行用户名密码的验证,并且对通信两端进行双 方向的验证”。其验证协议有两种,分别为PAP(Password Authentication Protocol) 和 CHAP(Challenge Handshake Authentication Protocol)。
PAP是 PPP 连接建立时,通过两次握手进行用户名和密码验证。其中密码以 明文方式传输。因此一般用于安全要求并不很高的环境,否则会有窃听或盗用连 接的危险。CHAP则使用一次性密码 OTP(One Time Password),可以有效防止窃听。此 外,在建立连接后还可以进行定期的密码交换,用来检验对端是否中途被替换。
3.5.4 PPPoE
单纯的以太网没有验证功能,也没有建立和断开连接的处理,因此无法按时 计费。而如果采用PPPoE 管理以太网连接,就可以利用PPP 的验证等功能使各家 ISP 可以有效地管理终端用户的使用。
4. 网络层
主机与路由器
准确地说,主机的定义应该是指“配置有IP地址,但是不进 行路由控制”的设备”。既配有IP地址又具有路由控制能力的设备叫做 “路由器”,跟主机有所区别。而节点则是主机和路由器的统称。
IP 基础知识
IP大致分为三大作用模块,它们是 IP 寻址、路由(最终节点为止的转发) 以及IP 分包与组包。
4.2.1 IP 地址属于网络层地址
以太网等数据链路中使用MAC地址传输数据帧。此时的一跳是指从 源MAC地址到目标MAC地址之间传输帧的区间。也就是说它是主机或
路由器网卡不经其他路由器而能直接到达的相邻主机或路由器网卡之间 的一个区间。在一跳的这个区间内,电缆可以通过网桥或交换集线器相 连,不会通过路由器或网关相连。
多跳路由是指路由器或主机在转发IP 数据包时只指定下一个路由器或主机, 而不是将到最终目标地址为止的所有通路全都指定出来。因为每一个区间(跳) 在转发IP 数据包时会分别指定下一跳的操作,直至包达到最终的目标地址。
4.3.2. IP地址
在分配IP 地址时关于主机标识有一点需要注意。即要用比特位表示主机地址 时,不可以全部为0或全部为1。因为全部为只有0在表示对应的网络地址或 IP 地址不可获知的情况下才使用。而全部为1的主机地址通常作为广播地址。
4.3.4. 广播
广播分为本地广播和直接广播两种。
在本网络内的广播叫做本地广播。例如网络地址为192.168.0.0/24的情况 下,广播地址是192.168.0.255。因为这个广播地址的 IP 包会被路由器屏蔽,所以不会到达 192 . 168 . 0 . 0 /24 以 外 的 其 他 链 路 上 。
在不同网络之间的广播叫做直接广播。例如网络地址为192.168.0.0/24 的主 机向192.168.1.255/24的目标地址发送 IP 包。收到这个包的路由器,将数据转 发给192.168.1.0/24,从而使得所有192.168.1.1~192.168.1.254 的主机都能收到这个包”。
4.3.5. 单播,广播,多播
多播使用D 类地址。因此,如果从首位开始到第4位是“1110”,就可以认 为是多播地址。而剩下的28位可以成为多播的组编号。
对于多播,所有的主机(路由器以外的主机和终端主机)必须属于 224.0.0.1的组,所有的路由器必须属于224.0.0.2的组。类似地,多播地址中有 众多已知的地址,它们中具有代表性的部分已在表4.1中列出。利用IP 多播实现通信,除了地址外还需要 IGMP”等协议的支持。
-
子网与子网掩码
一个IP 地址的网络标识和主机标识已不再受限于该地址的类别,而是 由一个叫做“子网掩码”的识别码通过子网网络地址细分出比A 类、B 类、C 类 更小粒度的网络。这种方式实际上就是将原来A 类、B 类 C 类等分类中的主机地 址部分用作子网地址,可以将原网络分为多个物理网络的一种机制。 -
CIDR 与VLSM
上述将两个C类地址网段合并成一个大的网段。
VLSM (可变长子网掩码):可以随机修改组织内各个部门的子网掩码长度的机制。它可以通过域间路由协议转换为 RIP2以及OSPF实现。根据 VLSM可以将网络地址划分为主机数为500个时 子网掩码长度为/23,主机数为50个时子网掩码长度为/26。从而在理论上可以将 IP 地址的利用率提高至50%。
4.3.8 全局地址与私有地址
它不要求为每一台主机或路由器分配一个固定的 IP 地址,而是在必要的时候只为相应数量的设备分配唯一的 IP 地址。尤其对于那些没有连接互联网的独立网络中的主机,只要保证在这个网络内 地址唯一,可以不用考虑互联网即可配置相应的 IP地址。
包含在这个范围内的IP 地址都属于私有IP, 而在此之外”的 IP 地址称为全 局IP。私有IP 最早没有计划连接互联网,而只用于互联网之外的独立网络。然而, 当一种能够互换私有IP 与全局IP 的 NAT” 技术诞生以后,配有私有地址的主机与配有全局地址的互联网主机实现了通信。
全 局IP 地 址 基 本 上 要 在 整 个 互 联 网 范 围 内 保 持 唯 一,但 私 有 地 址 不 需 要 。 只 要在同一个域里保证唯一即可。在不同的域里出现相同的私有IP不会影响使用。
4.22. 路由转发
由控制表中存在多条相同网络地址的记录,就选择一个最为吻合的网络地址。所 谓最为吻合是指相同位数最多的意思。例如172.20.100.52的网络地址与172.20/16和172.20.100/24两项都匹配。 此时,应该选择匹配度最长的172.20.100/24。此外,如果路由表中下一个路由器 的位置记录着某个主机或路由器自身某网卡的IP地址,那就意味着发送的目标地址属于同一个链路。(发到以太网上的包天然就是广播的,但会经过MAC过滤,IP过滤,TCP/UDP过滤让无关包过滤掉)
-
默认路由
默认路由一般标记为0.0.0.0/0或 default。用于在按网络,按主机无法匹配下的路由匹配 -
主机路由
“IP地址/32”也被称为主机路由(Host Route)。例如, 192.168.153.15/32 就是一种主机路由。 -
环回地址
环回地址是在同一台计算机上的程序之间进行网络通信时所使用的一个默认 地址。计算机使用一个特殊的IP地址127.0.0.1作为环回地址。与该地址具有相 同意义的是一个叫做localhost的主机名。使用这个IP或主机名时,数据包不会流 向网络。
4.路由聚合
为了减少路由器路由表项数,提升路由效率而引入的技术。
上述有个错误:
192.168.3.195的前24位是与192.168.3.0一致
4.5.2. IP分片与重组
4.5.3. 路径MTU发现
前面是UDP 的例子。那么在 TCP的情况下,根据路径 MTU 的大小计算出最 大段长度 (MSS), 然后再根据这些信息进行数据报的发送。因此,在TCP 中如 果采用路径 MTU 发现, IP 层则不会再进行分片处理。
4.6.4. IPv6结构
几个特殊的ipv6地址。IPv6的分片处理只在作为起点的发送端主机上进行,路由器不参与分片。这也是为了减少路由器的负荷,提高网速。因此,IPv6中的“路径 MTU 发现”功 能必不可少。
4.7. IP首部
-
标 识 (ID:Identification)
在四元组相同下,相同标识的多个IP分组属于同一个IP数据报。 -
标志
-
片偏移 (FO:Fragment Offset)
由13比特构成,用来标识被分片的每一个分段相对于原始数据的位置。第一 个分片对应的值为0。由于FO域占13位,因此最多可以表示8192(=2^13)个相对位置。单位为8字节,因此最大可表示原始数据8×8192=65536字节的位置。 -
生存时间 (TTL:Time To Live)
由8比特构成,它最初的意思是以秒为单位记录当前包在网络上应该生存的 期限。然而,在实际中它是指可以中转多少个路由器的意思。每经过一个路由器, TTL会减少1,直到变成0则丢弃该包”。 -
首部校验和 (Header Checksum)
由16比特(2个字节)构成,也叫 IP首部校验和。该字段只校验数据报的 首部,不校验数据部分。它主要用来确保IP 数据报不被破坏。校验和的计算过 程,首先要将该校验和的所有位置设置为0,然后以16比特为单位划分IP 首部并用1补数”计算所有16位字的和。最后将所得到这个和的1补数赋给首部校验和字段。
5.5.1. 利用DHCP实现即插即用
为了检查所要分配的IP 地址以及已经分配了的IP 地址是否可用, DHCP 服务 器或 DHCP 客户端必须具备以下功能:
●DHCP 服务器
在分配 IP 地址前发送 ICMP 回送请求包,确认没有返回应答。
● DHCP客户端
针对从 DHCP 那里获得的 IP 地址发送 ARP 请求包,确认没有返回应答。
5.8.2. IP任播
6.6. UDP首部的格式
6.7. TCP首部的格式
CWR(Congestion Window Reduced):
CWR 标志”与后面的 ECE标志都用于IP 首部的 ECN 字段。ECE 标志为1时,则通知对方已将拥塞窗口缩小。
ECE(ECN-Echo):
ECE标志”表示 ECN-Echo。置为1会通知通信对方,从对方到这边的网 络有拥塞。在收到数据包的IP 首部中ECN 为1时将TCP 首部中的 ECE设 置为1。
PSH(Push Flag):
该位为1时,表示需要将受到的数据立刻传给上层应用协议。PSH 为 0 时,则不需要立即传而是先进行缓存。
7.1.3 动态路由的基础
动态路由如图7.2所示,会给相邻路由器发送自己已知的网络连接信息,而 这些信息又像接力 一 样依次传递给其他路由器,直至整个网络都了解时,路由控 制表也就制作完成了。而此时也就可以正确转发IP 数据包了”。
7.2.2 自治系统与路由协议
制定自己的路由策略,并以此为准在一个或多个网络群体中采用的小型单位 叫做自治系统 (AS:Autonomous System) 或路由选择域 (Routing Domain)。
自治系统(路由选择域)内部动态路由采用的协议是域内路由协议,即IGP。 而自治系统之间的路由控制采用的是域间路由协议,即 EGP。
7.2.3 IGP与EGP
路由协议大致分为两大类。 一类是外部网关协议 EGP, 另一类是 内部网关协议 IGP(Interior Gateway Protocol)。
IGP中还可以使用 RIP(Routing Information Protocol, 路由信息协议)、RIP2 、 OSPF(Open Shortest Path First, 开放式最短路径优先)等众多协议。与之相对, EGP使用的是 BGP(Border Gateway Protocol, 边界网关协议)协议。
7.3. 路由算法
路由控制有各种各样的算法,其中最具代表性的有两种,是距离向量 (Distance-Vector) 算法和链路状态 (Link-State) 算法。
7.3.1 距离向量算法
路由器之间可以互换目标网络的方向及其距离的相关信息,并以这些信息为 基础制作路由控制表。这种方法在处理上比较简单,不过由于只有距离和方向的 信息,所以当网络构造变得分外复杂时,在获得稳定的路由信息之前需要消耗一 定时间”,也极易发生路由循环等问题。
7.3.2 链路状态算法
链路状态算法是路由器在了解网络整体连接状态的基础上生成路由控制表的 一种方法。该方法中,每个路由器必须保持同样的信息才能进行正确的路由选择。
链路状态算法中所有路由器持有相同的信息。对于任何一台路由器,网络 拓扑都完全一样。
7.3.3. 主要的路由协议
7.4. RIP
RIP(Routing Information Protocol) 是距离向量型的一种路由协议,广泛用于 LAN。
7.4.1 广播路由控制信息
RIP 将路由控制信息定期(30秒一次)向全网广播。RIP 规定等待 5次。如果等了6次(180秒)仍未收到路由信息,才会真正关闭连接。
7.4.2 根据距离向量确定路由
7.4.4 RIP 中路由变更时的处理
RIP 的基本行为可归纳为如下两点:
- 将自己所知道的路由信息定期进行广播。
- 一旦认为网络被断开,数据将无法流过此路由器,其他路由器也就可以得 知网络已经断开。
如图7 . 9,路由器A 将 网 络A 的连接信息发送给路由器 B, 路 由 器 B 又 将 自 己掌握的路由信息在原来的基础上加1跳后发送给路由器A 和 路 由 器 C。 假 定 这 时与网络 A 发生了故障。
路由器 A 虽然觉察到自己与网络A 的连接已经断开,无法将网络 A 的 信 息 发 送给路由器 B, 但是它会收到路由器B 曾经获知的消息。这就使得路由器 A 误 认 为自己的信息还可以通过路由器 B 到达网络A。像这样收到自己发出去的消息,这个问题被称为无限计数 (Counting to Infini- ty)。 为了解决这个问题可以采取以下两种方法:
- 一是最长距离不超过16。由此即使发生无限计数的问题,也可以从时间上进行控制。
- 二是规定路由器不再把所收到的路由消息原路返还给发送端。这也被称作水平分割 (Split Horizon)。
然而,这种方法对有些网络来说是无法解决问题的。如图7 . 11所示,在网络 本身就有环路的情况下。
在有环路情况下,反向的回路会成为迂回的通道,路由信息会不断地被循环 往复地转发。当环路内部某 一 处发生通信故障时,通常可以设置 一个正确的迂回通道。但是对于图7 . 11中的情况,当网络A 的通信发生故障时,将无法传送正确 的路由信息。尤其是在环路有多余的情况下,需要很长时间才能产生正确的路由 信息。为了尽可能解决这个问题,人们提出了“毒性逆转” (Poisoned Reverse) 和“触发更新” (Triggered Update) 两种方法。
毒性逆转是指当网络中发生链路被断开的时候,不是不再发送这个消息,而 是将这个无法通信的消息传播出去。即发送一个距离为16的消息。触发更新是指 当路由信息发生变化时,不等待30秒而是立刻发送出去的一种方法。有了这两种 方法,在链路不通时,可以迅速传送消息以使路由信息尽快收敛。
7.5. OSPF
OSPF(Open Shortest Path First) 是根据 OSI的 IS-IS协议而提出的一种链路状态型路由协议。由于采用链路状态类型,所以即使网络中有环路,也能够进行 稳定的路由控制。
OSPF 支持子网掩码。由此,曾经在RIP 中无法实现的可变长度子网构 造的网络路由控制成为现实。
甚至为了减少网络流量, OSPF 还引入了“区域”这一概念。区域是将一个 自治网络划分为若干个更小的范围。由此,可以减少路由协议之间不必要的交换。
7.5.1 OSPF 是链路状态型路由协议
OSPF为链路状态型路由器。路由器之间交换链路状态生成网络拓扑信息,然 后再根据这个拓扑信息生成路由控制表。
RIP 的路由选择,要求途中所经过的路由器个数越少越好。与之相比,OSPF 可以给每条链路"赋予一个权重(也可以叫做代价),并始终选择一个权重最小的 路径作为最终路由。也就是说 OSPF 以每个链路上的代价为度量标准,始终选择 一个总的代价最小的一条路径。如图7.14对比所示,RIP 是选择路由器个数最少 的路径,而 OSPF 是选择总的代价较小的路径。
7.5.2 OSPF 基础知识
在 OSPF 中,把连接到同 一 个链路的路由器称作相邻路由器。在一个相对简单的网络结构中,例如每个路由器仅跟一个路由器相互连 接时”相邻路由器之间可以交换路由信息。但是在一个比较复杂的网络中,例 如在同一个链路中加入了以太网或 FDDI 等路由器时,就不需要在所有相邻的路 由器之间都进行控制信息的交换,而是确定一个指定路由器 (Designated Router), 并以它为中心交换”路由信息即可。
通过发送问候 (HELLO) 包确认是否连接。每个路由器为了同步路由控制信 息,利用数据库描述 (Database Description) 包相互发送路由摘要信息和版本信 息。如果版本比较老,则首先发出一个链路状态请求 (Link State Request) 包 请 求路由控制信息,然后由链路状态更新 (Link State Update) 包接收路由状态信 息,最后再通过链路状态确认 (Link State ACK Packet) 包通知大家本地已经接收 到路由控制信息。
7.5.3 OSPF 工作原理概述
OSPF 中进行连接确认的协议叫做 HELLO协议。
LAN中每10秒发送一个 HELLO包。如果没有 HELLO 包到达,则进行连接是 否断开的判断”。具体为,允许空等3次,直到第4次(40秒后)仍无任何反馈 就认为连接已经断开。之后在进行连接断开或恢复连接操作时,由于链路状态发 生了变化,路由器会发送一个链路状态更新包 (Link State Update Packet) 通知其 他路由器网络状态的变化。
链路状态更新包所要传达的消息大致分为两类: 一是网络LSA, 另一个是路 由器 LSA。
网络LSA 是以网络为中心生成的信息,表示这个网络都与哪些路由器相连 接。而路由器 LSA 是以路由器为中心生成的信息,表示这个路由器与哪些网络相 连接。
如果这两种信息”主要采用 OSPF 发送,每个路由器就都可以生成一个可以表 示网络结构的链路状态数据库。可以根据这个数据库、采用 Dijkstra 算法”(最短 路径优先算法)生成相应的路由控制表。
相比距离向量,由上述过程所生成的路由控制表更加清晰不容易混淆,还可 以有效地降低无线循环问题的发生。不过,当网络规模逐渐越大时,最短路径优 先算法的处理时间就会变得越长,对 CPU 和内存的消耗也就越大。
7.5.4 将区域分层化进行细分管理
链路状态型路由协议的潜在问题在于,当网络规模越来越大时,表示链路状 态的拓扑数据库就变得越来越大,路由控制信息的计算也就越困难。OSPF为了减 少计算负荷,引入了区域的概念。
区域是指将连接在一起的网络和主机划分成小组,使一个自治系统 (AS) 内 可以拥有多个区域。不过具有多个区域的自治系统必须要有一个主干区域(Backbone Area),并且所有其他区域必须都与这个主干区域相连接。
连接区域与主干区域的路由器称作区域边界路由器;而区域内部的路由器叫 做内部路由器;只与主干区域内连接的路由器叫做主干路由器;与外部相连接的 路由器就是 AS 边界路由器。
个区域内的路由器都持有本区域网络拓扑的数据库。然而,关于区域之外 的路径信息,只能从区域边界路由器那里获知它们的距离。区域边界路由器也不 会将区域内的链路状态信息全部原样发送给其他区域,只会发送自己到达这些路 由 器 的 距 离 信 息 , 内 部 路 由 器 所 持 有 的 网 络 拓 扑 数 据 库 就 会 明 显 变 小 。
换句话,就是指内部路由器只了解区域内部的链路状态信息,并在该信息的 基础上计算出路由控制表。这种机制不仅可以有效地减少路由控制信息,还能减 轻处理的负担。
7.6. BGP
BGP(Border Gateway Protocol),边界网关协议是连接不同组织机构(或者说 连接不同自治系统)的 一 种协议。因此,它属于外部网关协议 (EGP)。
7.6.1 BGP 与 AS 号
在 RIP 和 OSPF 中 利 用IP 的网络地址部分进行着路由控制,然而 BGP 则需要放眼整个互联网进行路由控制。BGP 的最终路由控制表由网络地址和下一站的路 由器组来表示,不过它会根据所要经过的 AS个数进行路由控制。
AS 的代表可以 决定AS 内部的网络运营和相关决策。与其他 AS相连的时候,可以像一位“外交 官”一样签署合约再进行连接”。正是有了这些不同地区的 AS通过签约的相互连 接,才有了今天全球范围内的互联网。
7.6.2 BGP 是路径向量协议
根 据 BGP 交换路由控制信息的路由器叫做 BGP 扬声器。BGP 扬声器为了在 AS之间交换 BGP 信息,必须与所有 AS 建立对等的 BGP连接。此外,如图7.20 中的自治系统 AS2、AS4、AS5, 它们在同一个 AS 内部有多个 BGP 扬声器。在这 种情况下,为了使AS 内部也可以交换 BGP 信息,就需要建立 BGP 连接。
BGP 中数据包送达目标网络时,会生成一个中途经过所有 AS 的编号列表。 这个表格也叫做AS 路径信息访问列表 (AS Path List)。如果针对同一个目标地址 出现多条路径时, BGP会 从AS路径信息访问列表中选择一个较短的路由。
在做路由选择时使用的度量, RIP 中表示为路由器个数,OSPF 中表示为每个 子网的成本,而BGP 则用AS进行度量标准。BGP 则基于AS 之间的合约进行数据包 的转发。BGP一般选择AS 数最少的路径,不过仍然要遵循各个 AS 之间签约的细 节进行更细粒度的路由选择。
在AS 路径信息访问列表中不仅包含转发方向和距离,还涵盖了途径所有 AS 的编号。因此它不是一个距离向量型协议。此外,对网络构造仅用一元化表示, 因此也不属于链路状态型协议。
路径向量型由 于能够检测出环路,避免了无线计数的问题,所以令网络更容易进入一个稳定的 状态。同时,它还有支持策略路由的优势。
8.2.1 TELNET
8.2.2 SSH
TELNET 中登录时无需输入密码就可以发送, 容易造成通信窃听和非法入侵的危险。使用SSH 后可以加密通信内容。即使信息 被窃听也无法破解所发送的密码、具体命令以及命令返回的结果是什么。
8.3. 文件传输
FTP 是通过怎样的机制才得以实现文件传输的呢?它使用两条 TCP 连接: 一 条用来控制,另一条用于数据(文件)的传输。
用于控制的TCP连接主要在 FTP的控制部分使用。例如登录用户名和密码的 验证、发送文件的名称、发送方式的设置。利用这个连接,可以通过ASCI 码字 符串发送请求和接收应答(如表8.1、表8.2所示)。在这个连接上无法发送数 据,数据需要一个专门的 TCP 进行连接。
FTP 控制用的连接使用的是TCP21 号端口。在 TCP21 号端口上进行文件 GET (RETR) 、PUT(STOR) 、 以及文件一览 (LIST) 等操作时,每次都会建立一个 用于数据传输的 TCP 连接。数据的传输和文件一览表的传输正是在这个新建的连 接上进行。当数据传送完毕之后,传输数据的这条连接也会被断开,然后会在控 制用的连接上继续进行命令或应答的处理。
通常,用于数据传输的TCP连接是按照与控制用的连接相反的方向建立的。 因此,在通过 NAT连接外部 FTP 服务器的时候,无法直接建立传输数据时使用的 TCP 连接。此时,必须使用 PASV 命令修改建立连接的方向才行。
8.4. 电子邮件
电子邮件的机制由3部分组成,它们分别是邮件地址,数据格式以及发送 协议。
8.4.2 邮件地址
名称@通信地址
例如, master@tcpip.kusa.ac.jp中 的 master 为名称, tepip.kusa.ac.jp为地址。电子邮件的地址和域名的构造相同。此处, kusa ac.jp 表示域名,tcpip 则表示 master接收邮件的主机名称或为发送邮件所用的子网名称。现在个人邮件 地址和邮件组的格式完全相同,因此,光从地址上是无法区分个人电子邮件地址 和邮件组的。
现在,电子邮件的发送地址由 DNS 进行管理。DNS 中注册有邮件地址及其作 为发送地址时对应的邮件服务器的域名。这些映射信息被称作 MX 记录。例如, kusa ac.jp 的 MX” 记录中指定了 mailserver.kusa.ac.jp 。于是任何发给以 kusa.ac.jp结尾的地址的邮件都将被发送到 mailserver.kusa.ac.jp 服务器。就这 样,根据 MX 记录中指定的邮件服务器,可以管理不同邮件地址与特定邮件服务 器之间的映射关系。
8.4.3 MIME
现 在,电子邮件所能发送的数据类型已被扩展到 MIME”, 可以发送静态图像、动 画、声音、程序等各种形式的数据。鉴于MIME 规定了应用消息的格式,因此在 OSI参考模型中它相当于第6层表示层。
8.4.4 SMTP
SMTP 是发送电子邮件的协议。它使用的是 TCP的25号端口。SMTP 建立一 个TCP 连接以后,在这个连接上进行控制和应答以及数据的发送。客户端以文本 的形式发出请求,服务端返回一个3位数字的应答。每个指令和应答的最后都必须追加换行指令 (CR、LF)。
8.4.5 POP
8.5. WWW
8.5.1 互联网的蓬勃发展
可以显示 WWW信息的客户端软件叫做Web浏览器
8.5.2 WWW 基本概念
WWW 定义了3个重要的概念,它们分别是访问信息的手段与位置 (URI, Uniform Resource Identifier)、信息的表现形式 (HTML,HyperText Markup Language) 以及信息转发 (HTTP,HyperText Transfer Protocol) 等操作。
8.5.3 URI
URI 是 Uniform Resource Identifier 的缩写,用于标识资源。URI 是一种可以用 于WWW 之外的高效的识别码,它被用于主页地址、电子邮件、电话号码等各种 组合中。如下所示:
http://www.rfc-editor/rfc/rfc4395.txt
http://www.ietf:80/index.html
http://localhost:631/
这些例子属于一般主页地址,也被叫做 URL(Uniform Resource Locator)。 URL 常被人们用来表示互联网中资源(文件)的具体位置。但是 URI 不局限于标识互联网资源,它可以作为所有资源的识别码。现在,在有效的RFC 文档中,已经不再使用URL, 转而在使用URI。相比 URL狭义的概念, URI 则是一个广义 的概念。因此,URI 可以用于除了WWW之外的其他应用协议中。
URI 所表示的组合叫方案 (Scheme)。 在众多 URI 的 Scheme 中 WWW 主要 用其中的 http 和 htps 表示 Web 页的位置和访问Web 页的方法。
URI 的http方案的具体格式如下:
http://主机名/路径
http://主机名:端口号/路径
http://主机名:端口号/路径?访问内容#部分信息
其中主机名表示域名或 IP 地址,端口号表示传输端口号。关于端口号的更多 细节,读者可以参考6.2节。省略端口号时,则表示采用http 的默认端口80。路 径是指主机上该信息的位置,访问内容表示要传给 CGI”的信息,部分信息表示 页面当中的位置等。这种表示方法可以唯一地标识互联网中特定的数据。不过,由于用 http 方案 展现的数据随时都有可能发生变化,所以即使将自己喜欢的页面的URI(URL) 记住,也不能保证下次是否还能够访问到该页。
8.5.4 HTML
HTMP 是记述 Web 页的一种语言(数据格式)。它可以指定浏览器中显示的文字、文字的大小和颜色。此外,不仅可以对图像或动画进行相关设置,还可以 设置音频内容。
HTML 具有纯文本的功能。在页面中不仅可以为文字或图像附加链接,当用户 点击那些链接时还可以呈现该链接所指示的内容,因此它可以将整个互联网中任何 一个WWW服务器中的信息以链接的方式展现。绝大多数互联网中的 Web页,都以 链接的形式指向关联的其他信息。逐一点开这些链接就可以了解全世界的信息。
HTML也可以说是 WWW 通用的数据表现协议。即使是在异构的计算机上, 只要是可以用 HTML展现的数据,那么效果基本上是一致的。如果把它对应到 OSI参考模型,那么可以认为 HTML属于 WWW的表示层”。不过,鉴于现代计算 机网络的表示层尚未完全准备就绪,根据操作系统和所用软件的不同,最终表现 出来的效果也可能会出现细微差别。
8.5.5 HTTP
当用户在浏览器的地址栏里输入所要访问Web 页的 URI 以 后 ,HTTP 的处理 即会开始。HTTP 中默认使用80端口。它的工作机制,首先是客户端向服务器的 80端口建立一个 TCP连接,然后在这个 TCP连接上进行请求和应答以及数据报 文的发送。
HTTP 中常用的有两个版本, 一个 HTTP1.0, 另 一 个是 HTTP1.1。 在 HTTP1.0 中每一个命令和应答都会触发一次 TCP 连接的建立和断开。而从 HTTP1.1开始,允许在一个TCP连接上发送多个命令和应答”。由此,大量地减 少 了 TCP 连接的建立和断开操作,从而也提高了效率。
8.5.6 JavaScript、CGl、Cookie
1.JavaScript
Web 的基本要素为 URI、HTML和 HTTP。然而仅有这些还无法更改与条件相 符的动态内容。为此,通过在浏览器端和服务器端执行特定的程序可以实现更加 精彩、多样的内容。例如实现网络购物或搜索功能。
我们称 Web 浏览器端执行的程序为客户端程序,在服务器端执行的程序为服 务器端程序。
JavaScript 是一种嵌入在 HTML中的编程语言,作为客户端程序可以运行于多 种类型的浏览器中。这些浏览器将嵌入JavaScript 的 HTML 下载后,其对应的 JavaScript 程序就可以在客户端得到执行。这种JavaScript 程序用于验证客户端输 入字符串是否过长、是否填写或选择了页面中的必须选项等功能。
JavaScript 还 可以用于操作 HTML或XML的逻辑结构 (DOM,Document Object Model) 以及动态显示Web页的内容和页面风格上。最近,更是盛行服务器端不需要读取整个页面而是通过JavaScript 操作DOM来实现更为生动的 Web页面的技术。这就是Ajax (Asynchronous JavaScrip and XML) 技 术 。
2.CGI
CGI是 Web 服务器调用外部程序时所使用的一种服务端应用的规范。
一般的 Web 通信中,只是按照客户端请求将保存在 Web 服务器硬盘中的数据 转发而已。这种情况下客户端每次收获的信息也是同样(静态)的内容。而引入 CGI以后客户端请求会触发Web 服务器端运行另一个程序,客户端所输入的数据 也会传给这个外部程序。该程序运行结束后会将生成的 HTML 和其他数据再返回 给客户端。
利用CGI 可以针对用户的操作返回给客户端有各种各样变化(动态)的信 息。论坛和网上购物系统中就经常使用CGI调用外部程序或访问数据库。
3.Cookie
Web应用中为了获取用户信息使用一个叫做 Cookie 的机制。Web 服务器用 Cookie 在客户端保存信息”(多为“用户名”和“登录名”等信息)。Cookie 常被 用于保存登录信息或网络购物中放入购物车的商品信息。
从Web服务器检查 Cookie 可以确认是否为同一对端的通信。从而存放于购物 车里的商品信息就不必要在保存到服务器了。
4.博客与 RSS
博客 (blog) 是 weblog的缩写。它是一种在使用者完全不懂 HTML、 也不需要使用FTP 的情况下,轻松建立 Web 页并更新内容的网络服务应用。常用于网络日记、报表等。
RSS 是用来交互与Web站点内容更新相关的摘要信息的一种数据格 式,也叫做 Really Simple Syndication 或 RDF(Resource Description Frame- work)Site Summary。Web 上的数据看起来虽然比HTML等顺眼些。但是, 通过这些数据,若要立即抽取该页面的概要信息或根据关键字自动集合 显示那些自己感兴趣的页面,还是一件比较困难的事情。然而,如果使用 RSS, 则可以将页面的标题、内容中的章节标题和概要、分类、关键字等信息记述下来,只显示页面的概要,提高关键字搜索的精度。作为发布消息为主的 Web站点如果支持 RSS, 那么用户可以轻松地通过 RSS 获取该站点的最新消息。
通过博客公开信息已经成为现代信息通信中不可阻挡的趋势。而RSS 也将会成为人们从日益增多的互联网海量信息中收集自己感兴趣内容的 必不可少的工具。
8.6. 网络管理
在 TCP/IP 的网络管理中可以使用 SNMP(Simple Network Management Protocol) 收集必要的信息。它是一款基于UDP/IP 的协议。
消息处理中如果选择了SNMPv2的模型,那么会进行以下8种操作。它们分 别是:查询请求,上次要求的下一个信息的查询请求 (GetNextRequest-PDU) 、 应 答、设置请求、批量查询请求 (GetBulkRequest-PDU) 、 向其他管理器发送信息 通知 (InformRequest-PD U) 、事件通知、用管理系 统定义的命令 (Report-PDU)等操作:
8.6.2 MIB
SNMP 中交互的信息是MIB(Management Information Base) 。MIB 是在树形结构的数据库中为每个项目附加编号的一种信息结构。MIB相当于SNMP的表示层,它是一种能够在网络上传输的结构。SNMP 中 可以将 MIB值写入代理,也可以从代理中读取 MIB值。通过这些操作可以收集冲 突的次数和流量统计等信息,可以修改接口的IP 地址,还可以进行路由器的启 停、设备的启动和关闭等处理。
8.6.4 SNMP 应用举例
MRTG(Muli Router Traffic GRAPHER) 是利用 RMON 定期收集网络中路由器的网络流量信息的工具。
版权声明:本文标题:图解系列--协议汇总 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.freenas.com.cn/jishu/1726802203h1031161.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论