IP基础知识

时间:2024-04-02 12:49:41

目录

IP相当于OSI参考模型的第3层

主机与节点

网络层与数据链路层的关系

IP地址属于网络层地址

路由控制

发送数据至最终目标地址

路由控制表

数据链路的抽象化

IP属于面向无连接型

为了提高可靠性,上一层的TCP采用面向有连接型


IP相当于OSI参考模型的第3层

IP (1Pv4、1Pv6)相当于OSI参考模型中的第3层一一网络层。

网络层的主要作用是“实现终端节点之间的通信”。这种终端节点之间的通 信也叫“点对点(end-to-end)通信”。

网络层的下一层一数据链路层的主要作用是在互连同 一种数据链路的节点之间进行包传递。

而一旦跨越多种数据链路,就需要借助网 络层。网络层可以跨越不同的数据链路,即使是在不同的数据链路上也能实现两 端节点之间的数据包传输。

IP基础知识

主机与节点

在互联网世界中,将那些配有IP地址的设备叫做“主机”。这里的 主机,可以是超大型计算机,也可以是小 型计算机。这是因为互联网在当初刚发明的时候,只能连接这类大型的 设备,因此习惯上就将配有1P地址的设备称为“主机”。

然而,准确地说,主机的定义应该是指“配置有IP地址,但是不进行路由控制的设备"

既配有IP地址又具有路由控制能力的设备叫做 “路由器”,跟主机有所区别。

而节点则是主机和路由器的统称。

网络层与数据链路层的关系

数据链路层提供直连两个设备之间的通信功能。

与之相比,作为网络层的IP则负责在没有直连的两个网络之间进行通信传输。那么为什么一定需要这样的两 个层次呢?它们之间的区别又是什么呢?

在此,我们以旅行为例说明这个问题。有个人要去一个很远的地方旅行,并 且计划先后乘坐飞机、火车、公交车到达目的地。为此,他决定先去旅行社购买 机票和火车票。

旅行社不仅为他预订好了旅途过程中所需要的机票和火车票,甚至为他制定 了一个详细行程表,详细到几点几分需要乘坐飞机或火车都一目了然。

IP基础知识

仔细分析一下机票和火车票,不难发现,每张票只能够在某一限定区间内移动。

此处的“区间内”就如同通信网络上的数据链路。而这个区间内的出发地点和目的地点就如同某一个数据链路的源地址和目标地址等首部信息"。

整个全程的行程表的作用就相当于网络层。

如果我们只有行程表而没有车票,就无法搭乘交通工具到达目的地。反之,如果除了车票其他什么都没有,恐怕也很难到达目的地。因为你不知道该坐什么车,也不知道该在哪里换乘。因此,只有两者兼备,既有某个区间的车票又有整个旅行的行程表,才能保证到达目的地。与之类似,计算机网络中也需要数据链路层和网络层这个分层才能实现向最终目标地址的通信。

IP地址属于网络层地址

 

在计算机通信中,为了识别通信对端,必须要有一个类似于地址的识别码进 行标识

数据链路的MAC地址正是用来标识 同一个链路中不同计算机的一种识别码
作为网络层的IP, 也有这种地址信息。一般叫做IP地址。

IP地址用于在 “连接到网络中的所有主机中识别出进行通信的目标地址"。因此,在TCP/IP通 信中所有主机或路由器必须设定自己的IP地址。

不论一台主机与哪种数据链路连接,其IP地址的形式都保持不变。以太网、 无线局域网、PPP等,都不会改变IP地址的形式。 网络层对数据链路层的某些特性进行了抽象。数据链路的类型对IP地址形式透 明,这本身就是其中抽象化中的一点。

另外,在网桥或交换集线器等物理层或数据链路层数据包转发设备中,不需 要设置IP地址。因为这些设备只负责将IP包转化为0、1比特流转发或对数据 链路帧的数据部分进行转发,而不需要应对IP协议。

IP基础知识

路由控制

路由控制(Routing)是指将分组数据发送到最终目标地址的功能。即使网络 非常复杂,也可以通过路由控制确定到达目标地址的通路。一旦这个路由控制的 运行出现异常,分组数据极有可能“迷失",无法到达目标地址。因此,一个数 据包之所以能够成功地到达最终的目标地址,全靠路由控制。

IP基础知识

发送数据至最终目标地址

Hop译为中文叫“跳"。它是指网络中的一个区间。IP包正是在网络中一个 个跳间被转发。因此IP路由也叫做多跳路由

在每一个区间内决定着包在下一跳 被转发的路径。

一跳(1 Hop)是指利用数据链路层以下分层的功能传输数据帧的一 个区间。

以太网等数据链路中使用MAC地址传输数据帧。此时的一跳是指从 源MAC地址到目标MAC地址之间传输帧的区间。也就是说它是主机或 路由器网卡不经其他路由器而能直接到达的相邻主机或路由器网卡之间 的一个区间

一跳的这个区间内,电缆可以通过网桥或交换集线器相 连,不会通过路由器或网关相连

IP基础知识

多跳路由是指路由器或主机在转发IP数据包时只指定下一个路由器或主机, 而不是将到最终目标地址为止的所有通路全都指定出来。因为每一个区间(跳) 在转发IP数据包时会分别指定下一跳的操作,直至包达到最终的目标地址。

以乘坐火车旅游为例具体说明。

IP基础知识

在前面的例子中,虽然已经确定了最终的目标车站,但是一开始还是不知道 如何换乘才能到达这个终极目标地址。因此,工作人员给出的方法是首先去往最 近的一个车站,再咨询这一车站的工作人员。而到了这个车站以后再询问工作人 员如何才能达到最终的目标地址时,仍然得到同样的建议:乘坐某某线列车到某 某车站以后再询问那里的工作人员。

于是,该乘客就按照每一个车站工作人员的指示,到达下一车站以后再继续 询问车站的工作人员,得到类似的建议。

因此,即使乘客不知道其最终目的地的方向也没有关系。可以通过每到一个 车站咨询工作人员的这种极其偶然,'的方法继续前进,也可以到达最终的目标 地址。

IP数据包的传输亦是如此。可以将旅行者看做IP数据包,将车站和工作人员 看做路由器。当某个IP包到达路由器时,路由器首先查找其目标地址,从而再 决定下一步应该将这个包发往哪个路由器,然后将包发送过去。当这个IP包到达 那个路由器以后,会再次经历查找下一目标地址的过程,并由该路由器转发给下 一个被找到的路由器。这个过程可能会反复多次,直到找到最终的目标地址将数 据包发送给这个节点。

这里还可以用快递的送货方式来打比方。IP数据包犹如包裹,而送货车犹如 数据链路。包裹不可能自己移动,必须有送货车承载转运。而一辆送货车只能将 包裹送到某个区间范围内。每个不同区间的包裹将由对应的送货车承载、运输, IP的工作原理也是如此。

路由控制表

为了将数据包发给目标主机,所有主机都维护着一张路由控制表(Routing Table)。

该表记录IP数据在下一步应该发给哪个路由器。IP包将根据这个路由表 在各个数据链路上传输。

IP基础知识

数据链路的抽象化

IP是实现多个数据链路之间通信的协议。数据链路根据种类的不同各有特 点。对这些不同数据链路的相异特性进行抽象化也是IP的重要作用之一。数据链路的地址可以被抽象化为IP地址。因此,对IP的上 一层来说,不论底层数据链路使用以太网还是无线LAN亦或是PPP, 都将被一视 同仁。

不同数据链路有个最大的区别,就是它们各自的最大传输单位(MTU: Maxi­mum Transmission Unit)不同。就好像人们在邮寄包裹或行李时有各自的大小限制 一样。

IP基础知识

MTU的值在以太网中是1500字节,在FDDI中是4352字节,而ATM则为 9180字节.

IP的上一层可能会要求传送比这些MTU更多字节的数据,因此必须在线路上传送比包长还要小的MTU。

为了解决这个问题, IP进行分片处理(IP Fragmentation)。顾名思义,所谓分片处理是指,将较大的IP包分成多个较小的IP包。

分片的包到了对端目标地址以后会再被组合起来传给上一层。

即从IP的上次层看,它完全可以忽略数据包在途中的各个数据链路上的MTU,而只需要按照源地址发送的长度接收数据包。IP就是以这种方式抽象化了数据链路层,使得从上层更不容易看到底层网络构造的细节。

IP属于面向无连接型

IP面向无连接。即在发包之前,不需要建立与对端目标地址之间的连接。上 层如果遇到需要发送给IP的数据,该数据会立即被压缩成IP包发送出去。

在面向有连接的情况下,需要事先建立连接。如果对端主机关机或不存在, 也就不可能建立连接。反之,一个没有建立连接的主机也不可能发送数据过来。

面向无连接的情况则不同。即使对端主机关机或不存在,数据包还是会被 发送出去。反之,对于一台主机来说,它会何时从哪里收到数据也是不得而知的。 通常应该进行网络监控,让主机只接收发给自己的数据包。若没有做好准备很有 可能会错过一些该收的包。因此,在面向无连接的方式下可能会有很多冗余的 通信。

IP要采用面向无连接主要有两点原因:一是为了简化,二是为了提速。

面向连接比起面向无连接 处理相对复杂。甚至管理每个连接本身就是一个相当繁琐的事情。此外,每次通 信之前都要事先建立连接,又会降低处理速度。需要有连接时,可以委托上一层 提供此项服务。因此,IP为了实现简单化与高速化采用面向无连接的方式。

为了提高可靠性,上一层的TCP采用面向有连接型

IP提供尽力服务(Best Effort) , 意指“为了把数据包发送到最终目 标地址,尽最大努力。”然而,它并不做“最终收到与否的验证”。IP数 据包在途中可能会发生丢包、错位以及数据量翻倍等问题。如果发送端 的数据未能真正发送到对端目标主机会造成严重的问题。例如,发送一 封电子邮件,如果邮件内容中很重要的一部分丢失,会让收件方无法及 时获取信息。

因此提高通信的可靠性很重要。TCP就提供这种功能。如果说IP只负责将数据发给目标主机,那么TCP则负责保证对端主机确实接收到 数据。

为什么不让IP具有可靠传输的功能, 从而把这两种协议合并到一起呢?

这其中的缘由就在于,如果要一种协议规定所有的功能和作用,那 么该协议的具体实施和编程就会变得非常复杂,无法轻易实现。相比之 下,按照网络分层,明确定义每层协议的作用和责任以后,针对每层具 体的协议进行编程会更加有利于该协议的实现。

网络通信中如果能进行有效分层,就可以明确TCP与IP各自协议的 最终目的,也有利于后续对这些协议进行扩展和性能上的优化。分层也 简化了每个协议的具体实现。互联网能够发展到今天,与网络通信的分 层密不可分。