当前位置: 首页 > news >正文

TCP/IP协议专栏——IP 详解——网络入门和工程维护必看

IP地址

互联网上的每个接口必须有一个唯一的Internet地址(也称作IP地址)。
IP地址长通常写成四个十进制的数,其中每个整数对应一个字节,4字节,共32 bit,1字节=8bit,

有三类I P地址:

1、单播地址(目的为单个主机)、
2、广播地址(目的端为给定网络上的所有主机)
3、多播地址(目的端为同一组内的所有主机)。

在这里插入图片描述

IP地址分类

IP还可以分类为,私有地址和公有地址:

1、公网地址(Public address)
由Inter NIC(Internet Network Information Center 因特网信息中心)负责。这些IP地址分配给注册并向Inter NIC提出申请的组织机构。通过它直接访问因特网。

2、私网地址(Privateaddress),
就是就是国际上分配IP的时候,留出一部分IP,不用于在Internet上用可用于内部局域网等,虽然功能一样,但不能在Internet上使用。属于非注册地址,专门为组织机构内部使用。私网地址不能够直接访问外网,必须通过地址转换相关的协议转换成公网地址,才能够访问外网。

以下列出留用的内部私有地址
A类 10.0.0.0–10.255.255.255
B类172.16.0.0–172.31.255.255
C类 192.168.0.0–192.168.255.255

特殊的IP

下列地址不能分配给实际的网络:

1、 第一个八位组是127的地址(如127.0.0.1)定义为回返地址。对于所有发往回返地址的数据,网络栈将视为传输给自己的数据,尽管数据沿网络栈向下传递,并没有真正发送到网络媒体上。这种方法允许主机通过其网络接口与自己通信,这对于测试很有用。
2、 主机部分为全1的地址是广播地址。网络上的所有主机都将接收以广播地址为目的地址的数据。
3、全0的地址表示本网络或本主机。一个表示特定网络的A类地址若主机部分为全0表示在此特定网络上的本主机。同样,网络地址为全0(如0.0.121.1 )表示在本网络上的特定主机。

1、回返地址占用了一个A类网络地址,否则127将是最高阶的A类地址。
2、对于全0地址( 0.0.0.0 )的保留又减少了一个A类地址。因此,有效的A类网络局限于第一个八位组为1 ~ 126,而不是0 ~ 127,即只有126个可能的A类地址。
3、 保留地址也影响到每个网络上的唯一主机地址的数量。网络上的最大主机数变成了2的n次方- 2,而不是2的n次方,对于A类,n = 24;B类,n=16;C类,n =8。全0或全1地址分别保留下来,以用于本主机或广播地址。虽然这并没有显著的减少A类和B类地址的数量,但却把C类地址的数量从256减少到了254。这种地址丢失在网络划分为子网时变得更加严重(子网将在后面讨论)。

子网寻址

现在所有的主机都要求支持子网编址。
不是把IP地址看成由单纯的一个网络号和一个主机号组成,而是把主机号再分成一个子网号和一个主机号。
这样做的原因是因为A类和B类地址为主机号分配了太多的空间,可分别容纳的主机数为2的24次方-2和2的16次方-2(由于全0或全1的主机号都是无效的,因此我们把总数减去2)。
各类IP地址的格式如图所示。
A类地址只有126个(2的7次方-2=126),用于那些最大的实体,如政府机关,因为它们连接着最多的主机:理论上最多可达一千六百万台。
B类地址大约16000个(2的14次方-2=16382),用于大型机构,如大学和大公司,理论上可支持超过65 000台主机。
C类网络超过两百万个(2的21次方),每个网络上的主机数量不超过255个,用于使用I P网络的其他机构。
在这里插入图片描述

在InterNIC获得某类IP网络号后,就由当地的系统管理员来进行分配,由他(或她)来决定是否建立子网,以及分配多少比特给子网号和主机号。

例如,这里有一个B类网络地址(140 . 252),在剩下的16 bit中,8 bit用于子网号, 8 bit用于主机号,格式如图3 -5所示。这样就允许有254个子网,每个子网可以有254台主机(2的8次方=254)

在这里插入图片描述

子网掩码

任何主机在引导时进行的部分配置是指定主机IP地址。
大多数系统把IP地址存在一个磁盘文件里供引导时读用。
在第5章我们将讨论一个无盘系统如何在引导时获得IP地址。

除了I P地址以外,主机还需要知道有多少比特用于子网号及多少比特用于主机号。这是在引导过程中通过子网掩码来确定的。这个掩码是一个32bit的值,其中值为1的比特留给网络号和子网号,为0的比特留给主机号。 如图3 - 7所示,子网号和主机号都是8 bit宽。第二个例子是一个B类地址划分成10 bit的子网号和6 bit的主机号

在这里插入图片描述

尽管I P地址一般以点分十进制方法表示,但是子网掩码却经常用十六进制来表示,特别是当界限不是一个字节时,因为子网掩码是一个比特掩码。

给定IP地址和子网掩码以后,主机就可以确定IP数据报的目的是:
(1)本子网上的主机;
(2)本网络中其他子网中的主机;
(3)其他网络上的主机。
如果知道本机的IP地址,那么就知道它是否为A类、B类或C类地址(从IP地址的高位可以得知),也就知道网络号和子网号之间的分界线。而根据子网掩码就可知道子网号与主机号之间的分界线。

在这里插入图片描述

子网掩码是用来判断任意两台主机的IP地址是否属于同一子网络的根据。
子网掩码与IP地址一一对应,是32bit的二进制数。
子网掩码为1表示网络位,为0表示主机位。

在子网掩码的32bit二进制数中,必须是连续的1和连续的0,也就是说不能存在0和1交叉出现的子网掩码。
由此可以得出,子网掩码只能是:
128、192、224、(10000000;11000000;11100000)(十进制~二进制)
240、248、252、(11110000;11111000;11111100)
254 和255中的值 (11111110;11111111)

子网掩码转换:二进制十进制十六进制
(11111111.11111111.11111111.11111111)=255.255.255.255=0xffffffff=32(32个1) (11111111.11111111.11111111.11000000)=255.255.255.192=0xffffffc0=26(26个1)
11111111.11111111.11111111.00000000)=255.255.255.0=0xffffff00=24 (24个1)

IP地址相关计算

IP地址计算
对IP地址的相关计算包括,网络地址、网络广播地址、主机地址范围等的相关计算。

在这里插入图片描述

IP协议

IP是TCP/IP协议族中最为核心的协议。
所有的TCP、UDP、ICMP及IGMP数据都以IP数据报格式传输。

IP提供不可靠、无连接的数据报传送。

不可靠( unreliable)的意思是它不能保证IP数据报能成功地到达目的地。
IP仅提供最好的传输服务。如果发生某种错误时,如某个路由器暂时用完了
缓冲区, IP有一个简单的错误处理算法:丢弃该数据报,然后发送ICMP消
息报给信源端。任何要求的可靠性必须由上层来提供(如TCP)。

无连接( connectionless)这个术语的意思是IP并不维护任何关于后续数据报的状态信息。每个数据报的处理是相互独立的。这也说明, IP数据报可以不按发送顺序接收。如果一信源向相同的信宿发送两个连续的数据报(先是A,然后是B),每个数据报都是独立地进行路由选择,可能选择不同的路线,因此B可能在A到达之前先到达。

在这里插入图片描述
最高位在左边,记为0 bit;最低位在右边,记为31 bit。
4个字节的32 bit值以下面的次序传输:
首先是0~7 bit,其次8~15 bit,然后16~23 bit,最后是24~31 bit。
这种传输次序称作bigendian字节序。由于TCP/IP首部中所有的二进制整数在网络中传输时都要求以这种次序,因此它又称作网络字节序。以其他形式存储二进制整数的机器,如little endian格式,则必须在传输数据之前把首部转换成网络字节序。

目前的协议版本号是4,因此IP有时也称作IPv4。

首部长度指的是首部占32 bit字的数目,包括任何选项。由于它是一个4比特字段,因此首部最长为60个字节。普通IP数据报(没有任何选择项)字段的值是5。

服务类型(TOS)字段包括一个3 bit的优先权子字段(现在已被忽略),4 bit的TOS子字段和1 bit未用位但必须置0。

4 bit的TOS分别代表:最小时延、最大吞吐量、最高可靠性和最小费用。
4 bit中只能置其中1 bit。如果所有4 bit均为0,那么就意味着是一般服务。

总长度字段值,是指整个IP数据报的长度,以字节为单位。

标识字段,唯一地标识了主机发送的每一份数据报。
3bit标志字段,1bit reserved bit,1bit don’t fragment,1bit more fragment。

13bit片偏移,该片偏移原始数据报开始处的位置。
TTL 生存时间,设置了数据报可以经过的最多路由器数。
协议字段,表明了报文协议类型。
首部检验和,根据IP首部计算的检验和码

相关文章:

  • VAPS XT开发入门教程05:预览与状态机
  • 第01章 第01章 数据结构基础和算法简介
  • SpringCloud和SpringCloudAlibaba的区别
  • 【C语言基础】Chap. 2. 基本概念
  • Google protobuf使用技巧和经验总结
  • Kotlin协程:Flow基础原理
  • linux格式化输入输出
  • 一篇文章告诉你,为什么必须要学Excel?
  • Intellij IDEA--Undo Commit,Revert Commit,Drop Commit的区别
  • 三个工厂模式(通俗易懂)
  • 本地环境下启动openFaas创建的Java的云函数
  • Java 第三阶段增强分析需求,代码实现能力【正则表达式】
  • Java基础【理解版】
  • 《Mycat分布式数据库架构》之搭建详解
  • Opencv项目实战:02 角度探测器
  • 〔开发系列〕一次关于小程序开发的深度总结
  • Apache Zeppelin在Apache Trafodion上的可视化
  • go append函数以及写入
  • js算法-归并排序(merge_sort)
  • k8s 面向应用开发者的基础命令
  • SQLServer之索引简介
  • Stream流与Lambda表达式(三) 静态工厂类Collectors
  • Swoft 源码剖析 - 代码自动更新机制
  • vue数据传递--我有特殊的实现技巧
  • 高度不固定时垂直居中
  • 关于springcloud Gateway中的限流
  • 官方新出的 Kotlin 扩展库 KTX,到底帮你干了什么?
  • 聊一聊前端的监控
  • 入手阿里云新服务器的部署NODE
  • 十年未变!安全,谁之责?(下)
  • 使用API自动生成工具优化前端工作流
  • 说说动画卡顿的解决方案
  • 算法-图和图算法
  • 腾讯视频格式如何转换成mp4 将下载的qlv文件转换成mp4的方法
  • 微信小程序填坑清单
  • 一道面试题引发的“血案”
  • 由插件封装引出的一丢丢思考
  • 你学不懂C语言,是因为不懂编写C程序的7个步骤 ...
  • ​【C语言】长篇详解,字符系列篇3-----strstr,strtok,strerror字符串函数的使用【图文详解​】
  • %check_box% in rails :coditions={:has_many , :through}
  • (Spark3.2.0)Spark SQL 初探: 使用大数据分析2000万KF数据
  • (板子)A* astar算法,AcWing第k短路+八数码 带注释
  • (翻译)Quartz官方教程——第一课:Quartz入门
  • (小白学Java)Java简介和基本配置
  • (源码版)2024美国大学生数学建模E题财产保险的可持续模型详解思路+具体代码季节性时序预测SARIMA天气预测建模
  • (转) RFS+AutoItLibrary测试web对话框
  • .gitignore文件_Git:.gitignore
  • .NET处理HTTP请求
  • .net访问oracle数据库性能问题
  • .Net小白的大学四年,内含面经
  • .NET学习全景图
  • .net中应用SQL缓存(实例使用)
  • .so文件(linux系统)
  • @AliasFor注解
  • [ element-ui:table ] 设置table中某些行数据禁止被选中,通过selectable 定义方法解决