「作者主页」:士别三日wyx
「作者简介」:CSDN top100、阿里云博客专家、华为云享专家、网络安全领域优质创作者
「专栏简介」:此文章已录入专栏《计算机网络零基础快速入门》

本章重点

  1. IP协议的作用是什么?
  2. IP地址分类有哪些?
  3. IP数据包为什么分片?怎么分片?

IP协议

  • 一、IP地址
    • 1)IP地址分类
    • 2)私有IP地址
    • 3)特殊IP地址
  • 二、数据分片
  • 三、IP数据报

IP是一种 「不可靠」的 「端到端」的数据包 「传输服务」,主要实现两个功能:数据传输 和 数据分片。

一、IP地址

IP协议根据「IP地址」将数据传输到指定的目标主机,就像你寄快递的时候需要提供一个收货地址一样。

IP地址是全世界唯一的 32 位「二进制」数,通常用4位点分十进制来表示。

在 cmd 中执行 ipconfig 命令,查看本机的IP地址:

为了便于寻址以及层次化构造网络,每个IP地址分为「网络号码」和「主机号码」两个部分,同一个物理网络上的所有主机都使用同一个网络号码。

1)IP地址分类

IP地址分为A、B、C、D、E五类。

A类地址第一段是网络号码,剩下三段是主机号码;
B类地址前两段是网络号码,剩下两段是主机号码;
C类地址前三段是网络号码,最后一段是主机号码;

类别 IP范围 子网掩码 描述
A类(1~126) 1.0.0.1 ~ 127.255.255.254 255.0.0.0 共有126个网络,每个网络有1600万台主机,适合大规模的网络。
B类(128~191) 128.0.0.1 ~ 191.255.255.254 255.255.0.0 共有16384个网络,每个网络有6万台主机,适合中等规模的网络。
C类(192~223) 192.0.0.1 ~ 233.255.255.254 255.255.255.0 共有209万个网络,每个网络有254台主机,适合小型网络。
D类(224~239) 224.0.0.0 ~ 239.255.255.255 组播地址
E类(240~255) 240.0.0.0 ~ 255.255.255.254 保留地址

2)私有IP地址

A、B、C类地址中,分为公有IP和私有IP。

公有IP就是「可以注册」购买的IP;
私有IP就是「无法注册」的,用于内部使用的私有地址,私有地址如下:

A类 10.0.0.0–10.255.255.255,1个

B类 172.16.0.0–172.31.255.255,16个

C类 192.168.0.0–192.168.255.255,255个

A、B、C类地址范围中,私有IP外的地址都是公有地址(特殊地址除外)。

3)特殊IP地址

部分地址拥有特殊的含义,比如下面这些:

类型 地址格式 描述
全0地址 0.0.0.0 路由表的默认路由,表示整个网络,即网络内的所有主机,而非某一个主机,不可用。
网络号全0 0.x.x.x 本网内某个特定主机
主机号全0 x.0.0.0 网络地址,表示整个网络
全1地址 255.255.255.255 子网的广播地址,路由器不转发
主机号全1 x.255.255.255 广播地址,对当前网络所有主机进行广播
环回地址 127.0.0.1 ~ 127.255.255.254 代表本机IP,可用于测试网络连通性

IP地址是数据传输功能的基础,有了IP地址,我们就能知道数据要发送到什么地方。

二、数据分片

IP协议负责将网络层的IP数据报(IP分组)传输到链路层,由链路层将数据封装成帧。

帧最多只能封装 1500 字节(默认)的数据,当超过上限时,就需要分割数据,放到多个数据帧中传输,到达目标主机后,再将数据重组起来。

分割和重组的操作在路由器中完成,发送方发送的信息经过路由器时,路由器会将数据「分割」,放到不同的数据帧中,并在帧首部的字段(MF)标明数据的顺序;

当数据传输到目的路由器后,再根据帧首部的字段将信息「重组」,发送给目标主机。

三、IP数据报

IP协议从网络层传输到数据链路层的数据叫做IP数据报;

IP数据报分为首部和数据两个部分:

首部分由固定部分(20字节)和可变部分组成,首部格式如下:


1)版本(4位):IP协议版本,目标主机按照此版本解释数据,如果目标主机使用的是其他版本,则丢弃数据报。

2)首部长度(4位):数据报协议头长度,最小值为5,最大值为15。

3)服务(8位):用于分配优先级、延迟、吞吐量以及可靠性;前3位是优先级,后面4位成为服务类型,最后1位没有定义。

4)总长度(16位):IP数据报的字节长度(协议头部和数据),其最大值为65535字节。

5)标识(16位):一个整数,数据报分段时,用于识别当前数据报。

6)标记(3位):由3位字段构成,最低位(MF)控制分段,存在下一个分段置为1,否则置0代表该分段是最后一个分段;中间位(DF)指出数据报是否可进行分段,如果为1则机器不能将该数据报进行分段;第三位即最高位保留不使用,值为0。

7)分段偏移(13位):指出数据在源数据报中的相对位置,用于重组源数据。

8)生存时间(8位):一种计数器,在丢弃数据报的每个点值依次减1直至减少为0。这样确保数据报拥有有限的环路过程(即TTL),限制了数据报的寿命。

9)协议(8位):指明上层接收数据报的协议。

10)头部校验和(16位):该字段帮助确保IP协议头的完整性。由于某些协议头字段的改变,这就需要对每个点重新计算和检验。计算过程是先将校验和字段置为0,然后将整个头部每16位划分为一部分,将个部分相加,再将计算结果取反码,插入到校验和字段中。

11)源地址(32位):源主机IP地址,该字段在IPv4数据报从源主机到目的主机传输期间必须保持不变。

12)目的地址(32位):目标主机IP地址,该字段在IPv4数据报从源主机到目的主机传输期间同样必须保持不变。

IP协议 (通俗易懂),IP协议的主要功能及实现原理,IP地址分类,IP数据包分片,IP数据报格式。相关推荐

  1. 以太网数据包、IP包、TCP/UDP 包的结构(转)

    源:以太网数据包.IP包.TCP/UDP 包的结构 版本号(Version):长度4比特.标识目前采用的IP协议的版本号.一般的值为0100(IPv4),0110(IPv6). IP包头长度(Head ...

  2. 【Socket网络编程】7.以太网数据包、IP数据包、UDP数据包

    以太网数据包.ip数据包.udp数据包 搭配这篇博文服用,效果更好:数据封装 和 数据拆封:https://blog.csdn.net/u011754972/article/details/11794 ...

  3. IP数据包分片重叠部分的重组问题

    原作者:Haboob Team 翻译:李华峰(邪灵) 介绍 本文将介绍 IDS 的工作原理和讨论 IP 数据包分片的重组过程,并研究不同操作系统在实现重组时的差异性. IDS(入侵检测系统)简介 ID ...

  4. JavaGUI:多功能计算器(五)--Swing实现双语数据包+菜单切换(完整源码+EXE下载)

    JavaGUI:多功能计算器(五)–Swing实现双语数据包+菜单切换(完整源码+EXE下载) 本文资源下载: 程序源码及可独立运行的EXE文件自解压包(32bit): 多功能计算器v0.41[双语界 ...

  5. 为什么百度查ip查到的ip和dos里面ipconfig查到的不一样及IPv4地址分类

    内网IP 首先win+R 输入inconfig效果如下: IP为 192.168.0.106 (大众谈及的IP是IPV4的规则) 公网IP(外网IP) 都是本机IP,咋不同呢? <网基>中 ...

  6. wireshark数据包修改--IP地址修改(一)

    通过三篇文章,介绍通过wireshark修改pcap数据包的方法. 2409:8053:5003:1603:3ff::24------>2409:8053:5003:1603:3ff::28 原 ...

  7. 理解IP数据包分片原理

    1.搭建一个合适的拓扑 2.配置ip地址和转换器 3.配置路由器 4.切换到Simulation模式,创建大小为3600字节的复杂的数据包 然后我们点击"Capture/Forward&qu ...

  8. 网络层之IP协议,它带来了哪些功能,真的能顺着网线找到?

    作者:一天  首发公众号:网络之路博客(ID:NetworkBlog) 前言 在上一篇,学习了链路层的以太网协议,知道了MAC地址,在以太网中,找到对应的终端最终依靠的是MAC地址,但是在实际使用中, ...

  9. Linux内核网络数据包发送(三)——IP协议层分析

    Linux内核网络数据包发送(三)--IP协议层分析 1. 前言 2. `ip_send_skb` 3. `ip_local_out` and `__ip_local_out` 3.1 netfilt ...

最新文章

  1. R语言使用ggplot2包geom_jitter()函数绘制分组(strip plot,一维散点图)带状图(改变分组次序)实战
  2. tensorflow 做加法
  3. C++ 学习之旅(2)——链接器Linker
  4. NB-IoT在智能锁领域的应用
  5. C++中的也能使用正则表达式
  6. MongoDB分布式(分片存储)部署
  7. pythonpip使用方法_Python: pip常见的使用方法
  8. Tensorflow源码解析3 -- TensorFlow核心对象 - Graph 1
  9. yolov5鱼苗检测计数:从数据标注到训练
  10. 2 Linux磁盘管理
  11. 【LeetCode-面试算法经典-Java实现】【136-Single Number(仅仅出现一次的数字)】
  12. 中国大学mooc 慕课 管理信息系统(同济大学) 第八章 电子商务 第九章 信息系统规划 习题 测试答案
  13. Materialise Mimics Innovation Suite Research 19.0 X64安装包原版
  14. Manjaro下Opencv4+CMake安装和编译指南(完整版)
  15. Java弹球游戏,刚学Java时做的
  16. 【APP自动化测试环境】安装jdk---安装android SDK---安装appium---安装node.js---安装夜神模拟器--调试appium连接夜神模拟器
  17. VSCode配置编译MSVC程序
  18. Servlet与表单、数据库综合项目实战【学生信息管理】
  19. 二层板的射频RF信号如何控阻抗 四层板的射频RF信号如何控阻抗  射频信号是否可以不控阻抗,射频差分需要控阻抗吗?为什么射频信号需要挖空隔层参考?射频信号为什么要加粗?
  20. 对话《深入理解Java虚拟机》作者周志明:电竞选手成为Java大神之路

热门文章

  1. C++培训_001_WIN10的安装与激活_VS编译器的安装
  2. 操作系统的名字的读音
  3. 你是否有疑问,软件是如何驱动硬件,代码又是如何对计算机进行控制的呢?
  4. 1.socket网络编程
  5. Tensorflow 源码编译笔记(C++/C层)
  6. 卷积神经网络中特征图大小计算公式总结
  7. 进程与程序的联系与区别
  8. Oracle基本语法查询语句
  9. c++ sin\cos函数引用
  10. mockjs的安装使用