| 分组的转发 | 属于同一条虚电路的分组均按照同一路由进行转发 | 每个分组独立选择路由进行转发 |
| 当结点出故障时 | 所有通过出故障的结点的虚电路均不能工作 | 出故障的结点可能会丢失分组,一些路由可能会发生变化 |
| 分组的顺序 | 总是按发送顺序到达终点 | 到达终点时不一定按发送顺序 |
| 端到端的差错处理和流量控制 | 可以由网络负责,也可以由用户主机负责 | 由用户主机负责 |
1.5有关的网际协议
-
网际协议 IP 是 TCP/IP 体系中两个最主要的协议之一。与 IP 协议配套使用的还有四个协议:
-
地址解析协议 ARP (Address Resolution Protocol)
-
逆地址解析协议 RARP (Reverse Address Resolution Protocol)
-
网际控制报文协议 ICMP (Internet Control Message Protocol)
-
网际组管理协议 IGMP (Internet Group Management Protocol)
1.6 网际层的 IP 协议及配套协议
1.7虚拟互联网络
互连在一起的网络要进行通信,会遇到许多问题需要解决,如:
-
不同的寻址方案
-
不同的最大分组长度
-
不同的网络接入机制
-
不同的超时控制
-
不同的差错恢复方法
-
不同的状态报告方法
-
不同的路由选择技术
-
不同的用户接入控制
-
不同的服务(面向连接服务和无连接服务)
-
不同的管理与控制方式
1.8 网络互相连接起来需要的中间设备
| 中间设备又称为中间系统或中继(relay)系统。 | |
| :-: | :-: |
| 物理层中继系统 | 转发器(repeater)。 |
| 数据链路层中继系统 | 网桥或桥接器(bridge)。 |
| 网络层中继系统 | 路由器(router)。 |
| 网桥和路由器的混合物 | 桥路器(brouter)。 |
| 网络层以上的中继系统 | 网关(gateway)。 |
1.9 虚拟互连网络的意义
-
所谓虚拟互连网络也就是逻辑互连网络,它的意思就是互连起来的各种物理网络的异构性本来是客观存在的,但是我们利用 IP 协议就可以使这些性能各异的网络从用户看起来好像是一个统一的网络。
-
使用 IP 协议的虚拟互连网络可简称为 IP 网。
-
使用虚拟互连网络的好处是:当互联网上的主机进行通信时,就好像在一个网络上通信一样,而看不见互连的各具体的网络异构细节。
2.1分类的 IP 地址
2.1.1 IP 地址及其表示方法
我们把整个因特网看成为一个单一的、抽象的网络。IP 地址就是给每个连接在因特网上的主机(或路由器)分配一个在全世界范围是唯一的 32 位的标识符。
IP 地址现在由因特网名字与号码指派公司ICANN (Internet Corporation for Assigned Names and Numbers)进行分配
2.1.2 IP 地址的编址方法
-
分类的 IP 地址。这是最基本的编址方法,在 1981 年就通过了相应的标准协议。
-
子网的划分。这是对最基本的编址方法的改进,其标准[RFC 950]在 1985 年通过。
-
构成超网。这是比较新的无分类编址方法。1993 年提出后很快就得到推广应用。
2.1.3 分类 IP 地址
每一类地址都由两个固定长度的字段组成,其中一个字段是网络号 net-id,它标志主机(或路由器)所连接到的网络,而另一个字段则是主机号 host-id,它标志该主机(或路由器)。
2.1.4点分十进制记法
2.1.5常用的三种类别的 IP 地址
2.2 IP 地址的一些重要特点
(1) IP 地址是一种分等级的地址结构。
分等级的两个 好处是:
-
第一,IP 地址管理机构在分配 IP 地址时只分配网络号,而剩下的主机号则由得到该网络号的单位自行分配。这样就方便了 IP 地址的管理。
-
第二,路由器仅根据目的主机所连接的网络号来转发分组(而不考虑目的主机号),这样就可以使路由表中的项目数大幅度减少,从而减小了路由表所占的存储空间。
(2) 实际上 IP 地址是标志一个主机(或路由器)和一条链路的接口。
-
当一个主机同时连接到两个网络上时,该主机就必须同时具有两个相应的 IP 地址,其网络号 net-id 必须是不同的。这种主机称为多归属主机(multihomed host)。
-
由于一个路由器至少应当连接到两个网络(这样它才能将 IP 数据报从一个网络转发到另一个网络),因此一个路由器至少应当有两个不同的 IP 地址。
(3) 用转发器或网桥连接起来的若干个局域网仍为一个网络,因此这些局域网都具有同样的网络号 net-id。
(4) 所有分配到网络号 net-id 的网络,范围很小的局域网,还是可能覆盖很大地理范围的广域网,都是平等的。
(5)在同一个局域网上的主机或路由器的IP 地址中的网络号必须是一样的。
(6)路由器总是具有两个或两个以上的 IP 地址。路由器的每一个接口都有一个不同网络号的 IP 地址。
2.3 IP地址与硬件地址
从层次的角度看:
-
硬件地址(或物理地址)是数据链路层和物理层使用的地 址。
-
IP 地址是网络层和以上各层使用的地址,是一种逻辑地址
在具体的物理网络的链路层只能看见 MAC 帧而看不见 IP 数据报
IP层抽象的互联网屏蔽了下层很复杂的细节,在抽象的网络层上讨论问题,就能够使用统一的、抽象的 IP 地址研究主机和主机或主机和路由器之间的通信
注意
-
首部的IP地址是为了路由器能够路由转发去寻找目的主机来使用的,所以IP地址在网络层使用。
-
硬件地址是给链路层及以下使用的,正由于硬件地址与主机相符,我们才能接受MAC帧,
-
在 IP 层抽象的互联网上只能看到 IP 数据报。
-
路由器只根据目的站的 IP 地址的网络号进行路由选择
2.4 地址解析协议 ARP 和 逆地址解析协议 RARP
我们已经知道了一个机器(主机或路由器)的IP地址,如何找 出其相应的硬件地址?
地址解析协议 ARP 就是用来解决这样的问题的。
ARP 作用就是从网络层使用的 IP 地址,解析出在数据 链路层使用的硬件地址
2.4.1地址解析协议ARP要点
当主机 A 欲向本局域网上的某个主机 B 发送 IP 数据报时, 就先在其 ARP 高速缓存中查看有无主机 B 的 IP 地址
-
如有,就可查出其对应的硬件地址 ,写入MAC帧。
-
如没有, ARP 进程在本局域网上广播发送一个 ARP 请 求分组。收到 ARP 响应分组后,将得到的 IP 地址到硬件地址的映射写入 ARP 高速缓存。
2.4.2 地址解析协议 ARP
不管网络层使用的是什么协议,在实际网络的链路上传送数据帧时,最终还是必须使用硬件地址。
每一个主机都设有一个 ARP 高速缓存(ARP cache),里面有所在的局域网上的各主机和路由器的 IP 地址到硬件地址的映射表。
2.4.3 ARP 高速缓存的作用
-
存放最近获得的 IP 地址到 MAC 地址的绑定
-
为了减少网络上的通信量,主机 A 在发送其 ARP 请求分组时,就将自己的 IP 地址到硬件地址的映射写入 ARP 请求分组。
-
当主机 B 收到 A 的 ARP 请求分组时,就将主机 A 的这一地址映射写入主机 B 自己的 ARP 高速缓存中。这对主机 B 以后向 A 发送数据报时就更方便了。
2.4.4 应当注意的问题
-
ARP 是解决同一个局域网上的主机或路由器的 IP 地址和硬件地址的映射问题。
-
如果所要找的主机和源主机不在同一个局域网上,那么就要通过 ARP 找到一个位于本局域网上的某个路由器的硬件地址,然后把分组发送给这个路由器,让这个路由器把分组转发给下一个网络。剩下的工作就由下一个网络来做。
-
从IP地址到硬件地址的解析是自动进行的,主机的用户对这种地址解析过程是不知道的。
-
只要主机或路由器要和本网络上的另一个已知 IP 地址的主机或路由器进行通信,ARP 协议就会自动地将该 IP 地址解析为链路层所需要的硬件地址。
2.4.5 使用 ARP 的四种典型情况
-
发送方是主机,要把IP数据报发送到本网络上的另一个主机。这时用 ARP 找到目的主机的硬件地址。
-
发送方是主机,要把 IP 数据报发送到另一个网络上的一个主机。这时用 ARP 找到本网络上的一个路由器的硬件地址。剩下的工作由这个路由器来完成。
-
发送方是路由器,要把 IP 数据报转发到本网络上的一个主机。这时用 ARP 找到目的主机的硬件地址。
-
发送方是路由器,要把 IP 数据报转发到另一个网络上的一个主机。这时用 ARP 找到本网络上的一个路由器的硬件地址。剩下的工作由这个路由器来完成。
2.4.6为什么我们不直接 使用硬件地址进行通信?
由于全世界存在着各式各样的网络,它们使用不同的硬件地址。要使这些异构网络能够互相通信就必须进行非常复杂的硬件地址转换工作,因此几乎是不可能的事。
连接到因特网的主机都拥有统一的 IP 地址,它们之间的通信就像连接在同一个网络上那样简单方便,因为调用 ARP 来寻找某个路由器或主机的硬件地址都是由计算机软件自动进行的,对用户来说是看不见这种调用过程的。
2.4.7 逆地址解析协议 RARP
-
逆地址解析协议 RARP 使只知道自己硬件地址的主机能够知道其 IP 地址。
-
这种主机往往是无盘工作站。 因此 RARP协议目前已很少使用。
2.5 IP数据报的格式
-
一个 IP 数据报由首部和数据两部分组成。
-
首部的前一部分是固定长度,共 20 字节,是所有 IP 数据报必须具有的。
-
在首部的固定部分的后面是一些可选字段,其长度是可变的。
2.5.1 涉及到的一些概念:
-
版本——占 4 位,指 IP 协议的版本,目前的 IP 协议版本号为 4 (即 IPv4)
-
首部长度——占 4 位,可表示的最大数值是 15 个单位(一个单位为 4 字节)因此 IP 的首部长度的最大值是 60 字节
-
区分服务——占 8 位,用来获得更好的服务,在旧标准中叫做服务类型,但实际上一直未被使用过。1998 年这个字段改名为区分服务。只有在使用区分服务(DiffServ)时,这个字段才起作用。在一般的情况下都不使用这个字段 。
-
总长度——占 16 位,指首部和数据之和的长度,单位为字节,因此数据报的最大长度为 65535 字节。总长度必须不超过最大传送单元 MTU。
注意
标识,标志,片偏移这三个字段可使分片后的各数据报最后能正确的重装成为原来的数据包 。
-
标识(identification) 占 16 位,它是一个计数器,用来产生数据报的标识。
-
标志(flag) 占 3 位,目前只有前两位有意义。
标志字段的最低位是 MF (More Fragment)。MF = 1 表示后面“还有分片”。MF = 0 表示最后一个分片。
标志字段中间的一位是 DF (Don’t Fragment) 。只有当 DF = 0 时才允许分片。
-
片偏移(12 位)指出:较长的分组在分片后,某片在原分组中的相对位置。片偏移以 8 个字节为偏移单位
-
生存时间(8 位)记为 TTL (Time To Live),数据报在网络中可通过的路由器数的最大值。
-
源站发送数据时,将TTL赋值(约为两主机间路由器数的两倍)
-
数据报每经过一个路由器,TTL=TTL-1
-
若减1后,TTL=0,丢弃此数据报,并发送ICMP报文通知源主机
-
协议(8 位)字段指出此数据报携带的数据使用何种协议,以便目的主机的 IP 层将数据部分上交给哪个处理过程。
-
首部检验和(16 位)检测在传输的过程中,从发送方到接收方IP数据报中的比特值有没有出现错误, 字段只检验数据报的首部,不检验数据部分。这里不采用 CRC 检验码而采用简单的计算方法。 16 位二进制反码求和算法,注意参与运算的知识IP数据报的首部部分。
-
每经过一个路由器,IP分组头都要改变一次,数据部分并不改 变。设置头校验和只对变化部分进行校验是合理的,可以减少路由器对 每个接收分组的处理时间,提高路由器的运行效率。
- 源地址和目的地址都各占 4 字节
2.5.2 IP数据报的首部可变部分
-
IP 首部的可变部分就是一个选项字段,用来支持排错、测量以及安全等措施,内容很丰富。
-
选项字段的长度可变,从 1 个字节到 40 个字节不等,取决于所选择的项目。
-
增加首部的可变部分是为了增加 IP 数据报的功能,但这同时也使得 IP 数据报的首部长度成为可变的。这就增加了每一个路由器处理数据报的开销。
-
实际上这些选项很少被使用。
2.6 IP数据报分片与重组
-
IP数据报作为网络层数据必然要通过帧来传输;
-
一个数据报可能要通过多个不同的物理网络;
-
每一种物理网络都规定了各自帧的数据域最大字节长度 的最大传输单元MTU。
举例:数据报长度是3820字节,他所通过的网络的MTU是1420字节,整个数据报长度是3820字节,则数据部分是3800字节。
2.7 IP 层转发分组的流程
-
有四个 A 类网络通过三个路由器连接在一起。每一个网络上都可能有成千上万个主机。
-
可以想像,若按目的主机号来制作路由表,则所得出的路由表就会过于庞大。
-
但若按主机所在的网络地址来制作路由表,那么每一个路由器中的路由表就只包含 4 个项目。这样就可使路由表大大简化。
-
在路由表中,对每一条路由,最主要的是(目的网络地址,下一跳地址)
2.7.1查找路由表
根据目的网络地址就能确定下一跳路由器,这样做的结果是:
-
IP 数据报最终一定可以找到目的主机所在目的网络上的路由器(可能要通过多次的间接交付)。
-
只有到达最后一个路由器时,才试图向目的主机进行直接交付。
2.7.2特定主机路由
-
这种路由是为特定的目的主机指明一个路由。
-
采用特定主机路由可使网络管理人员能更方便地控制网络和测试网络,同时也可在需要考虑某种安全问题时采用这种特定主机路由。
2.7.3 默认路由(default route)
-
路由器还可采用默认路由以减少路由表所占用的空间和搜索路由表所用的时间。
-
这种转发方式在一个网络只有很少的对外连接时是很有用的。
-
默认路由在主机发送 IP 数据报时往往更能显示出它的好处。
-
如果一个主机连接在一个小网络上,而这个网络只用一个路由器和因特网连接,那么在这种情况下使用默认路由是非常合适的。
2.7.4需要强调指出
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。
深知大多数前端工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年Web前端开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上前端开发知识点,真正体系化!
由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新
如果你觉得这些内容对你有帮助,可以添加V获取:vip1024c (备注前端)
前端面试题汇总
JavaScript
性能
linux
前端资料汇总
一个人可以走的很快,但一群人才能走的更远。不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎扫码加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
(https://i-blog.csdnimg.cn/blog_migrate/717dc53530a185c17bde7793ab8566f4.png)
JavaScript
性能
linux
前端资料汇总
一个人可以走的很快,但一群人才能走的更远。不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎扫码加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
[外链图片转存中…(img-rnC3fYIH-1712885737029)]