写在前面的话:“自己打败自己的远远多于比别人打败的。”学习了两天感觉学习热情没有刚开始那么强烈了,所以我发现应该在自己热情四射的时候优先学习比较重要的知识点。我是梦阳辰!未来和我一起学习起来吧!(这一层的内容比较多,文章很长建议收藏再看!)
当我们使用QQ跟好友聊天的时候,如何让自己发送的消息发送给特定的主机(朋友使用的主机)呢?网络层帮我们解决了这个问题(IP数据报的首部明确标志了这两台主机的IP地址)。网络层为主机之间提供逻辑通信。
精彩提前看:
MAC地址与IP地址
我在学习之前一直有一个疑问就是MAC地址和IP地址有啥区别呢?
IP地址是抽象的地址,是通过软件实现的,为什么要IP地址呢?而MAC地址(物理地址)是真是存在的。
虽然数据在网络层传播的时候,最后还是得用到MAC地址(后面有分析),但是通过使用抽象的IP地址屏蔽了底层隐蔽各种底层的网络复杂性而便于分析和研究问题。
由于全世界存在着各式各样的网络,他们使用不同的硬件地址。要使这些异构的网络能够互相通信,就必须进行非常复杂的硬件地址转换工作。
但是IP编址就把这个复杂问题解决了。连接到互联网的主机只需各自拥有一个唯一的IP地址,他们之间的通信仿佛就连接在同一个网络那样简单方便。
因此虚拟的IP网络上用的IP地址进行通信,给广大计算机用户带来了很大的方便。
文章目录
01.概述
数据在网络设备中传输,那么它是采用何种方式传输呢?
首先我们先了解一下数据在网络中的交换方式。
数据交换的方式
1)电路交换
电话网络,建立连接。
多路复用。
优点:
通信时延小
有序传输
没有冲突
实时性强
缺点:
建立连接时间长。
线路独占,使用效率低。
灵活性差。
无差错控制能力。
2)报文交换
报文:原应用发送的信息的整体。
整个报文先传送到相邻节点,全部存储下来后查找转发表,转发到下一个节点。
优点:
无需建立连接。
存储转发,动态分配线路。
线路可靠新较高。
线路利用率较高。
多目标服务。
缺点:
有存储转发时延。
报文大小不定,需要网络节点有较大缓存空间。
3)分组交换
分组:把大的数据块分割成小的数据块。
单个分组(整个报文的一部分)传送到相邻节点,存储下来后查找转发表,转发到下一个节点。
优点:无需建立连接
存储转发,动态分配线路。
线路可靠新较高。
线路利用率较高。
相对于报文交换,存储管理更容易。
缺点:
有存储转发的时延。
需要传输额外的信息量。
乱序到目的主机时,需要对分组排序重组。
3.1数据报交换
目前我们采用的是这种方式,不事先为分组的传输确定传输路径,而是由每个分组独立确定。不同的分组传输路径可能不同。
每个分组携带源和目的地址。
路由器根据分组的目的地址转发分组:(基于路由协议/算法构建的转发表,检索转发表)
3.2虚电路交换
结合了数据报和电路交换的方式。
路由算法
最佳路由:“最佳”只能是相对于某一种特定要求下得出的较为合理的选择。
02.IP地址(逻辑地址)与物理地址(MAC地址/硬件地址)
物理地址是数据链路层和物理层使用的地址。
而IP地址是网络层和以上各层使用的地址,是一种逻辑地址。IP地址使用软件实现的。
使用IP地址的IP数据报一旦交给了数据链路层,就被封装成了MAC帧了,MAC帧在传送时使用的源地址和目的地址都是硬件地址,这两个硬件地址都写在了MAC帧首部中。
MAC地址在经过不同的网络上传送时,其MAC帧首部中的源地址和目的地址要发生改变。
而IP数据报中的首部源地址和目的地址是不会发生改变的。即IP层抽象的互联网屏蔽了下层这些和复杂的细节。只要我们在网络层上讨论问题,就能够使用统一的,抽象的IP地址研究主机和主机或路由器之间的通信。
地址解析协议ARP
当我们知道了一个主机或路由器的IP地址,如何找出其相应的硬件地址呢?
地址解析协议ARP就是用来解决这样的问题的。
IP协议使用了ARP协议,所以通常就把ARP协议划归为网络层。(RARP)逆地址解析协议。将物理地址转化为IP地址。但是现在的DHCP协议也有此功能。
IP地址和物理地址因为格式不同(IP地址有32位,局域网的物理地址48位)不存在简单的映射关系。
当新主机加入,撤走一些主机或更换网络适配器也会是主机的硬件地址发生改变。
ARP为了解决这个问题实在主机ARP高速缓存中存放一个从IP地址到硬件地址的映射表,并且这个映射表还经常动态更新。
每一台主机都设有一个ARP高速缓存,里面有本局域网上的各主机和路由器的IP地址到硬件地址的映射表,这些都是主机目前知道的一些地址,那么主机是怎样知道这些地址的呢?
可见数据在本局域网上的传输使用的是MAC地址。
当A要向本局域网上的某台主机B发送IP数据报时,现在其ARP高速缓存中查找是否有B的IP地址,有就在ARP高速缓存中查找其对应的硬件地址,再把这个硬件地址写入MAC帧中,然后通过局域网把该MAC帧发往此硬件地址。
如果查不到该主机的IP地址。
主机A的ARP进程会在本局域网广播一个ARP请求分组,里面包含A的IP地址和物理地址,和想得到主机B的IP地址。本局域网上的所有主机运行的ARP进程都会收到这个ARP请求分组。主机B的IP地址与ARP请求分组中要查询的IP地址一致,就收下这个分组将其IP地址和物理地址写入ARP高速缓存中,并且向主机A发送ARP响应分组。注意:ARP响应分组时普通的单播,即从一个源地址到一个目的地址。
ARP对保存在高速缓存中的每一个映射地址项目都设有生存时间。ARP解决了同一个局域网的主机或路由器的IP地址和硬件地址的映射问题。
当主机A跟另一个网络的主机B通信时,主机A只需要找到本局域网路由器的物理地址即可,剩下工作交给路由器来完成。(路由器最少处于两个网络中,因此路由器具有多个IP地址)
既然在网络链路上传送的帧最终都是按照硬件地址找到目的主机的,那为什么我们还要使用抽象的IP地址呢?直接使用硬件地址进行通信不就完了。
由于全世界存在着各式各样的网络,他们使用不同的硬件地址。要使这些异构的网络能够互相通信,就必须进行非常复杂的硬件地址转换工作。
但是IP编址就把这个复杂问题解决了。连接到互联网的主机只需各自拥有一个唯一的IP地址,他们之间的通信仿佛就连接在同一个网络那样简单方便。
因此虚拟的IP网络上用的IP地址进行通信,给广大计算机用户带来了很大的方便。
DHCP协议
主机如何获得IP地址?
静态配置
动态配置
DHCP服务器
动态主机配置协议DHCP是应用层协议,使用客户/服务器方式,客户端和服务端通过广播方式进行交互,基于UDP。
DHCP提供即插即用联网机制,主机可以从服务器动态获取IP地址,子网掩码,默认网关,DNS服务器名称与IP地址允许地址重用,支持移动用户加入网络,支持在用地址续租。
1.主机广播DHCP发现报文。(有没有DHCP服务器啊,试图找到网络中的DHCP服务器)
2.DHCP服务器广播DHCP提供报文。(有,有,有,服务器拟分配给主机一个IP地址及相关配置,先到先得)
3.主机广播DHCP请求报文。(我用你给我的IP地址啦?主机向服务器请求提供IP地址。)
4.DHCP服务器广播DHCP确认报文。(用吧!)
03.IP数据报的格式
数据链路层的MTU指的是链路层数据帧可封装的数据的上限。
以太网的MTU是1500字节。
当所传输的IP数据报长度超过MTU值,这时就要进行IP分片操作。
标识:同一数据报的分片使用同一标识。
04.IP地址转发分组的流程
路由器是如何转发分组的呢?
路由器在转发分组时,我们只要关心下一个路由器,而不用关心连接在该网络的具体拓扑以及连接在该网络上有多少台主机(交给ARP)。
对此,在路由表中,对每一条路由最主要的是以下两个信息:
(目的网络地址,下一跳地址)
我们就根据目的网络地址来确定下一跳路由器。
由此IP数据报最终一定可以找到目的主机所在目的网络上的路由器。
只有到达最后一个路由器时,才试图向目的主机进行直接交付。
也可对目的主机指明一个路由,采用特定主机路由可使网络管理人员方便的控制网络和测试网络,在对网络的连接或路由表进行排错时也非常有用。
路由器还可以采用默认路由以减小路由表所占用的空间和搜索路由表所用的时间。这种方式适合对外连接很少的网络。
IP数据报的首部没有指明“下一跳的IP地址”。那么转发的数据报怎样能够找到下一跳路由器呢?
其实前面已经提到过,当路由器收到一个待转发的数据报,在路由表中得出下一跳路由器的IP地址后,不是把这个地址填入IP数据报,而是送交给数据链路层的网络接口软件。网络接口软件负责把下一跳路由器的IP地址转换成硬件地址,并将硬件地址放在链路层的MAC帧的首部,然后根据这个硬件地址找到下一跳路由器。
能不能在路由表中不使用IP地址而直接使用硬件地址呢?
不行,使用抽象的IP地址,本来就是为了隐蔽各种底层的网络复杂性而便于分析和研究问题,这样就不可避免地要付出一些代价。
05.互联网的路由选择协议
路由选择协议的核心就是路由算法。即需要何种算法来获得路由表中的各项目。
一个理想的算法应具有以下特点:
1)算法必须是正确和和完整的。
2)算法在计算上简单。
3)算法能够适应通信量和网络拓扑的变化。
4)算法应具有稳定性。
5)算法应是公平的。
6)算法应是最佳的。
最佳只是相对于某一种特定要求下得出的较为合理的要求。
根据算法能否随网络通信量和拓扑自适应地进行调整变化来划分,则有两大类:
静态路由选择策略(非自适应路由选择)与动态路由选择策略(自适应路由选择)。
自适应路由选择实现较难,开销大,适用于较复杂的网络。
分层次的路由选择协议:
互联网采用的路由选择协议主要是自适应的(动态的),分布式路由选择协议。
由于互联网的规模非常大;许多单位不愿意外界了解自己单位网络的布局细节和本部门采用路由选择协议的原因互联网采用分层次的路由选择协议。
为此可以把整个网络分为许多自治系统,一般记为AS。AS是在单一技术管理下的一组路由器。
目前的互联网中,一个大的ISP就是一个自治系统。
这样互联网就把路由选择协议分为两大类:
1)内部网关协议(域内路由选择)(IGP):在一个自治系统中使用的路由选择协议,跟其他自治系统无关。(RIP,OSPE)
2)外部网关协议(域间路由选择)(EGP):不同自治系统之间的通信。即源主机和目的主机不在同一自治系统中。(BGP-4)
每个自治系统可以自己决定运行哪一个内部路由选择协议。每个自治系统除了运行内部路由选择协议外,还要运行自治系统间的路由选择协议(BGP-4)。
内部网关协议RIP
RIP适合小的网络
RIP是应用层的协议。
RIP是一种分布式的基于距离向量的路由选择协议,是因特网的标准,最大优点是简单。
RIP协议要求网络中每一个路由器都维护从他自己到其他每一个目的网络的唯一最佳距离记录(即一组距离)。
距离:通常为”跳数“,即从源端口到目地端口所经过的路由器个数,经过一个路由器跳数加一。特别的,从一路由器到直接连接的网络距离为1。RIP允许一条路由最多只能包含15个路由器。因此距离为16表示网络不可达。
路由器之间通过交换信息,完善表项。
RIP协议和谁交换?多久交换一次?交换什么?
1)仅和相邻路由器交换信息。
2)路由器交换的信息是自己的路由表。
3)每30s交换一次路由信息,然后路由器根据新信息更新路由表。若超过180s没收到邻居路由器的通告,则判定邻居没了,并更新自己的路由表。
4)路由器刚开始工作的时候,只知道直接连接的网络距离(距离为1),接着每一个路由器也只和数目有限的相邻路由器交换更新路由信息。
经过若干次更新后,所有路由器最终都会知道本自治系统任何一个网络的最短距离和下一跳路由器的地址,即收敛。
路由表是怎么更新的呢?
距离向量算法:
距离向量算法练习:
RIP协议的报文格式:
RIP协议具有好消息传得快,坏消息传的慢的特点。
内部网关协议OSPE
适合较复杂的网络
链路状态的路由算法:
OSPF的区域:
外部网关协议BGP
BGP协议报文格式:
BGP-4的四种报文
三种路由协议的比较:
路由器的构成
路由器是一种具有多个输入端口和多个输出端口的专用计算机,其任务是转发分组。
从路由器某个输入端口收到的分组,按照分组要去的目的地(目的网络),把该分组从路由器的某个合适的输出端口转发给下一跳路由器。下一跳路由器也按照这个方式转发分组。
路由器结构可划分为两大部分:
路由选择部分和分组转发部分
分组转发部分:
它由三部分组成:交换结构,一组输入端口(硬件接口),一组输出端口。
转发只涉及一个路由器,而路由选择涉及到很多路由器。
06.IPV4地址
分类的IP地址:(已过时)最基本的编址方式。
满足不同网络的需求。
分为A,B,C类
A类地址网络号占一字节。
B类地址网络号占两字节。
C类地址网络号占三字节。
D类地址(前4位是1110)用于多播。
E类地址(前四位是1111)保留为以后用。
子网的划分:对最基本的编址的改进。
构成超网(无分类编址方式):推广。
IP地址:全世界唯一的32位/4字节标识符,标识路由器主机的接口。
路由器不同的接口有不同的IP地址。
IP地址::={<网络号>,<主机号>}
私有的iP地址
路由器对目的地址是私有IP地址的数据报一律不进行转发。
这时候怎么办呢?
网络地址转换NAT(Network Address Translation):在专用网连接到因特网的路由器上安装NAT软件,安装了NAT软件的路由器叫NAT路由器,他至少有一个有效的外部全球IP地址。
当数据报传到本地路由器时,路由器会将主机的源地址替换成路由器的IP地址,端口号也一样。
07子网划分
分类的IP地址的弱点
1)IP地址空间的利用率有时很低。
2)给每一个物理网络分配一个网络号会使路由表变得太大而使网络性能变坏。
思想:
某单位划分子网后,对外仍然表现为一个网络,即本单位外的网络看不见本单位内子网的划分。
子网掩码:网络号有多少位,1就有多少位。
IP地址和子网掩码相与,得到子网的网络地址。
划分子网后,路由表必须包含以下三项内容:目的网络地址,子网掩码和下一跳地址。
因此路由器转发分组算法:
1)先从收到的数据报首部提取目的IP地址D。
2)判断是否可以直接交付。对路由器直接相连的网络进行排查,用各网络的子网掩码跟D进行与操作,看结果是否与相应的网络相匹配。若匹配直接交付。否则间接交付,执行(3)。
3)若路由表中有目的地址的特定主机路由,则把数据报传送给路由表中所指明的下一跳路由器。否则执行(4).
4)对路由表中的每一行(目的网络地址,子网掩码,下一跳地址),用其中的子网掩码和D进行与操作,结果为N,若N与该行的目的网络地址匹配,则把数据报传给该行指明的下一跳路由器,否则执行(5)。
5)若路由表有一个默认路由,则把数据报传送给路由表中所指明的默认路由器,否则执行(6)
6)报告转发分组出错。
08.无分类编址CIDR(构造超网)
划分子网一定程度上缓解了互联网在发展中遇到的困难。然而仍然面临尽早解决的三个问题。
1)B类地址在1992年已分配近一半,马上就要分完。
2)互联网主干网上的路由表中的项目数急剧增长。
3)IPV4的地址空间已经耗尽。2011年2月3日,IANA宣布IPV4耗尽。
09.ICMP协议
为什么要ICMP协议?
为了更有效的转发IP数据报和提高交付成功的机会。
网际控制报文协议
ICMP协议允许主机或路由器报告差错情况和提供有关异常情况的报告。
ICMP报文的种类:
1)ICMP差错(或异常)报告报文
2)ICMP询问报文。
ICMP报文装在IP数据报中,作为其中的数据部分。
ICMP差错报文的类型
1.终点不可达:当路由器或主机不能交付数据报时就像源点发送终点不可达报文。(无法交付)
**2.源点抑制:**当路由器或主机由于拥塞而丢弃数据报时,就向源点发送源点抑制报文。
**3.时间超过:**当路由器收到生存时间TTL=0的数据报时,出丢弃该数据报外,还要向源点发送时间超过报文。当终点在预先规定的时间内不能收到一个数据报的全部数据报片时,就把收到的数据包片丢弃,并向源点发送时间超过报文。
**4.参数问题:**当路由器或目的主机收到的数据报的首部中有的字段的值不正确时,就丢弃该数据报,并向源点发送参数问题报文。(首部字段有问题)
5.改变路由(重定向):路由器把改变路由报文发送给主机,让主机知道下次应将数据报发送给另外的路由器(可通过更好的路由)。
IP数据报首部的检验和并不检验IP数据报的数据部分,因此不能保证经过传输的ICMP报文不产生差错。
把收到的需要进行差错报告的IP数据包的首部和数据字段的前8个字节提取出来,作为ICMP的数据字段,再加上相应的ICMP差错报告报文的前8个字节,就构成了ICMP差错报告报文。提取收到的数据报的数据字段前8个字节是为了得到运输层的端口号(TCP/UDP)以及运输层报文的发送序号。这些信息对源点通知高层协议是有用的。
整个ICMP报文作为IP数据报的数字字段发送给源点。
不应发送ICMP差错报文的情况
1)对ICMP差错报告报文不再发送ICMP差错报告报文。
2) 对第一个分片的数据报片的所有后续数据报片都不发送ICMP差错报告报文。
3)对具有组播(多播)地址的数据报都不发送ICMP差错报告报文。
4)对具有特殊地址(如127.0.0.0或0.0.0.0)的数据报不发送ICMP差错报告报文。
ICMP询问报文
1.回送请求和回答报文
主机或路由器向特定目的主机发出的询问,收到此报文的主机必须给源主机或路由器发送ICMP回送回答报文。(测试目的站是否可达以及了解其相关状态)
2.时间戳请求或回答报文
请求主机或路由器回答当前的日期和时间。(用来进行时钟同步和测量时间)
ICMP的应用
PING:测试两个主机之间的连通性,使用了ICMP回送请求和回答报文。(应用层直接使用网络层ICMP)
Traceroute:跟踪一个分组从源点到终点的路径,使用ICMP时间超过差错报告报文。(UNIX操作系统的)
在Windows下这个命令是tracert。
10.IPv6
为什么要IPv6?
IPV4地址快消耗殆尽。(CIDR,NAT延缓了消耗的速度)
IPv6从根本上解决地址耗尽问题。
改进首部格式,达到快速处理/转发数据报。
IPv4和IPv6
1.IPv6将地址从32位(4B)扩大到128位(16B),更大的地址空间。
2.IPv6将IPv4校验和字段彻底移除,以减少每跳的处理时间。
3.IPv6将IPv4的可选字段移除首部,变成了扩展首部,成为灵活的首部格式,路由器通常不对扩展的首部进行检查,大大提高了路由器的处理效率。
4.IPv6支持即插即用(自动配置),不需要DHCP协议。
5.IPv6首部长度必须是8B的整数倍,IPv4首部是4B的整数倍。
6.IPv6只能在主机处分片,IPv4可以在路由器和主机处分片。
7.ICMPv6:附加报文类型:“分组过大”。
8.IPv6支持资源预分配,支持实时视像等要求,保证一定的带宽和时延的应用。
9.IPv6取消了协议字段,改成了下一个首部字段。
10.IPv6取消了总长度字段,改用有效载荷长度字段。
11.IPv6取消了服务类型字段。
IPv6地址表示形式:
一般形式:冒号十六进制记法:
IPv6中,每个地址占128位。IPv6的地址空间是不可能用完的。
IPv4采用点分十进制记法,而IPv6采用冒号十六进制记法。他把每个16位的值用十六进制值表示。
IPv6向IPv4过渡的策略
IPv6也不保证数据包的可靠交付,因此IPv6也需要使用ICMP来反馈一些差错信息。新的版本称为ICMPv6,它比ICMPv4要复杂得多。
地址解析协议ARP和网际组管理协议IGMP的功能都被合并到ICMPv6中。
11.IP多播(组播)
IP组播地址
IP组播地址让原设备能够将分组发送给一组设备。属于多播组的设备将被分配一个组播组IP地址(一群共同需求主机的相同标识)。
组播地址范围为:224.0.0.0~239.255.255.255(D类地址),一个D类地址表示一个组播组。只能用作分组的目的地址。源地址总是单播地址。
1.应用于UDP。(不提供可靠交付)
硬件组播
网际组管理协议IGMP
使用IP数据报传输报文。
IGMP工作两个阶段
多播(组播)路由选择协议
12.虚拟专用网VPN和网络地址转换NAT
什么是虚拟专用网VPN?
利用公用的互联网作为本机构各专用网之间的通信载体,这样的专用网又称为:虚拟专用网(Virtual Private Network)。
由于IPv4地址的短缺。一个机构能够申请到的IP地址数往往小于本机构的所有主机数。考虑到安全问题,一个机构内也并不需要将所有的主机接入到外部网络。
对于这些仅在机构内部通信的主机就可以由本机构自行分配其IP地址。即让这些计算机仅在本机构有效的IP地址(本地地址)。这也就意味着不同机构的本地地址可以重合。
但是并不意味着机构可以任意分配IP地址,因为该地址可能和互联网上的某个地址重合,导致地址二义性。
RFC 1918指明了一些专用地址。这些地址只能用于内部通信,而不能用与互联网上的主机通信。互联网上的路由器,对于目的地址为专用地址的数据报一律不进行转发。这也就意味着,一个机构内可以任意分配专用地址。
采用专用IP地址的互联网络称为专用互联网,本地互联网或专用网。
那么问题来了,如果一个机构的许多部门范围分布的很广(如:世界各地),这些部门需要经常交换信息。该怎么办呢?
方法一:租用电信公司的线路,将这些机构连起来,为本机构使用。但是费用较高。
方法二:利用公用的互联网作为本机构各专用网之间的载体。
如果专用网不同网点之间的通信必须经过公用的互联网,但又有保密要求,那么所有通过互联网传送的数据都必须加密。
虚拟表示:”好像是“。因为现在并没有真正使用通信专线。
如果一个机构要构建自己的V’PV必须自己在每一个场所配置专门的硬件和软件。
使用IP隧道技术实现虚拟专用网
部门之间的内部网络所构成的虚拟专用网VPN又称内联网。表示都属于同一机构。
有时合作伙伴要加入进来。这样的VPN就成为外联网(VPN)。
远程接入VPN
有时某个机构在外地并没有部门,而是流动的员工,这时流动的员工可以通过拨号接入互联网。而在公司的个人电脑中的VPN软件可以在员工的个人电脑和公司的主机之间建立VPN隧道。
网络地址转换NAT
专用网内部的一些主机已经分配到了本地IP地址,但现在又想和互联网上的主机通信,这可怎么办?
这时就可以使用网络地址转换NAT,即在专用网连接到互联网的路由器上安装NAT软件。
因为路由器拥有多个有效的外部全球地址,当本地地址的主机在和外界通信时,路由器NAT将本地地址转换为路由器的IP地址和外界主机进行通信,当外界主机发来响应时,路由器再将其IP地址转换为本地地址发给主机。
为了更加有效地利用NAT路由器上的全球IP地址,现在常用的NAT转换表把运输层的端口号也加上了。这样就可以使多个拥有本地地址的主机,公用一个NAT路由器上的IP地址。使用端口号的NAT也叫做网络地址与端口号转换(NAPT)。
注意专用网的主机不能充当服务器。因为互联网上的主机给本地主机发起通信时,路由器不知道,应该将其转换成哪个本地地址。
13.移动IP
移动位置,IP地址不变。
相关术语:
移动IP技术是移动节点(计算机/服务器等)以固定的网络IP地址,实现跨越不同网段的漫游功能,并保证了基于网络IP的网络权限在漫游过程中不发生改变。
移动节点: 具有永久IP地址的移动设备。
归属代理(本地代理):一个移动节点拥有的就“居所”称为归属网络,在归属网络中代表移动节点执行移动管理功能的实体叫做归属代理。
外部代理(外地代理):在外部网络中帮助移动节点完成移动管理功能的实体称为外部代理。
永久地址(归属地址/主地址):移动站点在归属网络中的原始地址。
转交地址(辅地址):移动站点在外部网络中使用的临时地址。