计算机网络 - IP 协议
IP 协议简介
IP 协议位于 TCP/IP 协议的第三层——网络层。与传输层协议相比,网络层的责任是提供点到点(hop by hop)的服务,而传输层(TCP/UDP)则提供端到端(end to end)的服务。
IP 地址的分类
A类地址
B类地址
C类地址
D 类地址
广播与多播
广播和多播仅用于UDP(TCP是面向连接的)。
广播
一共有四种广播地址:
受限的广播
受限的广播地址为255.255.255.255。该地址用于主机配置过程中IP数据报的目的地址,在任何情况下,router不转发目的地址为255.255.255.255的数据报,这样的数据报仅出现在本地网络中。
指向网络的广播
指向网络的广播地址是主机号为全1的地址。A类网络广播地址为netid.255.255.255,其中netid为A类网络的网络号。
一个router必须转发指向网络的广播,但它也必须有一个不进行转发的选择。
指向子网的广播
指向子网的广播地址为主机号为全1且有特定子网号的地址。作为子网直接广播地址的IP地址需要了解子网的掩码。例如,router收到128.1.2.255的数据报,当B类网路128.1的子网掩码为255.255.255.0时,该地址就是指向子网的广播地址;但是如果子网掩码为255.255.254.0,该地址就不是指向子网的广播地址。
指向所有子网的广播
指向所有子网的广播也需要了解目的网络的子网掩码,以便与指向网络的广播地址区分开来。指向所有子网的广播地址的子网号和主机号为全1.例如,如果子网掩码为255.255.255.0,那么128.1.255.255就是一个指向所有子网的广播地址。
当前的看法是这种广播是陈旧过时的,更好的方式是使用多播而不是对所有子网的广播。
广播示例:
PING 192.168.0.255 (192.168.0.255): 56 data bytes
64 bytes from 192.168.0.107: icmp_seq=0 ttl=64 time=0.199 ms
64 bytes from 192.168.0.106: icmp_seq=0 ttl=64 time=45.357 ms
64 bytes from 192.168.0.107: icmp_seq=1 ttl=64 time=0.203 ms
64 bytes from 192.168.0.106: icmp_seq=1 ttl=64 time=269.475 ms
64 bytes from 192.168.0.107: icmp_seq=2 ttl=64 time=0.102 ms
64 bytes from 192.168.0.106: icmp_seq=2 ttl=64 time=189.881 ms
可以看到的确收到了来自两个主机的答复,其中 192.168.0.107 是本机地址。
多播
多播又叫组播,使用D类地址,D类地址分配的28bit均用作多播组号而不再表示其他。
多播组地址包括1110的最高4bit和多播组号。它们通常可以表示为点分十进制数,范围从224.0.0.0到239.255.255.255。
多播的出现减少了对应用不感兴趣主机的处理负荷。
多播的特点:
- 允许一个或多个发送者(组播源)发送单一的数据包到多个接收者(一次的,同时的)的网络技术
- 可以大大的节省网络带宽,因为无论有多少个目标地址,在整个网络的任何一条链路上只传送单一的数据包
- 多播技术的核心就是针对如何节约网络资源的前提下保证服务质量。
多播示例:
PING 224.0.0.1 (224.0.0.1): 56 data bytes
64 bytes from 192.168.0.107: icmp_seq=0 ttl=64 time=0.081 ms
64 bytes from 192.168.0.106: icmp_seq=0 ttl=64 time=123.081 ms
64 bytes from 192.168.0.107: icmp_seq=1 ttl=64 time=0.122 ms
64 bytes from 192.168.0.106: icmp_seq=1 ttl=64 time=67.312 ms
64 bytes from 192.168.0.107: icmp_seq=2 ttl=64 time=0.132 ms
64 bytes from 192.168.0.106: icmp_seq=2 ttl=64 time=447.073 ms
64 bytes from 192.168.0.107: icmp_seq=3 ttl=64 time=0.132 ms
64 bytes from 192.168.0.106: icmp_seq=3 ttl=64 time=188.800 ms
BGP
边界网关协议(BGP)是运行于 TCP 上的一种自治系统的路由协议
BGP 是唯一一个用来处理像因特网大小的网络的协议,也是唯一能够妥善处理好不相关路由域间的多路连接的协议
BGP是一种外部网关协议(Exterior Gateway Protocol,EGP),与OSPF、RIP等内部网关协议(Interior Gateway Protocol,IGP)不同,BGP不在于发现和计算路由,而在于控制路由的传播和选择最佳路由
BGP使用TCP作为其传输层协议(端口号179),提高了协议的可靠性
BGP既不是纯粹的矢量距离协议,也不是纯粹的链路状态协议
BGP支持CIDR(Classless Inter-Domain Routing,无类别域间路由)
路由更新时,BGP只发送更新的路由,大大减少了BGP传播路由所占用的带宽,适用于在Internet上传播大量的路由信息
BGP路由通过携带AS路径信息彻底解决路由环路问题
BGP提供了丰富的路由策略,能够对路由实现灵活的过滤和选择
BGP易于扩展,能够适应网络新的发展