首页 > 系统相关 >Linux网络:网络层IP协议(一)

Linux网络:网络层IP协议(一)

时间:2024-08-03 20:24:33浏览次数:17  
标签:子网 IP 报文 Linux 网络层 地址 主机 分片

目录

一、网络层与IP协议基本概念

1.1IP协议构成

1.2网段划分

1.3DHCP


一、网络层与IP协议基本概念

 在详细了解网络层之前我们需要先引入一些基本概念:

主机: 配置有 IP 地址, 但不进行路由控制的设备,这里的主机就是我们的一台台电脑;

路由器: 即配置有 IP 地址, 又能进行路由控制;

节点: 主机和路由器的一个统称;

1.1IP协议构成

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

• 4 位首部长度(header length): IP 协议头部的长度是多少个32bit,也就是单位是4byte。所以4bit可以表示最大的数字是15, 也就是15个4字节,因此IP头部最大长度是60字节。

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

• 16 位总长度(total length): IP数据报整体占多少个字节。

• 16 位标识(id): 唯一的标识主机所发送的报文。如果IP报文在数据链路层被分片了, 那么每一个片里的16位id都是相同的。

• 3位标志字段: 第一位进行保留(保留的意思是当前不用, 但是说不定以后会用)。第二位置为1,则表示禁止进行分片,这时候如果报文长度超过MTU的话, IP模块就会丢弃报文。第三位表示"更多分片", 如果进行分片了的话, 最后一个分片则置为0, 其他则是1。类似于一个结束的标记。

• 13位分片偏移(framegament offset): 是分片相对于原始IP报文开始处的偏移。其实就是在表示当前分片在原报文中处在哪个位置. 实际偏移的字节数是这个值*8 得到的. 因此, 除了最后一个报文之外, 其他报文的长度必须是 8 的整数倍(否则报文就不连续了)。

• 8 位生存时间(Time To Live, TTL): 数据报到达目的地的报文最大跳数。 一般这个值是64。每次经过一个路由器, TTL -= 1,如果一直减到 0 还没到达, 那么就直接丢弃了。 这个字段的功能主要是用来防止出现路由循环。

• 8 位协议: 表示上层协议的类型,比如UDP、TCP等常见传输层协议。

• 16 位头部校验和: 使用CRC来进行校验, 来鉴别头部是否有损坏。

• 32 位源地址和 32 位目标地址: 表示发送端和接收端。

1.2网段划分

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

• 网络号: 保证相互连接的两个网段具有独立的不同的标识;

• 主机号: 同一个网段内, 主机之间具有相同的网络号, 但是必须有不同的主机号,从而确定某一网段内主机的唯一性;

• 不同的子网的功能其实就是把网络号相同的主机放到一起。

• 如果在子网中新增一台主机, 则这台主机的网络号和这个子网的网络号是一致的, 但是主机号必须是独一无二的。

1.3DHCP

通过合理的对主机号和网络号进行设置, 就可以保证在整个巨大的网络世界中, 每台主机的IP地址都 不相同,从而确保了每台主机的唯一性。 但是手动的管理和分配子网内部的IP,是非常麻烦的。

• 有一种技术叫做 DHCP, 能够自动的给子网内新增主机节点分配 IP 地址, 可以很好的解决IP分配的问题。

• 一般的路由器都带有DHCP功能. 因此路由器也可以看做一个DHCP服务器。

• A 类 0.0.0.0 到 127.255.255.255

• B 类 128.0.0.0 到 191.255.255.255

• C 类 192.0.0.0 到 223.255.255.255

• D 类 224.0.0.0 到 239.255.255.255

• E 类 240.0.0.0 到 247.255.255.255

随着 Internet 的飞速发展,这种划分方案的局限性很快显现出来,大多数组织都申请 B 类 网络地址, 导致 B 类地址很快就分配完了, 而 A 类却浪费了大量地址;

• 例如, 申请了一个 B类的IP地址, 理论上一个子网内能允许6万5千多台主机。那么 A 类地址的子网内能允许存在的主机数只能更多。

• 然而实际网络架设和使用中, 基本上不会存在一个子网内有这么多台主机的情况出现。因此导致大量的 IP 地址都或多或少被浪费了。

针对这种情况提出了新的划分方案, 称为 CIDR(Classless Interdomain Routing):

• 引入一个额外的子网掩码(subnet mask)来区分网络号和主机号;

• 子网掩码也是一个 32 位的正整数. 通常用一串 "0" 来结尾;

• 将 IP 地址和子网掩码进行 "按位与" 操作, 得到的结果就是网络号; • 网络号和主机号的划分与这个 IP 地址是 A 类、B 类还是 C 类无关;

如此一来,IP 地址与子网掩码做与运算可以得到网络号, 主机号从全0到全1就是子网的地址范围;

IP地址和子网掩码还有一种更简洁的表示方法,例如140.252.20.68/24,表示 IP 地址为 140.252.20.68, 子网掩码的高 24 位是 1,也就是 255.255.255.0 

标签:子网,IP,报文,Linux,网络层,地址,主机,分片
From: https://blog.csdn.net/2201_75880188/article/details/140818990

相关文章

  • Linux 防火墙系统
    iptables和nftablesiptables是Linux中最常用的防火墙工具,它通过Linux内核中的netfilter模块提供的Hook来管理网络数据包的处理和转发。nftables是iptables的代替品,在Debian10、Ubuntu22、CentOS8中已经由iptables切换到了nftables。iptables的操作命令......
  • Noip 真题笔记
    Noip2023A事实上只需要比较最大一个和最小一个就可以了。注意排序后的字符串是递增或递减的,是用递增字符串与其他的递减字符串比较。B考场不会。综述:对DFS的详细描述:Noip2022悲惨的一年,对这一年真题有问题别问学长。A签到。当时我写了个三方还艹过去了。对于三......
  • Linux shell脚本配置
    shell编程和c语言的比较shell编程:shell是一种解释型语言,擅长文件处理和操作系统管理,开发效率高但执行效率低,移植性好。c语言:编译型语言,先编译再执行,擅长数据计算和数据处理,但开发效率低,执行效率高移植性差。shell脚本编程        shell命令解释器:Bash,Ksh,Csh,Ash......
  • Linux内核系统体系结构
    Linux内核主要由5个模块构成,它们分别是:进程调度模块、内存管理模块、文件系统模块、进程间通信模块和网络接口模块。进程调度模块用来负责控制进程对CPU资源的使用。所采取的调度策略是各进程能够公平合理地访问CPU,同时保证内核能及时地执行硬件操作。内存管理模块用于确......
  • [Linux]常用命令
    PWDpwd显示工作路径shutdownshutdown-hnow关闭系统/halt关闭系统shutdown-rnow重启/reboot重启防火墙systemctlstopfirewalld关闭防火墙IP地址ipaddr查看ip地址cdcd命令:这是一个非常基本,也是大家经常需要使用的命令,它用于切换当前目录,它的参......
  • 灵魂四问:什么是CDN?怎么判断CDN?如何溯源CDN加速后的真实IP?如何验证?
    灵魂第一问:什么是CDN?CDN(ContentDeliveryNetwork,内容分发网络)将源站的内容发布到接近用户的网络"边缘",用户可以就近获取所需数据,不仅降低了网络的拥塞状况、提高请求的响应速度,也能够减少源站的负载压力。CDN可通过缩短服务器与用户之间的物理距离最大限度减少加载网页内容......
  • Linux
    Linux常用命令Linux仅有一个根目录,用/表示(在windows中是\)ls(ListFiles)列出目录和文件名ls-a-l-hcd(ChangeDirectory)切换目录cd[绝对路径/相对路径]cd.表示切换到当前目录cd..表示返回上一级目录,cd../..返回两级目录cd~表示切换home目录pwd(......
  • JavaScript (十七)——JavaScript 声明提升和严格模式
    目录JavaScript声明提升JavaScript初始化不会提升在头部声明你的变量JavaScript严格模式(usestrict)使用"usestrict"指令严格模式声明严格模式的限制JavaScript声明提升JavaScript中,函数及变量的声明都将被提升到函数的最顶部。JavaScript中,变量可以在......
  • JavaScript(十八)——JavaScript 使用误区
    目录赋值运算符应用错误比较运算符常见错误加法与连接注意事项浮点型数据使用注意事项JavaScript字符串分行错误的使用分号语句使用注意事项return使用注意事项数组中使用名字来索引定义数组元素,最后不能添加逗号定义对象,最后不能添加逗号Undefined不是Null程......
  • Day 8.2 NOIP2024 模拟赛 总结
    Day8.2NOIP模拟赛总结T1T1赛时打表输出发现了等差数列的性质(好像不需要打表也能知道),然后我码完T2过后剩不到2个小时了,于是连T3T4暴力都没码就过来推了,但也没推出来,时间倒是耽误了不少,剩一个小时的时候去开始去码后面的暴力了。T2水题一道,做法,性质全给了。只不过比较玄学的......