IP (Internet Protocol) 是计算机网络中用于标识和定位设备的一种协议。它是互联网通信的基础协议之一,用于在网络中传送数据包。
IP 协议的主要功能是提供逻辑上的地址和路由选择。每个连接到互联网的设备(如计算机、路由器等)都被分配一个唯一的 IP 地址,用于在网络中唯一标识这个设备。IP 地址由一串数字表示,通常以IPv4或IPv6的格式呈现。
IPv4(Internet Protocol version 4)是目前广泛使用的 IP 版本,由四个由点分隔的十进制数字组成,每个数字的取值范围是0到255,例如 192.168.0.1。IPv4 地址空间有限,随着互联网的迅速发展,IPv6(Internet Protocol version 6)被提出并逐渐推广使用。IPv6 地址采用128位的格式,由冒号分隔的十六进制数字和字母组成,例如 2001:0db8:85a3:0000:0000:8a2e:0370:7334。
IP 协议还负责将数据包从源设备传输到目标设备。在发送数据时,数据被分割成多个 IP 数据包,每个包包含目标地址、源地址和数据等信息。通过路由选择算法,IP 协议根据目标地址选择合适的路径将数据包传递到目标设备。每个中间设备(如路由器)根据目标地址进行转发,直到数据包到达目标设备。
总结来说,IP 是计算机网络中的一种协议,用于标识和定位设备,以及提供数据包的传输和路由功能。通过 IP 地址,设备可以在网络中唯一标识和寻址。通过 IP 协议,数据可以通过路由选择算法传输到目标设备。
IP在TCP/IP参考模型处于第三层,也就是网络层。网络层的主要作用是:实现主机与主机之间的通信,也叫点对点(end to end)通信。
IP 的作用是主机之间通信用的,而 MAC 的作用则是实现「直连」的两个设备之间通信,而 IP 则负责在「没有直连」的两个网络之间进行通信传输。
网络层和数据链路层是计算机网络中的两个关键层次,它们在网络通信中有不同的职责和功能。
数据链路层:
网络层:
关系:
数据链路层和网络层在计算机网络中是紧密相关的,它们协同工作以实现端到端的数据传输。数据链路层负责将数据帧从一个节点传输到下一个节点,而网络层负责将数据包从源节点传输到目标节点。网络层依赖于数据链路层提供的可靠传输服务,而数据链路层依赖于网络层提供的路径选择和地址寻址服务。
具体而言,网络层在传输数据时将数据分为多个数据包,并在每个数据包中添加源和目标的网络地址。然后,数据链路层将每个数据包封装为帧,并在物理链路上进行传输。在目标节点接收到帧后,数据链路层会将帧拆封,并将数据包传递给网络层。网络层根据目标地址对数据包进行路由选择,并将数据包传递给上层的传输层或应用层。
因此,数据链路层和网络层是协同工作的,它们共同实现了数据在计算机网络中的传输和路由。网络层依赖于数据链路层来提供物理链路上的可靠传输,而数据链路层依赖于网络层来确定数据的目标地址和路由路径。
IP 地址(IPv4 地址)由 32
位正整数来表示,IP 地址在计算机是以二进制的方式处理的。而人类为了方便记忆采用了点分十进制的标记方式,也就是将 32 位 IP 地址以每 8 位为组,共分为 4
组,每组以「.
」隔开,再将每组转换成十进制。
IP 地址分类成了 5 种类型,分别是 A 类、B 类、C 类、D 类、E 类。
其中对于 A、B、C 类主要分为两个部分,分别是网络号和主机号。
广播地址用于在同一个链路中相互连接的主机之间发送数据包
广播地址可以分为本地广播和直接广播两种。
而 D 类和 E 类地址是没有主机号的,所以不可用于主机 IP,D 类常被用于多播,E 类是预留的分类,暂时未使用。
多播用于将包发送给特定组内的所有主机。
简单明了、选路(基于网络地址)简单
计算机网络中,IP分类(也称为IP地址分类)是一种将IP地址划分为不同的类别,以便更有效地管理和分配IP地址。IP分类的主要优点包括:
简单易于理解: IP分类将IP地址划分为几个不同的类别,每个类别有其固定的网络和主机部分,使得网络管理员和用户能够更容易地理解和识别网络结构。
地址分配: IP分类允许将IP地址划分为多个类别,每个类别可以用于不同规模和用途的网络。这使得网络管理员能够更好地分配IP地址,并根据需求进行灵活的地址规划。
路由表管理: IP分类使路由器能够更有效地管理路由表。每个IP地址类别都有固定的网络前缀,这样路由器可以更快速地匹配目标地址并选择正确的路由。
多子网支持: IP分类为多子网的创建提供了基础。不同的子网可以在同一网络内部运行,这有助于实现更好的资源分配和更精细的网络管理。
网络性能: 由于每个IP地址类别都有特定的网络前缀,路由器可以更快地查找目标子网,并进行更高效的数据包转发,从而提高网络性能。
然而,IP分类也存在一些缺点,导致它逐渐被CIDR(无类别域间路由,Classless Inter-Domain Routing)取代:
地址浪费: IP分类中的每个类别都有固定的网络前缀长度,导致在某些情况下可能会浪费大量IP地址。这使得IP地址耗尽成为一个问题。
地址空间不均衡: 每个IP地址类别的地址空间分配是固定的,这可能导致某些类别的地址空间过剩,而其他类别则可能不足。
难以适应变化: IP分类不够灵活,难以适应网络拓扑变化和不同规模的网络需求。CIDR更加灵活,能够更好地应对不断变化的网络环境。
路由表大小: IP分类导致路由表大小不可控,特别是在互联网规模的网络中,可能会引发路由表爆炸问题,增加路由器的负担。
综上所述,虽然IP分类在早期的互联网中发挥了重要作用,但随着网络的增长和发展,CIDR取代了传统的IP分类,提供了更灵活和高效的IP地址分配和路由管理方法。
这种方式不再有分类地址的概念,32 比特的 IP 地址被划分为两部分,前面是网络号,后面是主机号
表示形式 a.b.c.d/x
,其中 /x
表示前 x 位属于网络号, x 的范围是 0 ~ 32
,这就使得 IP 地址更加具有灵活性。比如 10.100.122.2/24,这种地址表示形式就是 CIDR,/24 表示前 24 位是网络号,剩余的 8 位是主机号。
还有另一种划分网络号与主机号形式,那就是子网掩码,掩码的意思就是掩盖掉主机号,剩余的就是网络号。
在上面我们知道可以通过子网掩码划分出网络号和主机号,那实际上子网掩码还有一个作用,那就是划分子网。子网划分实际上是将主机地址分为两个部分:子网网络地址和子网主机地址。形式如下:
在 A、B、C 分类地址,实际上有分公有 IP 地址和私有 IP 地址。
公有 IP 地址是有个组织统一分配的,假设你要开一个博客网站,那么你就需要去申请购买一个公有 IP,这样全世界的人才能访问。并且公有 IP 地址基本上要在整个互联网范围内保持唯一。
私有 IP 地址通常是内部的 IT 人员管理,公有 IP 地址是由 ICANN
组织管理,中文叫「互联网名称与数字地址分配机构」。IANA 是 ICANN 的其中一个机构,它负责分配互联网 IP 地址,是按州的方式层层分配。
其中,在中国是由 CNNIC 的机构进行管理,它是中国国内唯一指定的全局 IP 地址管理的组织。
IP地址的网络地址这一部分是用于进行路由控制。路由控制表中记录着网络地址与下一步应该发送至路由器的地址。在主机和路由器上都会有各自的路由器控制表。在发送 IP 包时,首先要确定 IP 包首部中的目标地址,再从路由控制表中找到与该地址具有相同网络地址的记录,根据该记录将 IP 包转发给相应的下一个路由器。如果路由控制表中存在多条相同网络地址的记录,就选择相同位数最多的网络地址,也就是最长匹配。
环回地址是在同一台计算机上的程序之间进行网络通信时所使用的一个默认地址。计算机使用一个特殊的 IP 地址 127.0.0.1 作为环回地址。与该地址具有相同意义的是一个叫做 localhost
的主机名。使用这个 IP 或主机名时,数据包不会流向网络。
IPv4 的地址是 32 位的,大约可以提供 42 亿个地址,但是早在 2011 年 IPv4 地址就已经被分配完了。但是 IPv6 的地址是 128
位的,这可分配的地址数量是大的惊人,说个段子 **IPv6 可以保证地球上的每粒沙子都能被分配到一个 IP 地址。**但 IPv6 除了有更多的地址之外,还有更好的安全性和扩展性,说简单点就是 IPv6 相比于 IPv4 能带来更好的网络体验。但是因为 IPv4 和 IPv6 不能相互兼容,所以不但要我们电脑、手机之类的设备支持,还需要网络运营商对现有的设备进行升级,所以这可能是 IPv6 普及率比较慢的一个原因。
40
字节,去掉了包头校验和,简化了首部结构,减轻了路由器负荷,大大提高了传输的性能。IPv4 地址长度共 32 位,是以每 8 位作为一组,并用点分十进制的表示方式。
IPv6 地址长度是 128 位,是以每 16 位作为一组,每组用冒号 「:」 隔开。
IPv6 的地址主要有以下类型地址:
DNS 可以将域名网址自动转换为具体的 IP 地址,DNS 中的域名都是用句点来分隔的,比如 www.server.com
,这里的句点代表了不同层次之间的界限。在域名中,越靠右的位置表示其层级越高。
域名的层级关系类似一个树状结构:
浏览器首先看一下自己的缓存里有没有,如果没有就向操作系统的缓存要,还没有就检查本机域名解析文件 hosts
,如果还是没有,就会 DNS 服务器进行查询,查询的过程如下:
ping 是应用层命令,ping应用的底层,用的是网络层的ICMP协议,ICMP是利用了IP协议进行消息的传输。。
Ping 是计算机网络中常用的诊断工具,用于测试网络连接和测量网络延迟。它通过发送 ICMP(Internet Control Message Protocol)回显请求报文,并接收对应的回显应答报文来实现。
发送请求:
接收回应:
计算往返时间(Round-Trip Time):
重复发送和统计信息:
需要注意的是,Ping 工具使用 ICMP 协议来进行测试,而 ICMP 报文并不属于传输层的 TCP 或 UDP 协议。因此,Ping 只能测试基于 IP 协议的网络连接,而不能测试特定端口或应用层协议的可用性。
另外,由于 ICMP 报文的优先级较低,有些网络设备或防火墙可能会限制或过滤 ICMP 报文,导致 Ping 不可用或不准确。因此,在使用 Ping 进行网络测试时,需要考虑网络环境和设备的限制。
当网络断开时,通常情况下是无法进行网络通信的,包括无法进行 Ping 测试。然而,在某些情况下,尽管网络连接断开,仍然可以通过本地回环地址(loopback address)127.0.0.1 进行 Ping 测试。
本地回环地址是网络协议栈中的一部分,专门用于在本地主机上进行测试和通信。它指向本地主机自身,通过回环接口(loopback interface)进行通信,而不经过物理网络接口。
因此,即使网络断开,本地主机仍然可以通过发送 ICMP 回显请求到 127.0.0.1,然后接收回显应答来进行 Ping 测试。这是因为 Ping 测试在本地主机上进行,不需要经过网络接口。
需要注意的是,尽管可以 Ping 通 127.0.0.1,但这并不意味着网络连接正常。Ping 通 127.0.0.1 只是表示本地主机的网络协议栈正常工作,而不涉及物理网络连接。如果无法 Ping 通其他 IP 地址,可能是由于物理网络连接故障、路由器配置问题或其他网络故障引起的。在这种情况下,需要进一步检查和排除网络故障。
127.0.0.1、localhost 和 0.0.0.0 都是与本地主机相关的 IP 地址,它们有一些区别和不同的使用场景。
127.0.0.1:
localhost:
0.0.0.0:
总结来说:
当涉及计算机网络中的IP(Internet Protocol)时,面试中可能会涉及以下一些常见问题: