【计网】从零开始认识IP协议 --- 认识网络层,认识IP报头结构


从零开始认识IP协议

  • [1 网络层协议](#1 网络层协议)
    • [1.1 初步认识IP协议](#1.1 初步认识IP协议)
    • [1.2 初步理解IP地址](#1.2 初步理解IP地址)
  • [2 IP协议报头](#2 IP协议报头)
  • [3 初步理解网段划分](#3 初步理解网段划分)

1 网络层协议

1.1 初步认识IP协议

我们已经熟悉了传输层中的UDP和TCP协议,接下来我们来接触网络层的协议:

网络层在计算机网络中的意义主要体现在它提供了一个可靠、高效且透明的数据传输机制,使得不同网络之间能够互联互通,并为上层应用提供了稳定的服务。这是实现全球互联网和现代通信基础设施的关键所在。

那么网络层是如何进行数据传输的呢?通过网络层协议,这里介绍IP协议:

IP协议下,主要包含两部分:

  • 主机: 配有 IP 地址, 但是不进行路由控制的设备;
  • 路由器: 即配有 IP 地址, 又能进行路由控制;
  • 节点: 主机和路由器的统称;以后主机和路由器都使用节点说明!

在上图中,主机B向将数据传送给主机C,那么就会面临一个路径选择的问题!根据目的IP要进一个路径选择,选取最合适的路径传输信息!**IP提供了一种能力,将数据从主机B跨网络送至主机C的能力!**这里举个例子:

小马是学霸级别的学生,平时不怎么学习,但是考试经常考到第一名。这次的省联考要到了,小马竟然开始认真复习了,大家都认为小马有能力考到省第一。这种能力是一种观点,小马有很大的概率做成这件事情!

小马的父亲大马是学校的教务处主任,如果今天我们希望每次考试都考第一名,那么光靠小马一个人肯定是无法保证每次都是第一名的。当小马在一次月考中没有考到第一名,大马立刻重新就安排一个新考试!重新进行考试!直到小马考到第一名!

在这个例子中,主任父亲和学霸小马就能保证小马一定可以考到第一名!小马提供了考到第一名的能力;大马提供了保证第一名的策略。再看IP协议中,IP协议就提供了将数据从主机B发送到主机C的能力!传输层的TCP协议通过将数据从主机B发送到主机C的策略!

所以IP协议只提供一种能力,TCP协议通过可靠的通信策略!

1.2 初步理解IP地址

IP地址是XXX.YYY.ZZZ.AAA的风格的点分十进制!

ip = 网络号 + 主机号。

网络中的一台主机,一定是属于一个子网的,在一个子网中的设备的IP地址是很类似的!唐僧取经的故事中,唐僧的目的地是西天大雷音寺,首先是在西天,其次是在大雷音寺!这个西天就可以理解为子网,找到子网之后,就要寻找大雷音寺在哪里了!

2 IP协议报头

IP协议的报头是也是要进行分用和分离,IP协议的标准长度是20字节,通过对报文的前20字节进行选取就能分离报头和数据。我们来看IP协议的报头结构和TCP是很类似的!

  • 4 位版本号(version): 指定 IP 协议的版本, 对于 IPv4 来说, 就是 4

报文到达目标主机之后,可以根据4位首部长度确定IP报头结构,也就可以进行报头和数据的分离!

接下来我们来谈4位板本这个字段,IP协议中有:

  1. IPV4 :使用4字节表示一个IP地址,一般默认都是这个版本。
  2. IPV6:使用16字节表示一个IP地址

在网络刚刚诞生的时候使用的是IPV4,只有4字节。网络发展到今天,4字节的IP地址已经不够使用了!解决方案有NAT,最好的解决方案是IPV6,使用16字节表示IP地址!所以也就说明IPV4和IPv6并不兼容。并且由于操作系统,路由器以及一些硬件大部分都是按照IPV4版本设计的,所以目前不能一下子全都更换位IPv6版本。

  • 8 位服务类型(Type Of Service): 3 位优先权字段(已经弃用),4 位 TOS 字段,和1位保留字段(必须置为 0)。4 位 TOS 分别表示:最小延时,最大吞吐量,最高可靠性,最小成本。这四者相互冲突, 只能选择一个 。对于 ssh/telnet 这样的应用程序, 最小延时比较重要;对于 ftp 这样的程序, 最大吞吐量比较重要。

  • 4位首部长度表示IP头部的长度,以32位字(4字节)为单位计算。因此,TCP头部的最大长度为15 * 4 = 60字节。

  • 16位总长度(Total Length)是表示整个IP数据包的长度(包括头部和数据),以字节为单位。

  • 8位协议(Protocol)指示数据部分使用的协议(例如TCP、UDP、ICMP等)。

  • 32位源IP地址(Source IP Address):IPv6版本是128位,表示发送数据包的源主机IP地址。

  • 32位目的IP地址(Destination IP Address):IPv6版本是128位,表示接收数据包的目的主机IP地址。

IP协议可以通过报头识别到报头的长度和整个数据包的长度,这个是与TCP协议报头结构不同的!IP协议报头中包含了目的IP和源IP以及协议号,TCP协议中包含了源端口和目的端口。**这5部分结合,组成"西天大雷音寺",可以准确的找到目标进程!**源IP,源端口,目的IP,目的端口,协议号五元组标识一个网络通信!

3 初步理解网段划分

网段划分是计算机网络中一个十分重要的概念!一定要理解清楚!今天初步了解一下网段划分!

IPV4版本中IP地址是一个有限的资源,存在竞争关系!必须经过合理的划分来分配给不同的国家区域!

IP 地址分为两个部分, 网络号和主机号:

  • 网络号: 保证相互连接的两个网段具有不同的标识;
  • 主机号: 同一网段内, 主机之间具有相同的网络号, 但是必须有不同的主机号!

在同一个网络中,主机的IP地址是一致的,所以区分不同主机的方式是通过主机号来进行区分!我们的设备都是连接的对应的路由器,路由器一定有两个不同的网卡,既属于下层网络,也属于上层网络。是进行网络通信的中转站!所以一般路由器的主机号是1。

  • 路由器有构建子网和路由的能力!在路由器的背面一般都标有路由器的IP地址!

    我们可以访问这个地址,通过用户名和密码管理我们的路由器!平时手机电脑连接路由器时,就是在路由器中申请一个主机号!

通过合理设置主机号和网络号, 就可以保证在相互连接的网络中, 每台主机的 IP 地址都不相同。

IP地址资源是有限的,对于国家,地区,大学...都想要对应的IP地址,所以就要对IP地址资源进行划分,划分的很简单:A类 ,非A类(B类,C类...),通过第一个比特位区分是否是A类。

  • A类IP:0后的7位为网络号,一共 2 7 2^{7} 27个网络号, 2 24 2^{24} 224个主机号。
  • B类IP:10后的14位为网络号,一共 2 14 2^{14} 214个网络号, 2 16 2^{16} 216个主机号。
  • ...

在互联网刚诞生的时候,这种划分方式是可以满足需求的,但是随着互联网的发展,这种划分方式使IP地址远远不够使用了!大多数组织都申请 B 类网络地址, 导致 B 类地址很快就分配完了, 而 A 类却浪费了大量地址;

例如,申请了一个 B 类地址,理论上一个子网内能允许 6 万 5 千多个主机,A 类 地址的子网内的主机数更多。然而实际网络架设中,不会存在一个子网内有这么多的情况。因此大量的 IP 地址都被浪费掉了!

这种划分方式就被丢弃了!于是就有了一个新的划分方式,称为 CIDR(Classless Interdomain Routing)。这种方案的依据是每个IP一定隶属于一个子网:

  • 引入一个额外的子网掩码(subnet mask)来区分网络号和主机号;
  • 子网掩码也是一个 32 位的正整数。通常用一串 "0" 来结尾;
  • 将 IP 地址和子网掩码进行 "按位与" 操作,得到的结果就是网络号;
  • 网络号和主机号的划分与这个 IP 地址是 A 类、 B 类还是 C 类无关。

我们可以通过我们的电脑来查看一下:

子网掩码都是在路由器中配置好的!通过对报文的目的IP进行掩码操作,可以确定前往的网络号是多少!

相关推荐
致奋斗的我们7 分钟前
RHCE的学习(7)
linux·服务器·网络·学习·redhat·rhce·rhcsa
hanniuniu1324 分钟前
动态威胁场景下赋能企业安全,F5推出BIG-IP Next Web应用防火墙
网络协议·tcp/ip·安全
Chris-zz1 小时前
Linux:磁盘深潜:探索文件系统、连接之道与库的奥秘
linux·网络·c++·1024程序员节
冷眼看人间恩怨1 小时前
【Java】揭秘网络编程:深入探索其无尽奥秘与魅力
java·开发语言·tcp/ip·udp·tcp
黑龙江亿林等级保护测评1 小时前
等保行业如何面对新兴安全威胁
网络·安全·金融·智能路由器·ddos
墨染新瑞1 小时前
C语言——网络编程(下)
网络
菜林子2 小时前
【Linux | 网络I/O模型】五种网络I/O模型详解
linux·服务器·网络
小何学计算机2 小时前
Nginx 配置基于IP 地址的 Web 服务器
前端·tcp/ip·nginx
IT·小灰灰2 小时前
Python——自动化发送邮件
运维·网络·后端·python·自动化
很透彻2 小时前
【网络】传输层协议UDP
网络·网络协议·udp