• 【网络】网络层协议:IP(待更新)


    IP 协议

    IP 不是面向字节流的,而是发送接收一个个的数据包


    1. 基本概念

    主机:配有 IP 地址的设备
    路由器:配有单个或多个 IP 地址,且能进行路由节点控制
    节点:主机和路由器的统称


    2. IP 报头解析

    在这里插入图片描述
    4 位版本号(version)

    • 指定 IP 协议的版本。对于 IPv4 来说,就是 4(用 4 个字节,32 个比特位,标识全球互联网唯一的主机)。

      公用网络协议中,极少使用 IPv6
      
      • 1

    4 位头部长度(header length)

    • 表示该 IP 头部有多少个 32 位 bit(有多少个 4 字节); 所以 IP 头部最大长度是 15 * 4 = 60 个字节

    8 位服务类型(Type Of Service)

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

    16 位总长度(total length)

    • IP 数据报整体占多少个字节。

    16 位标识(id)

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

    3 位标志字段

    • 第一位保留(保留的意思是现在不用,但是还没想好说不定以后要用到)。
    • 第二位置为 1 表示禁止分片,这时候如果报文长度超过 MTU,IP 模块就会丢弃报文。
    • 第三位表示 “更多分片”,如果分片了的话,最后一个分片置为 1,其他是 0。类似于一个结束标记。

    13 位分片偏移(framegament offset)

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

    8 位生存时间(Time To Live, TTL)

    • 数据报到达目的地的最大报文跳数。一般是 64,每次经过一个路由,TTL -= 1,一直减到 0 还没到达,那么就丢弃了。这个字段主要是用来防止出现路由循环。

    8 位协议

    • 表示上层协议的类型,即有效载荷是什么报文。

    16 位头部校验和

    • 使用 CRC 进行校验,来鉴别头部是否损坏。

    32 位源地址和 32 位目标地址

    • 表示发送端和接收端。

    选项字段(不定长, 最多 40 字节):略


    🔺IP 的 网段划分:

    过去曾经提出一种划分网络号和主机号的方案,把所有 IP 地址分为五类。
    在这里插入图片描述

    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
    
    • 1
    • 2
    • 3
    • 4
    • 5

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

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

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

    • 子网掩码也是一个 32 位的正整数,通常用一串 “0” 来结尾

      子网掩码格式:左半部分全 1,右半部分全 0。
      
      1 的部分就是网络号的占位,0 的部分就可以用来进行子网划分,
      如此相比分类网段,就更加灵活了。
      
      • 1
      • 2
      • 3
      • 4
    • 将 IP 地址和子网掩码进行 “按位与” 操作,得到的结果就是网络号

    • 网络号和主机号的划分与这个 IP 地址是 A 类、B 类还是 C 类无关

  • 相关阅读:
    Linux 文件系统概述
    设计模式之原型模式--超越实例化的魔法,从复制到创造的无限可能
    springboot227旅游管理系统
    【介绍下WebStorm开发插件】
    《C++ Primer》第5章 语句
    【项目结构】
    014-正则表达式
    【Python深度学习】Python全栈体系(三十一)
    MySQL基础(DDL、DML、DQL)
    树莓派系统安装,使用SSD/U盘启动centos
  • 原文地址:https://blog.csdn.net/m0_67470729/article/details/133281578