目录
网络层
理解路由选择
IP协议
IP首部
IP分片原理
IP校验和原理
网段划分
IP地址数量限制
私有和公网IP地址
路由
什么是IP地址,IP地址有什么特征?IP地址和MAC地址有什么区别和联系?
IP报文由IP头部和IP数据两个部分组成,IP头部一般占用多少个字节?
IP头部包含哪些数据?
IP头部的TTL数据有什么作用?
网络层是怎么界定区分一个IP报文的?
路由表是网络层重要的数据结构,路由表有什么作用?
ARP协议有什么作用?如何清理本机的ARP缓存?
ARP协议的设计有一定的缺陷,请通过搜索引擎自行搜索了解利用ARP漏洞攻击的方法。
IP地址一共4Bytes,32bits,理论上可以表示多少个IP?
为了科学的使用IP地址,早期的科学家把IP地址划分为A、B、C三类IP地址,这些IP地址有什么特点?
A类地址理论上可以有多少个子网,每个子网理论上有多少个主机号?
请列举特殊的网络号和特殊的主机号。
如何计算一个IP的网络号是什么?
一个网络的掩码是255.255.255.248,请问这个网络可以连接多少台主机?
网络地址转换技术(NAT)解决了什么问题?
NAT技术的实现原理。
ICMP报文和IP报文一样,也是由头部和数据两个部分组成,请简述ICMP报文的头部字段。
ICMP报文和IP报文由什么关系?ICMP报文是怎么样传输的。
常见的利用ICMP协议的计算机应用有ping和traceroute,请简述这两个应用的功能,以及这两个应用是怎么利用ICMP协议完成工作的。
网络层路由可以抽象成一个图算法问题,按照网络的大小可以分为内部网关协议和外部网关协议,请列举与网络路由相关的算法。
请简述RIP协议的过程。
RIP协议有什么优点和缺点?
请简述OSPF协议的过程,OSPF协议中起到重要的算法是什么算法?
OSPF协议有什么优点和缺点?
网络层有了RIP协议和OSPF协议,为什么还需要BGP协议?BGP协议解决了什么问题?
概念及介绍:
在网络体系中,每一层都是服务于对应的上下层的,网络层也是服务于上层的传输层和下层的数据链路层
网络层介于传输层和数据链路层之间,其主要作用是实现两个不同网络系统之间的数据透明传送,具体包括路由选择,拥塞控制和网际互连等(注:负责不同的网络之间(基于数据包的IP地址)尽力转发数据包,不负责丢包重传和接收顺序)
网络层在数据从数据链路层向传输层进行数据传输的通信中,起到构建一个中间通信子网的作用。不同网络有不同的网络层协议和地址规范,不同网络有不同的设计规范,属于不同的组织来管理,必须通过授权,并由专门的协议来负责网络间的通信
如果只是同一局域网内的各个计算机之间的通信,单靠物理层和数据链路层就可以建立通信链路完成用户间的数据通信,但要扩大应用范围,连接不同的局域子网,就需要借助网络层处理各个网络子网的协议,从而进行计算机的网络互连,所以网络层在 TCP/IP 协议体系中叫网际互连层
网络层的主要作用:
1.屏蔽网络差异,提供透明传输
网络层就是为了解决不同网络有不同的规范要求的差异问题,寻找一个不同网络间都能共同遵守的网络通信规范,以便不同网络间能相互识别,并接受对方的网络请求。也就是一个中转站的作用,两个毫无交集的网络通过这个中转站来建立交集
2.为网络间通信提供路由选择
路由选择是根据一定的原则和路由选择算法在多个结点的通信子网中选择一条到达目的节点的最佳路径的过程。确定路由选择的策略称为路由算法。在无连接的数据包服务中,网络节点要为每个数据包做出路由选择,即选择到达目的节点的最佳路线,而在面向连接的虚电路服务中,存在一条专门的逻辑线路,在建立连接时就已经确定了路有路径,无需额外选择
3.拥塞控制
拥塞控制是为了避免网络传输路径中数据的传输延迟或死锁。数据链路层中的流量控制功能,是针对数据链路中点对点传输速率的控制,这里的拥塞控制是针对在网络层传输路径中的端到端传输效率的控制。主要采用预约缓冲区、许可证和分组丢弃等方式
IP协议是互联网上最基本的协议之一,它主要负责实现数据包的传输和路由选择。
IP协议主要特点包括:
IP协议主要功能包括:
IP头部固定信息的长度为20字节,IP头部选项(Options)为可选字段,用于传递一些特殊的控制信息,如时间戳或安全选项等。
IP头部固定信息包括以下字段:
版本:4位,表示IPv4协议的版本号,IPv4协议的版本号为4。
头部长度:4位,指示该IPv4头部信息的长度,单位为4字节,因此它的最小值为20字节。
服务类型:8位,用于指示该数据包的服务类型,包括优先级、延迟和吞吐量等信息。
总长度:16位,指示整个IPv4数据包的长度,单位为字节,包括头部和数据部分。
标识:16位,由发送方生成并用于标识数据包的唯一性,当一个IP数据包分片后,IP分片使用同一个标识,目的端根据IP标识进行数据包重组。
标志:3位,用于指示数据包是否分片和是否是最后一片数据包,三位分别为:
Reserved bit 保留位,Don`t fragment(DF)禁止分片,More fragments(MF)更多分片。
DF为0指示IP数据包为分片包。MF为1指示IP数据包不是最后一个分片,为0指示为最后一个分片包。
片偏移:13位,指示该数据包的偏移量,用于将分片的数据包重新组装成原始数据包,片偏移为该IP分片在整个IP包的位置(单位为字节),具体数值为数据包偏移的字节数除以8。
生存时间:8位,表示数据包在互联网上可以经过的最大路由器数量,用于避免数据包在互联网上循环传输。
协议:8位,指示该数据包所使用的上层协议,如TCP、UDP或ICMP等。
首部校验和:16位,用于检查IPv4头部信息的完整性和正确性。
源地址:32位,表示发送方的IP地址。
目标地址:32位,表示接收方的IP地址。
IP分片是将一个大的IP数据包分成多个较小的数据包进行传输的过程。
IP分片的原理是在发送端将原始IP数据包分割成多个较小的数据包,每个数据包都有自己的IP头部,并且这些数据包都有相同的标识符。在接收端,当所有的分片都到达后,它们会被重新组合成原始的IP数据包。
最大传输单元MTU:
发送方IP校验和计算
接收方IP校验和验证
5类IP地址:
A类 0.0.0.0到127.255.255.255
B类 128.0.0.0到191.255.255.255
C类 192.0.0.0到223.255.255.255
D类 224.0.0.0到239.255.255.255
E类 240.0.0.0到247.255.255.255
随着Internet的飞速发展,这种划分方案的局限性很快显现出来,大多数组织都申请B类网络地址, 导致B类地址很快就分配完了, 而A类却浪费了大量地址,然而实际网络架设中, 不会存在一个子网内有这么多的情况. 因此大量的IP地址都被浪费掉了,针对这种情况提出了新的划分方案, 称为CIDR
子网掩码:
引入一个额外的子网掩码来区分网络号和主机号
子网掩码也是一个32位的正整数. 通常用一串 "0" 来结尾
将IP地址和子网掩码进行 "按位与" 操作, 得到的结果就是网络号
网络号和主机号的划分与这个IP地址是A类、B类还是C类无关
IP地址与子网掩码做与运算可以得到网络号, 主机号从全0到全1就是子网的地址范围
IP地址和子网掩码还有一种更简洁的表示方法:例如140.252.20.68/24,表示IP地址为140.252.20.68, 子网掩码的高24位是1,也就是255.255.255.0
概念介绍:
- IP地址(IPv4)是一个4字节32位的正整数. 那么一共只有 2的32次方 个IP地址, 大概是43亿左右. 而TCP/IP协议规定, 每个主机都需要有一个IP地址
- 实际上, 由于一些特殊的IP地址的存在, 数量远不足43亿,另外IP地址并非是按照主机台数来配置的, 而是每一个网卡都需要配置一个或多个IP地址
- CIDR在一定程度上缓解了IP地址不够用的问题(提高了利用率, 减少了浪费, 但是IP地址的绝对上限并没有增加), 仍然不是很够用
三种解决方式:
- 动态分配IP地址:只给接入网络的设备分配IP地址. 因此同一个MAC地址的设备, 每次接入互联网中, 得到的IP地址不一定是相同的
- NAT技术:能够让不同局域网当中同时存在两个相同的IP地址,NAT技术不仅能解决IP地址不足的问题,而且还能够有效地避免来自网络外部的攻击,隐藏并保护网络内部的计算机
- IPv6:IPv6并不是IPv4的简单升级版. 这是互不相干的两个协议, 彼此并不兼容; IPv6用16字节128位来表示一个IP地址,目前IPv6还没有普及
私有IP地址范围:
如果一个组织内部组建局域网,IP地址只用于局域网内的通信,而不直接连到Internet上,理论上使用任意的IP地址都可以,但是RFC1918规定了用于组建局域网的私有IP地址
- 10.* ,前8位是网络号,共16,777,216个地址
- 172.16.到172.31.,前12位是网络号,共1,048,576个地址
- 192.168.*,前16位是网络号,共65,536个地址
包含在这个范围中的, 都成为私有IP, 其余的则称为全局IP(或公网IP)
运营商的作用:
- 实际网络通信的基础设施都是运营商搭建的,我们访问服务器的数据并不是直接发送到了对应的服务器,而是需要经过运营商建设的各种基站以及各种路由器,最终数据才能到达对应的服务器
- 用户上网的数据首先必须经过运营商的相关网络设备,然后才能发送到互联网公司对应的服务器,而所谓的网段划分、子网划分等工作实际都是运营商做的
NAT技术
什么是NAT:
NAT(Network Address Translator,网络地址转换)是用于在本地网络中使用私有地址,在连接互联网时转而使用全局 IP 地址的技术,NAT实际上是为解决IPv4地址短缺而开发的技术。
NAT的工作机制:
以 10.0.0.10 的主机与 163.221.120.9 的主机进行通信为例讲解 NAT 的工作机制。利用 NAT,途中的 NAT 路由器将发送源地址从 10.0.0.10 转换为全局的 IP 地址(202.244.174.37)再发送数据
反之,当响应数据从 163.221.120.9 发送过来时,目标地址(202.244.174.37)先被转换成私有 IP 地址 10.0.0.10 以后再被转发
网络被分为私网和公网两个部分,NAT网关设置在私网到公网的路由出口位置,双向流量必须都要经过NAT网关
NAT 路由器在两个访问方向上完成两次地址的转换或翻译,出方向做源信息替换,入方向做目的信息替换
网络访问只能先由私网侧发起,公网无法主动访问私网主机(不存在替换会话,无法找到对应的私网主机)
NAT 路由器的存在对通信双方是保持透明的
NAT 路由器为了实现双向翻译的功能,需要维护一张关联表,把会话的信息保存下来
NAT类型:
1.静态NAT
内部本地地址一对一转换成内部全局地址,相当内部本地的每一台PC都绑定了一个全局地址。一般用于在内网中对外提供服务的服务器
2.动态NAT
在内部本地地址转换的时候,在地址池中选择一个空闲的,没有正在被使用的地址,来进行转换,一般选择的是在地址池定义中排在前面的地址,当数据传输或者访问完成时就会放回地址池中,以供内部本地的其他主机使用,但是,如果这个地址正在被使用的时候,是不能被另外的主机拿来进行地址转换的
3.端口复用NAPT
面对私网内部数量庞大的主机,如果NAT只进行IP地址的简单替换,就会产生一个问题:当有多个内部主机去访问同一个服务器时,从返回的信息不足以区分响应应该转发到哪个内部主机。此时,需要 NAT 设备根据传输层信息或其他上层协议去区分不同的会话,并且可能要对上层协议的标识进行转换,比如 TCP 或 UDP 端口号。这样 NAT 网关就可以将不同的内部连接访问映射到同一公网IP的不同传输层端口,通过这种方式实现公网IP的复用和解复用。这种方式也被称为端口转换PAT、NAPT或IP伪装,但更多时候直接被称为NAT,因为它是最典型的一种应用模式
NAT的优点和缺点:
优点
节省合法的公有 IP 地址(最大的优点)
当网络发生变化时,避免重新编址
对外隐藏内部地址,增加网络安全性(网络访问只能先由私网侧发起,公网无法主动访问私网主机)
缺点
无法从NAT 的外部向内部服务器建立连接(NAT穿越)
转换表的生成和转换操作都会产生一定的开销
通信过程中一旦 NAT 遇到异常需重新启动时,所有的 TCP 连接都将被重置。即使备置两台 NAT 做容灾备份,TCP 连接还是会被断开
路由器的查找结果处理行为:
路由表查询的具体过程:
每个路由器内部会维护一个路由表,我们可以通过route命令查看云服务器上对应的路由表
路由表生成算法:
IP地址是唯一标记互联网中计算机的标识,IP地址共占用4个字节,使用点分十进制表示。IP地址和MAC地址都是一种标识,IP地址标记网络中的计算机,MAC地址标记网络硬件设备。
IP头部一般占用20个字节。
版本: 占4位,指的是IP协议的版本,通信双方的版本必须一致,当前主流版本是4,即IPv4,也有IPv6
首部位长度: 占4位,最大数值为15,表示的是IP首部长度,单位是“32位字”(4个字节),也即是IP首部最大长度为60字节
服务类型(TOS): 占8位
总长度: 占16位,最大数值为65535,表示的是IP数据报总长度(IP首部+IP数据)
标识 :16位
标志 :3位
片偏移: 13位
TTL: 占8位,表明IP数据报文在网络中的寿命,每经过一个
设备,TTL减1,当TTL=0时,网络设备必须丢弃该报文
协议: 占8位,表明IP数据所携带的具体数据是什么协议(如:TCP、UDP等)
首部校验和: 占16位,校验IP首部是否有出错
源IP地址: 32位
目的IP地址: 32位
TTL占用一个字节,表示IP数据包在网络中的寿命,当TTL为0时,网络设备将丢弃这个报文。
IP协议头部有个字段为报文总长度,占用16个比特位,网络层根据这个字段划分报文。
路由表存储着目的地址和下一跳地址的映射关系,路由表是网络层可以正常工作的重要数据结构。
ARP协议全称是地址解析协议(Address Resolution Protocol)。ARP协议可以将IP地址翻译成物理地址。在Windows系统下使用arp -d命令就可以清除arp缓存。
最常见的方法是:利用ARP欺骗,造成局域网内主机通信的失败。
原理:其局域网内的"攻击机"通过冒充同网络号下的"受害者主机"的物理地址(mac地址),欺骗网关,让网关原来应该发给“受害者主机”的数据包转而发给“攻击机”,这就导致了“受害者主机”无法收到应答的数据包,也就等于断网了,这个过程就是常说的ARP欺骗。
2^32个。
IP地址可以分为网络号和主机号两个部分,A类地址网络号为8位,主机号为24位;B类地址网络号为16位,主机号为16位;C类地址网络号为24位,主机号为8位。
A类地址网络号为8位,其首位为0,故理论上可以表示2的7次方个网络,主机号为24位,每个子网可以有2的24次方个主机。
主机号全0、主机号全1的IP地址为特殊的主机号,不可分配。
主机号全0 表示当前网络段,不可分配为特定主机;
主机号为全1 表示广播地址,向当前网络段所有主机发消息。
使用子网掩码和IP地址进行按位与运算就可得到IP地址对应的网络号。
这个网络的主机号只有3位,最多可以表示8个主机,减去全0、全1两个特殊主机号,一共可以连接6台主机。
NAT技术解决了网络IP地址不够用的问题。
NAT技术在网络设备中通过维护一个映射表,通过映射表可以将外部地址转换为内部地址。
ICMP报文的头部字段由三个部分组成,分别是8位类型、8位代码和16位校验和。
ICMP协议(Internet Control Message Protocol 因特网报文控制协议)和IP协议虽然同为网络层协议,但是ICMP是不能单独传输的,ICMP报文需要传输时作为IP报文的数据进行传输。
Ping用于向特定的目的主机发送 ICMP Echo请求报文,测试目的站是否可达及了解其有关状态。
Traceroute 可以探测IP数据报在网络中走过的路径。
距离矢量算法、Dijkstra(迪杰斯特拉)算法。
路由器初始化路由信息(两个向量 和S )
对相邻路由器X发过来的信息,对信息的内容进行修改(下一跳地址设置为X,所有距离加1)
i. 检索本地路由,将信息中新的路由插入到路由表里面
ii. 检索本地路由,对于下一跳为X的,更新为修改后的信息
iii. 检索本地路由,对比相同目的的距离,如果新信息的距离更小,则更新本地路由表
如果3分钟没有收到相邻的路由信息,则把相邻路由设置为不可达(16跳)
优点: 实现简单,开销很小
缺点: 限制了网络的规模;“坏消息“传得慢,更新收敛时间过长, 这也使得RIP协议整体性能较差。
1. 向所有的路由器发送消息;
2. 消息描述该路由器与相邻路由器的链路状态;
3. 只有链路状态发生变化时,才发送更新信息。
OSPF协议解决了RIP协议的问题,对整个网络有一定的 “全局观”,但是OSPF协议本身较为复杂,实现开销较大。
BGP协议全称为边际网关协议(Border Gateway Protocol),
是一种运行在AS之间的协议。BGP协议是因为计算机网络中不同的AS之间人为因素的复杂性而提出的,在实际网络环境中,不同AS之间数据的传输还受政治、安全等方面的影响。为了在协调多个影响因素的同时又能够找到一条能够到达目的的比较好的路由,就需要用到BGP协议。