zoukankan      html  css  js  c++  java
  • 计算机网络知识点总结2:IP协议(IPV4)


    一、Internet网络是一种数据报网络(另一种是虚电路网络,用于ATM等),主要功能是路由和转发。




    二、IP数据报(分组)格式(IPV4版本)


    首部 描述
    版本号(4bit) 描述IP协议的版本号,目前主要有V4和V6两个版本
    首部长度(4bit) 以四字节为单位例如: 5 -> IP首部长度为20(5 * 4)字节,不这么计算的话,长度描述根本不够
    服务类型(8bit) 指示期望获得哪种类型的服务
    1 .只有在网络提供区分服务(DiffServ)时使用 
    2.一般情况下不使用,通常IP分组的该字段(第2字节)的值为00H
    总长度(16bit) IP分组的总字节数(首部 + 数据)
    1. 最大IP分组的总长度: 65535B 
    2.最小的IP分组首部: 20B
    3. IP分组可以封装的最大数据:65535 - 20 = 65515B
    生存时间TTL(8bit) IP分组在网络中可以通过的路由器数(或跳步数)
    1.路由器转发一次分组, TTL减1
    2.如果TTL=0,路由器则丢弃该IP分组
    协议(8bit) 指示IP分组封装的是哪个协议的数据包,实现复用/分解
    首部校验和(16位) 实现对IP分组首部的差错检测
    1.计算校验和时,该字段置全0
    2.采用反码算数运算求和,和的反码作为首部校验和字段
    3.逐跳计算、逐跳校验
    源IP地址、目的IP地址字段(各占32bit) 分别标识发送分组的源主机/路由器(网络接口)和接收分组的目的主机/路由器(网络接口)的IP地址
    选项字段(长度可变,范围在1~40B之间) 携带安全、源选路径、时间戳和路由记录等内容(实际上很少被使用)
    填充(长度可变,范围在0~3B之间) 目的是补齐整个首部,符合32位对齐,即保证首部长度是4字节的倍数
    标识字段(16bit) 标识一个IP分组,IP协议利用一个计数器,每产生IP分组计数器加1,作为该IP分组的标识
    标志位(3bit)
    1. DF (Don’t Fragment)
    2. MF (More Fragment)
    DF =1:禁止分片;
    DF =0:允许分片
    MF =1:非最后一片;
    MF =0:最后一片(或未分片)
    片偏移(13bit) 一个IP分组分片封装原IP分组数据的相对偏移量
    片偏移字段以8字节为单位


    三、IP数据报分片

    1.最大传送单元(MTU):链路层数据帧可封装数据的上限。


    2.不同链路的MTU不一样,那么传送到另外一个较小的MTU的链路时,那就会涉及IP分片。


    3.IP分片与重组

    **大IP分组向较小MTU链路传输时,可以进行“分片”(得看分组标志位里给不给分片,不给分片则会把分组扔掉并发送ICMP报文

    **IP分片到达最终目的主机时,目的主机负责“重组”分片。

    **那么目的主机当然需要一些标识来帮助“重组”,IP首部的相关字段(总长度、标识、标志位和片偏移,上面已介绍)用于标识分片和确定分片顺序。

    **如果某片丢失,则会等待一段时间,等不到则扔掉所有分片


    4.IP分片过程


    接下来可以做道考研的这种计算题


    四、IP编址

    解决IP分组从哪里来到哪里去。实际是要给那些接口编址。那么有哪些接口呢?--实现网络功能的接口

    路由器通常有多个接口,主机通常有一个或两个接口(有线的以太网和无线网,无线网不用,那是链路层的事)


    IP地址:32比特编号标识主机、路由器的接口。按照点分十进制(32比特分为四组,每组8位用二进制表示,经转换后就是四组十进制数)书写,如下:



    1.怎么样为接口分配IP地址(IP子网)

    IP地址分为网络号(高位比特)和主机号(低位比特),某区域内网络号相同,主机号标识自己。


    上面这些具有相同网络号的网络就是构成了IP子网的概念。

    IP子网:

    **具有相同网络号

    **不跨越路由器(第三及以上网络设备)可以彼此物理联通的接口


    2.有类IP地址(IP地址分类)

    关于网络号和主机号分别占用多少比特,怎么划分

    如图: 

    特殊IP地址 
     
    私有IP地址 

    五、IP子网划分与子网掩码

    区分一个IP子网更小范围的网络,改进方法:


    那么问题来了,怎么知道是否划分了子网,而且到底划分了多少位呢?——答案是子网掩码


    关于子网掩码的问题请看另一篇博文:

    子网掩码!如何划分子网掩码,计算IP地址


    给子网分配一个地址:192.168.1.x/24 那么其中的/24就是子网掩码,表示前24比特定义了子网地址。


    在主机上设置子网掩码的作用只有一个,就是判断将要连接的ip地址和主机是否处于一个子网,如果是,则只经过数据链路层,直接发送到ip地址,而不经过路由,否则将数据包发送到路由。


    子网地址+子网掩码——>确定子网大小


    将IP分组的目的IP地址与子网掩码按位与运算,提取子网地址。例如以下:


  • 相关阅读:
    php array_flip() 删除数组重复元素——大彻大悟
    深入理解HTTP协议之POST方法——ajax实例
    RHEL/CentOS/Fedora各种源(EPEL、Remi、RPMForge、RPMFusion)配置
    SpringMVC注解校验
    Mybatis源码解析(二)
    MyBatist庖丁解牛(三)
    MyBatist庖丁解牛(二)
    linux模拟http请求命令
    清空文件内容
    git上如何删除已有项目
  • 原文地址:https://www.cnblogs.com/chz-blogs/p/9381005.html
Copyright © 2011-2022 走看看