一、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地址与子网掩码按位与运算,提取子网地址。例如以下:


计算机网络知识点总结2:IP协议(IPV4)的更多相关文章

  1. 计算机网络 4.网络层与IP协议

    网络中的每一台主机和路由器都有一个网络层部分.而路由器中也没有网络层以上的层次.网络层是协议栈中最复杂的层次. 转发forwarding:当一个分组到达某路由器的输入链路时.该路由器将分组移动到适当的 ...

  2. 计算机网络自学之路-----IP协议(3)

    前面一期说到了IP层的IP协议跟ARP协议,因为IPV4协议自身有些不足的地方,为了弥补这些不足,又引入了一些别的协议.觉得这种弥补方式治标不治本~~ 1)ICMP网络控制报文协议 2)CIDR无类域 ...

  3. 计算机网络自学之路------IP协议(2)

    之前忘记说了,这些内容都是边看视频边写的,视频出自西安交通大学. 本期说的是IP分组转发的内容,里面详细介绍了IP协议跟ARP协议,最后再给出一个例子,说明这两个协议在网络中传输的具体过程. 1)Ip ...

  4. 计算机网络自学之路------IP协议(1)

    1)TCP/IP模型与OSI对应 2)TCP/IP集每层主要协议 3)IP协议 4)IP地址的命名与使用 5)子网与子网掩码 1)TCP/IP模型与OSI对应关系 我们看到,TCP/IP只有四层与OS ...

  5. 计算机网络知识之TCP/IP协议簇

    OSI参考模型 OSI的来源         OSI(Open System Interconnect),即开放式系统互联. 一般都叫OSI参考模型,是ISO(国际标准化组织)组织在1985年研究的网 ...

  6. 计算机网络——OSI、TCP/IP协议族详解

    一.OSI七层协议体系结构域TCP/IP四层体系结构对比 ISO/OSI模型,即开放式通信系统互联参考模型(Open System Interconnection Reference Model),是 ...

  7. IP协议详解

    Internet地址结构 表示IP地址 目前的IP版本有4和6. 目前最流行的就是IPv4,有十进制和二进制两种表示方法.分别是: 点分四组十进制.每一组范围是[0~255],如:255.255.25 ...

  8. 网络通信-在浏览器输入url,基于TCP/IP协议,浏览器渲染的解释

    知识点1: 网络模型 TCP/IP四层 和ISO七层模型 (统一省略后面层字.比如传输代表传输层) 知识点2: 在应用层中TCP建立连接,经历的三次握手协议 首先:,TCP协议是什么? 为什么要三次握 ...

  9. 计算机网络三:域名、IP地址和TCP/IP协议

    一.域名        域名(Domain Name),简称域名.网域,是由一串用点分隔的字符型标志名字组成的Internet上某一台计算机或计算机组的名称,用于在数据传输时标识计算机的电子方位(有时 ...

随机推荐

  1. Django之FBV和CBV的用法

    FBV FBV,即 func base views,函数视图,在视图里使用函数处理请求. 以用户注册代码为例, 使用两个函数完成注册 初级注册代码 def register(request): &qu ...

  2. NOIP2008复赛 提高组 第一题

    描述 笨小猴的词汇量很小,所以每次做英语选择题的时候都很头疼.但是他找到了一种方法,经试验证明,用这种方法去选择选项的时候选对的几率非常大! 这种方法的具体描述如下:假设maxn是单词中出现次数最多的 ...

  3. Jmeter介绍和安装

    Apache JMeter™应用开源软件,100%纯Java应用程序,设计用于负载功能测试和性能测试.它最初是为测试Web应用程序而设计的,但后来扩展到其他测试函数中. 安装步骤:1.安装JDK 8版 ...

  4. logback配置方法

    logback是一个通用可靠.快速灵活的日志框架,它替代了log4j,和slf4j组成新的日志系统. slf4j是一个日志门面,为其他各种日志框架提供了统一的接口,代码中使用slf4j可以避免对某一种 ...

  5. (二)spring 高级装配-Condition -条件化的bean

    Condition:满足某个特定条件的情况下创建bean 条件化配置bean: a:@Conditional 指定一个class ,它指明了通过条件对比的类.如果没有指定class则通过Condito ...

  6. JavaScript之对象Array

    数组Array是JavaScript中最常用的类型之一,同一数组中可以保存任意类型的数据,并且它的长度是动态的,会随着数组中数据的加减自动变化.每个数组都有一个表示其长度(数组元素的个数)的lengt ...

  7. PHP操作redis 【转】

    Redis是一个开源的使用ANSI C语言编写.支持网络.可基于内存亦可持久化的日志型.Key-Value数据库,并提供多种语言的API. Redis支持的数据类型有 Stirng(字符串), Lis ...

  8. node连接数据库

    一.在package.json依赖模块添加: "mysql" : "latest",执行npm install: 二.module目录下新建mysql.js: ...

  9. Mybatis源码解析,一步一步从浅入深(一):创建准备工程

    Spring SpringMVC Mybatis(简称ssm)是一个很流行的java web框架,而Mybatis作为ORM 持久层框架,因其灵活简单,深受青睐.而且现在的招聘职位中都要求应试者熟悉M ...

  10. 从 Int 到 Integer 对象,细细品来还是有不少东西

    int 是 Java 八大原始类型之一,是 Java 语言中为数不多不是对象的东西,Integer 是 int 的包装类,里面使用了一个 int 类型的变量来存储数据,提供了一些整数之间的常用操作,常 ...