• IP协议的相关特性


    IP协议相关特性

    报头结构

    报文结构解释

    4位版本号:指定IP协议的版本,对于IPV4来说,就是四位.
    4位首部长度:IP头部的长度是多少个32bit,也就是Length4的字节数,4bit表示的最大的数是15,因此IP头部最大长度是60.
    8位服务类型:3位优先权字段(已经弃用),4位TOS字段,和1位保留 字段(必须置为0)。4位TOS分别表示:最小延时,最大吞吐量,最高可靠性,最小成本。
    这四者相互冲突,只能选择一个。对于ssh/telnet这样的应用程序,最小延时比较重要;对于 ftp这样的程序,最大吞吐量比较重要。
    16位总长度:IP数据报整体占多少个字节.
    16位标识:唯一的标识主机发送的报文.如果IP报文在数据链路层被切断了,那么每一个片里面的这个id是相同的.
    3位标志字段:第一位保留(现在不用),第二位置为1表示禁止分片,这时如果报文长度大于MTU,这时IP模块会丢弃报文,第三位表示"更多分片",若被分片,最后一个分片置为1,其他为0.类似一个结束标记.
    13位分片偏移:是分片相对于原始IP报文开始处的偏移就是当前分片在原报文中处在哪个位置.实际偏移的字节数是这个值
    8得到的.因此除了最后一个报文之外,其他报文长度必须是8的整数倍(否则报文不连续了).
    8位生存时间:数据报到达目的地的最大报文跳数.主要防止出现路由循环.
    8位协议:表示上层协议的类型.
    16位首部校验和:使用CRC进行校验,防止出现头部损坏.
    32位源IP地址和32位目的IP地址:表示发送端和接受端.

    IP地址相关问题

    从报文结构得知,IP地址是一个4字节,32位的整数.我们通常会把这个整数转换为点分十进制的表示方法:这样一串东西就是我的IP地址,三个点把整数分为了4个部分,每部分都是一个字节,每个部分的取值范围0~255
    这样一串东西就是我的IP地址,三个点把整数分为了4个部分,每部分都是一个字节,每个部分的取值范围0~255.

    那么32位整数可以产生多少个不同的地址?42亿9千万个,在互联网的发展下,这个数目已经不够用了,那么如何解决地址不够用的问题呢?

    1. 动态分配IP地址只给正上网的设备分配地址
    2. **

    NAT机制

    **

    NAT的工作机制可以以10.0.0.10的主机与163.221.120.9的主机进行通信为例讲解,具体如下:

    当10.0.0.10的主机需要与163.221.120.9主机进行通信时,NAT路由器会将源地址从10.0.0.10转换为全局的IP地址(202.244.174.37)再发送数据。 当响应数据从163.221.120.9发送过来时,NAT路由器会将目标地址(202.244.174.37)先转换成私有IP地址10.0.0.10以后再被转发。

    NAT机制将IP地址分为了两大类,一类我们称为内网,一类分为外网

    • 内网IP可以重复出现,内网IP地址是由路由器分配的本地IP地址,在同一个局域网内不会出现重复的情况。
    • 外网IP:剩下的所有IP 外网IP必须唯一
      NAT背景下如何通信

    1、外网设备 >> 外网设备,可以直接通信
    2、内网设备 >> 其他内网设备, 不允许
    3、外网设备 >> 内网设备, 不允许
    4、内网设备 >> 外网设备,对应的内网设备的路由器,触发NAT机制进行IP替换,此时就会给这个网络数据报的源IP替换成路由器自己的IP。

    IP地址组成

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

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

    子网掩码

    在这里插入图片描述
    从二进制角度来看,左侧都为1右侧都为0,为1的部分有几位,就有几位网络号,剩下的就是主机号了.

    特殊的IP地址

    • 主机号全部为0的
      例如:192.169.0.0 这个就是一个网络号,局域网中不存在某个主机的主机号为0。
    • 主机号全部为1的
      192.168.0.255 这是一个广播地址。
    • ip为127.*开头的我们成为环回IP
    • 主机号为1的,一般作为网关IP,这个不是绝对的。

    MTU

    一般我们把数据链路层的数据帧的最大载荷为MTU,若承载的数据长度超过这个MTU,那么就会在IP层进行分包,
    另外,我们需要关注3个内容:

    • 16位标识:一个大的IP数据报拆分为小的报后这个标识都是一样的
    • 3位标志位:有1位不用,一位表示是否分包,还有1位表示当前这个分包是否是最后一个(结束标志)
    • 13位片偏移:总得来说就是表示每个小的数据报的先后顺序,用来组包的.

    MTU对IP协议的影响

    由于数据链路层MTU的限制,对于较大的IP数据包要进行分包

    将较大的IP包分成多个小包,并给每个小包打上标签;

    每个小包IP协议头的 16位标识(id) 都是相同的;

    每个小包的IP协议头的3位标志字段中,第2位置为0,表示允许分片,第3位来表示结束标记
    (当前是否是最后一个小包,是的话置为1,否则置为0);

    到达对端时再将这些小包,会按顺序重组,拼装到一起返回给传输层;

    一旦这些小包中任意一个小包丢失,接收端的重组就会失败。但是IP层不会负责重新传输数 据;

  • 相关阅读:
    二叉搜索树
    字节一面:HTTPS 一定安全可靠吗?
    数据结构之队列
    【Java基础】JDK8-17新特性
    java计算机毕业设计网站内容管理系统(附源码、数据库)
    网络协议详解:TCP Part1
    关于使用pytorch-lightning版本过低的一些问题
    cross-env的使用
    给奶牛做直播之三
    学习:Vue.js官方文档----介绍、Vue实例、模板语法、计算属性与侦听器
  • 原文地址:https://blog.csdn.net/m0_66714418/article/details/132811600