赞
踩
通信协议定义了 网络实体间发送报文和接收报文的格式、顺序以及当传送和接收消息时应采取的行动(规则), 是控制两个对等实体进行通信的规则的集合,协议是“水平的”.
表示任何可发送或接收消息的硬件或软件进程
语法,语义,时序
语义 :
语义是指对协议中各协议元素的含义的解释,例如:在HDLC协议中,标志Flag(7EH)表示报文的开始和结束;在BSC协议中,SOH(01H)表示报文的开始,STX(02H)表示报文正文的开始,ETX(03H)表示报文正文的结束。
语法 :
语法是指协议元素与数据的组合格式,也就是 报文格式,如下图所示:
时序 :
时序是指在通信过程中,通信双方操作的执行顺序与规则,如本节开头的图示。
总的来说,语法是语义的载体,而时序又是对语义的有序组织。正是基于这种关系,计算机在通信时才得以保持高度默契。
我们在网络中的任何一个系统都是按照上图中的层次结构模型来组织的,该模型具有以下特点:
①: 同一网络中,任意两个端系统必须具有相同的层次;
②: 每层使用其下层提供的服务,并向其上层提供服务;
③: 通信只在对等层间进行,当然这里所指的通信是间接的、逻辑的、虚拟的,非对等层之间不能互相“通信”;
④: 实际的物理通信只在最底层完成;
⑤: Pn代表第n层的协议,即第n层对等实体间通信时必须遵循的规则或约定。
**①: IP协议: **这种不可靠的、无连接的传送机制称为Internet协议(网际协议)
与 IP 协议配套使用的还有三个协议:
IP协议三个定义:
IP定义了在TCP/IP互联网上数据传送的基本单元和数据格式。
IP软件完成路由选择功能,选择数据传送的路径。
IP包含了一组不可靠分组传送的规则,指明了分组处理、差错信息发生以及分组的规则。
**②: ICMP协议: **
网际控制报文协议
作用:用于在IP主机、路由器之间传递控制消息,更有效的转发IP数据报和提高交付成功的机会,
应用: ICMP的一个重要应用就是分组网间探测PING(Package Internet Grouper)用来测试两台主机的连通性,Ping是应用层直接使用网络层ICMP的一个例子,没有通过运输层的TCP或UDP
③: ARP协议:
地址解析协议
自动把IP地址解析为数据链路层所需要的硬件地址(MAC地址)
IP ----->MAC 地址
工作原理:
首先,每个主机都会在自己的ARP缓冲区中建立一个ARP列表,以表示IP地址和MAC地址之间的对应关系。
当源主机要发送数据时,首先检查ARP列表中是否有对应IP地址的目的主机的MAC地址,如果有,则直接发送数据,如果没有,就向本网段的所有主机发送ARP数据包,该数据包包括的内容有:源主机 IP地址,源主机MAC地址,目的主机的IP 地址。
当本网络的所有主机收到该ARP数据包时,首先检查数据包中的IP地址是否是自己的IP地址,
如果不是,则忽略该数据包,如果是,则首先从数据包中取出源主机的IP和MAC地址写入到ARP列表中,如果已经存在,则覆盖,然后将自己的MAC地址写入ARP响应包中,告诉源主机自己是它想要找的MAC地址。
广播发送ARP请求,单播发送ARP响应。
④: RARP协议:
逆地址解析协议, 与ARP相反:
MAC地址------>IP地址
**作用: ** 是完成硬件地址到IP地址的映射,主要用于无盘工作站,因为给无盘工作站配置的IP地址不能保存。
工作流程:在网络中配置一台RARP服务器,里面保存着IP地址和MAC地址的映射关系,当无盘工作站启动后,就封装一个RARP数据包,里面有其MAC地址,然后广播到网络上去,当服务器收到请求包后,就查找对应的MAC地址的IP 地址装入响应报文中发回给请求者。
因为需要广播请求报文,因此RARP只能用于具有广播能力的网络。
⑤: RIP协议:
内部网关协议
基于距离向量的路由选择协议, 距离是指跳数,直接相连的路由器跳数为 1,跳数最多为 15(即允许一条路径最多包含15个路由器),超过 15 表示不可达。
可见RIP只适用于小型互联网
RIP 按固定的时间间隔仅和相邻路由器交换自己的路由表,经过若干次交换之后,所有路由器最终会知道到达本自治系统中任何一个网络的最短距离和下一跳路由器地址。
距离向量算法:
RIP 协议实现简单,开销小。但是 RIP 能使用的最大距离为 15,限制了网络的规模。并且当网络出现故障时,要经过比较长的时间才能将此消息传送到所有路由器。
**⑥: OSPF协议: **
开放最短路径优先 OSPF,是为了克服 RIP 的缺点而开发出来的。
开放表示 OSPF 不受某一家厂商控制,而是公开发表的;最短路径优先表示使用了 Dijkstra 提出的最短路径算法 SPF。
OSPF 具有以下特点:
所有路由器都具有全网的拓扑结构图,并且是一致的。相比于 RIP,OSPF 的更新过程收敛的很快。
⑦: BGP:外部网关协议:
BGP(Border Gateway Protocol,边界网关协议)
AS 之间的路由选择很困难,主要是由于:
BGP 只能寻找一条比较好的路由,而不是最佳路由。
每个 AS 都必须配置 BGP 发言人,通过在两个相邻 BGP 发言人之间建立 TCP 连接来交换路由信息
①: 路由器
协议数据单元PDU(Protocol Data Unit)是指对等层次之间传递的数据单位。
从下层到上层:
物理层的 PDU是数据位,又称比特(bit),
数据链路层的 PDU是数据帧,又称帧(frame),
网络层的PDU是数据包又称IP数据报(packet/datagram),
传输层的 PDU是数据段(segment),在报文中加一个运输层的头
其他更高层次(即会话层,表现层,应用层)的PDU是报文(message)。
从下层往上层是拆封.
①: 负责源主机到目的主机数据分组(Packet)交付(可能穿越多个网络)逻辑寻址(Logical addressing )
②: 全局唯一的逻辑地址,确保数据分组被送到目的主机,如IP地址
③: 路由(Routing):
路由器(或网关)互连网络,并路由分组至最终目的主机
路径选择
④: 分组转发
⑤: 网络层向上只提供简单灵活的、无连接的、尽最大努力交互的数据报服务。
分组转发 与 路由选择(forwarding)
将分组从路由器的输入端口转移到合适的输出端口
转发表确定在本路由器如何转发分组
路由算法(协议)确定通过网络的端到端路径
路由(routing):确定分组从源到目的经过的路径
增加控制信息—构造协议数据单元(PDU—protocol Data Unit)
控制信息主要包括:
地址:标志发送端/接收端
差错检测编码(error-detecting code):用于差错检测或纠正
协议控制(Protocol control):实现协议功能的附加信息,如优先级(priority),服务质量(QoS)和安全控制等
版本 : 有 4(IPv4)和 6(IPv6)两个值;
首部长度 : 占 4 位,因此最大值为 15。值为 1 表示的是 1 个 32 位字的长度,也就是 4 字节。因为首部固定长度为 20 字节,因此该值最小为 5。如果可选字段的长度不是 4 字节的整数倍,就用尾部的填充部分来填充。
区分服务 : 用来获得更好的服务,一般情况下不使用。
总长度 : 包括首部长度和数据部分长度
标识 : 在数据报长度过长从而发生分片的情况下,相同数据报的不同分片具有相同的标识符。
片偏移 : 和标识符一起,用于发生分片的情况。片偏移的单位为 8 字节。
生存时间 :TTL,它的存在是为了防止无法交付的数据报在互联网中不断兜圈子。以路由器跳数为单位,当 TTL 为 0 时就丢弃数据报。
协议 :指出携带的数据应该上交给哪个协议进行处理,例如 ICMP、TCP、UDP 等。
ARP 实现由 IP 地址得到 MAC 地址。
每个主机都有一个 ARP 高速缓存,里面有本局域网上的各主机和路由器的 IP 地址到 MAC 地址的映射表。
如果主机 A 知道主机 B 的 IP 地址,但是 ARP 高速缓存中没有该 IP 地址到 MAC 地址的映射,此时主机 A 通过广播的方式发送 ARP 请求分组,主机 B 收到该请求后会发送 ARP 响应分组给主机 A 告知其 MAC 地址,随后主机 A 向其高速缓存中写入主机 B 的 IP 地址到 MAC 地址的映射。
ICMP 是为了更有效地转发 IP 数据报和提高交付成功的机会。它封装在 IP 数据报中,但是不属于高层协议。
ICMP 报文分为差错报告报文和询问报文。
Ping 是 ICMP 的一个重要应用,主要用来测试两台主机之间的连通性。
**Ping 的原理: **
是通过向目的主机发送 ICMP Echo 请求报文,目的主机收到之后会发送 Echo 回答报文。Ping 会根据时间和成功响应的次数估算出数据包往返时间以及丢包率。
用来跟踪一个分组从源点到终点的路径。
Traceroute 发送的 IP 数据报封装的是无法交付的 UDP 用户数据报,并由目的主机发送终点不可达差错报告报文。
**Traceroute的工作原理: **
①: 分类
②: 子网划分
③: 无分类
**分类: **
由两部分组成,网络号和主机号,其中不同分类具有不同的网络号长度,并且是固定的。
网络号:用于识别主机所在的网络;
主机号: 用于识别该网络中的主机
IP 地址 ::= {< 网络号 >, < 主机号 >}
**IP地址分为五类,**A类保留给政府机构,B类分配给中等规模的公司,C类分配给任何需要的人,D类用于组播,E类用于实验,各类可容纳的地址数目不同。
IP地址类别: | 高八位 | 占总IP地址数的比例: |
---|---|---|
A类:前一位固定为0 | 第一个八位的范围是0-127 目的: 保证了最小为0,最大为127 即255(全一)-128(最高位为1,其他为0)=127 | (127-0+1)/ 256=50% |
B类:前两位固定为10 | 第一个八位的范围是:128-191 前两位固定为10的目的是:为了让前八位表示的数最小为128 | (191-128+1) / 256=25% |
C类:前三位固定为110 | 第一个八位的范围是:192-223 前两位固定为110的目的是:保证最小192 | (223-192+1) / 256=12.5% |
D类:前四位固定为1110 不分网络地址和主机地址 | 第一个八位的范围是:224-239 | (239-224+1) / 256=6.25% |
E类:前四位固定为1111 不区分网络地址和主机地址 | 第一个八位的范围是:240-255 | (255-240+1) / 256=6.25% |
A类地址:
1)A类地址第1字节为网络地址,其它3个字节为主机地址。它的第1个字节的第一位固定为0,因此只有7位可供使用.
可指派的网络号为126个(即2^7-2=126),
减2 的原因:
第一: IP地址中的全0表示“这个(或者本)”,全1表示所有的。 网络号字段全0 的IP地址是个保留地址, 意思是本网络
第二: 网络号为127(即01111111)保留作为本地软件环回测试(loop back test)本主机的进程之间的通信之用。
2)A类地址可指派网络号范围:1—126
3)A类地址中的私有地址和保留地址:
① 10.X.X.X是私有地址(所谓的私有地址就是在互联网上不使用,而被用在局域网络中的地址),且
范围是(10.0.0.0—10.255.255.255)
② 127.X.X.X是保留地址,用做循环测试用的。
A类地址主机号占三个字节,因此每个A类网络中最大主机数: 2^24-2=16777214
这里减2 的原因: 全0的主机号字段, 表示该IP地址 是”本主机“所连结到的单个网络地址,(例如: 一主机的IP地址为5.6.7.8 ,则该主机所在的网络地址就是5.0.0.0), 而全1表示”所有的“ ,因此主机号全1表示该网络上的所有主机,
4)IP地址空间共2^32 个地址,整个A类地址2^31,占整个IP地址空间的50%.
关于全0全1 还可以再举两个例子:
例如: B类地址: 128.7.255.255 表示在网络128.7.0.0 上的所有主机, 而A类地址0.0.0.35 则表示 在这个网络上主机号为35 的主机;
B类地址:
B类地址第1字节和第2字节为网络地址,其它2个字节为主机地址。它的第1个字节的前两位固定为10,只剩下16-2=14位可以分配,
因为网络号字段后面的14位无论取什么值, 也不可能出现使整个2字节的网络号字段成为全0或全1, 所以这里就不存在网络总数减2的问题。
但是实际上B类网络地址的128.0.0.0 是不指派的,而可以指派的B类最小网络地址是128.1.0.0 , 因此B类地址可指派的网络数为 2^14-1=16383.
B 类地址的每个网络上的最大主机数2^16-2=65534
这里减2 的原因: 要扣除主机号全0全1的。 (全0表示该IP地址 是”本主机“所连结到的单个网络地址,全1 作为广播地址)
整个B类地址空间2^30, 占整个IP地址空间的25%.
2) B类地址可指派网络号范围:128.1—191.255。
3) B类地址的私有地址和保留地址
① 172.16.0.0—172.31.255.255是私有地址
② 169.254.X.X是保留地址。如果你的IP地址是自动获取IP地址,而你在网络上又没有找到可用的DHCP服务器。就会得到其中一个IP。
191.255.255.255是广播地址,不能分配。
C类地址
1)C类地址第1字节、第2字节和第3个字节为网络地址,第4个字节为主机地址。另外第1个字节的前三位固定为110, 还有21位可以分配,C类网络地址192.0.0.0也是不分配的, 可以指派的C类最小网络地址192.0.1.0,因此C类 地址可指派的网络总数 , 2^21-1=2097151 , 每一个C类网络地址的最大主机数2^8-2=254, 整个C类地址空间2^29 个地址,占整个IP地址空间的12.5%。
2)C类地址网络号范围:192.0.1—223.255.255。
3) C类地址中的私有地址:
192.168.X.X是私有地址。(192.168.0.0—192.168.255.255)
实体IP:
在网络的世界里,为了要辨识每一部计算机的位置,因此有了计算机 IP 位址的定义。一个 IP 就好似一个门牌!例如,你要去微软的网站的话,就要去『 64.4.11.42 』这个 IP 位置!这些可以直接在网际网络上沟通的 IP 就被称为『实体 IP 』了。
虚拟IP:
不过,众所皆知的,IP 位址仅为 xxx.xxx.xxx.xxx 的资料型态,其中, xxx 为 1-255 间的整数,由于计算机的成长速度太快,实体的 IP 已经有点不足了,好在早在规划 IP 时就已经预留了三个网段的 IP 做为内部网域的虚拟 IP 之用。这三个预留的 IP 分别为:
除去主机段全零/全一:
由于是虚拟 IP ,所以当您使用这些地址的时候﹐当然是有所限制的,限制如下:
私有位址的路由信息不能对外散播
使用私有位址作为来源或目的地址的封包﹐不能透过Internet来转送
关于私有位址的参考纪录(如DNS)﹐只能限于内部网络使用
由于虚拟 IP 的计算机并不能直接连上 Internet ,因此需要特别的功能才能上网。不过,这给我们架设IP网络提供了很大的方便﹐比如﹕您的公司还没有连上Internet﹐但这不保证将来不会。使用公共IP的话﹐如果没经过注册﹐在以后真正连上网络的时候﹐就很可能和别人冲突了。也正如前面所分析的﹐到时候再重新规划IP的话﹐将是件非常头痛的问题。这时候﹐我们可以先利用私有位址来架设网络﹐等到真要连上internet的时候﹐我们可以使用IP转换协定﹐如 NAT (Network Addresss Translation)等技术﹐配合新注册的IP就可以了。
注意它和广播的区别。从224.0.0.0到239.255.255.255都是这样的地址。224.0.0.1特指所有主机, 224.0.0.2特指所有路由器。这样的地址多用于一些特定的程序以及多媒体程序。如果你的主机开启了IRDP(Internet路由发现协议,使用组播功能)功能,那么你的主机路由表中应该有这样一条路由: 169.254.x.x
如果你的主机使用了DHCP功能自动获得一个IP地址,那么当你的DHCP服务器发生故障,或响应时间太长而超出了一个系统规定的时间,Windows系统会为你分配这样一个地址。如果你发现你的主机IP地址是一个诸如此类的地址,很不幸,十有八九是你的网络不能正常运行了。
广播通信是一个主机对所有主机的通信方式。若一个IP地址的2进制数全为1,也就是255.255.255.255,则这个地址用于定义整个互联网。如果设备想使IP数据报被整个Internet所接收,就发送这个目的地址全为1的广播包,但这样会给整个互联网带来灾难性的负担。因此网络上的所有路由器都阻止具有这种类型的分组被转发出去,使这样的广播仅限于本地网段。
一个网络中的最后一个地址为直接广播地址,也就是HostID全为1的地址。主机使用这种地址把一个IP数据报发送到本地网段的所有设备上,路由器会转发这种数据报到特定网络上的所有主机。
注意:这个地址在IP数据报中只能作为目的地址。另外,直接广播地址使一个网段中可分配给设备的地址数减少了1个。
若IP地址全为0,也就是0.0.0.0,则这个IP地址在IP数据报中只能用作源IP地址,这发生在当设备启动时但又不知道自己的IP地址情况下。在使用DHCP分配IP地址的网络环境中,这样的地址是很常见的。用户主机为了获得一个可用的IP地址,就给DHCP服务器发送IP分组,并用这样的地址作为源地址,目的地址为255.255.255.255(因为主机这时还不知道DHCP服务器的IP地址)。
127网段的所有地址都称为环回地址,主要用来测试网络协议是否工作正常的作用。比如使用ping.
127.0.0.1就可以测试本地TCP/IP协议是否已正确安装。另外一个用途是当客户进程用环回地址发送报文给位于同一台机器上的服务器进程,比如在浏览器里输入127.1.2.3,这样可以在排除网络路由的情况下用来测试IIS是否正常启动。
当某个主机向同一网段上的其他主机发送报文时就可以使用这样的地址,分组也不会被路由器转发。比如12.12.12.0/24这个网络中的一台主机12.12.12.2/24在与同一网络中的另一台主机12.12.12.8/24通信时,目的地址可以是0.0.0.8。
为了标识IP地址的网络部分和主机部分,要和地址掩码(Address Mask)结合,掩码跟IP地址一样也是32 bits,用点分十进制表示。IP地址网络部分对应的掩码部分全为“1”,主机部分对应的掩码全为“0”。
缺省状态下,如果没有进行子网划分,A类网络的子网掩码为255.0.0.0,B类网络的子网掩码为255.255.0.0,C类网络的子网掩码为255.255.255.0。利用子网,网络地址的使用会更加有效。
有了子网掩码后,IP地址的标识方法如下:
例:192.168.1.1 255.255.255.0或者标识成192.168.1.1/24(掩码中“1”的个数)
子网划分
通过在主机号字段中拿一部分作为子网号,把两级 IP 地址划分为三级 IP 地址。
IP 地址 ::= {< 网络号 >, < 子网号 >, < 主机号 >}
要使用子网,必须配置子网掩码。一个 B 类地址的默认子网掩码为 255.255.0.0,如果 B 类地址的子网占两个比特,那么子网掩码为 11111111 11111111 11000000 00000000,也就是 255.255.192.0。
注意,外部网络看不到子网的存在。
无分类
无分类编址 CIDR 消除了传统 A 类、B 类和 C 类地址以及划分子网的概念,使用网络前缀和主机号来对 IP 地址进行编码,网络前缀的长度可以根据需要变化。
IP 地址 ::= {< 网络前缀号 >, < 主机号 >}
CIDR 的记法上采用在 IP 地址后面加上网络前缀长度的方法,例如 128.14.35.7/20 表示前 20 位为网络前缀。
CIDR 的地址掩码可以继续称为子网掩码,子网掩码首 1 长度为网络前缀的长度。
一个 CIDR 地址块中有很多地址,一个 CIDR 表示的网络就可以表示原来的很多个网络,并且在路由表中只需要一个路由就可以代替原来的多个路由,减少了路由表项的数量。把这种通过使用网络前缀来减少路由表项的方式称为路由聚合,也称为 构成超网 。
在路由表中的项目由“网络前缀”和“下一跳地址”组成,在查找时可能会得到不止一个匹配结果,应当采用最长前缀匹配来确定应该匹配哪一个。
由于 IP 地址的紧缺,一个机构能申请到的 IP 地址数往往远小于本机构所拥有的主机数。并且一个机构并不需要把所有的主机接入到外部的互联网中,机构内的计算机可以使用仅在本机构有效的 IP 地址(专用地址)。有三个专用地址块:
VPN 使用公用的互联网作为本机构各专用网之间的通信载体。专用指机构内的主机只与本机构内的其它主机通信;虚拟指好像是,而实际上并不是,它有经过公用的互联网。
下图中,场所 A 和 B 的通信经过互联网,如果场所 A 的主机 X 要和另一个场所 B 的主机 Y 通信,IP 数据报的源地址是 10.1.0.1,目的地址是 10.2.0.3。数据报先发送到与互联网相连的路由器 R1,R1 对内部数据进行加密,然后重新加上数据报的首部,源地址是路由器 R1 的全球地址 125.1.2.3,目的地址是路由器 R2 的全球地址 194.4.5.6。路由器 R2 收到数据报后将数据部分进行解密,恢复原来的数据报,此时目的地址为 10.2.0.3,就交付给 Y。
专用网内部的主机使用本地 IP 地址又想和互联网上的主机通信时,可以使用 NAT 来将本地 IP 转换为全球 IP。
在以前,NAT 将本地 IP 和全球 IP 一一对应,这种方式下拥有 n 个全球 IP 地址的专用网内最多只可以同时有 n 台主机接入互联网。为了更有效地利用全球 IP 地址,现在常用的 NAT 转换表把传输层的端口号也用上了,使得多个专用网内部的主机共用一个全球 IP 地址。使用端口号的 NAT 也叫做网络地址与端口转换 NAPT。
路由选择和分组转发。
分组转发结构由三个部分组成:交换结构、一组输入端口和一组输出端口。
路由选择协议都是自适应的,能随着网络通信量和拓扑结构的变化而自适应地进行调整。
互联网可以划分为许多较小的自治系统 AS,一个 AS 可以使用一种和别的 AS 不同的路由选择协议。
可以把路由选择协议划分为两大类:
参考链接:
https://github.com/CyC2018/CS-Notes/blob/master/docs/notes/计算机网络 - 网络层.md
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。