网络基础网络层--IP协议

  • 一、IP协议解析
    • (一)4位版本
    • (二)4位报头长度
    • (三)8位服务类型
    • (四)16位数据报长度
    • (五)16位分片标识
    • (六)3位分片标志
    • (七)13位分片偏移
    • (八)8位TTL
    • (九)8位传输层协议
    • (十)16位校验和
    • (十一)32位源端-对端IP地址
    • (十二) 0-40字节选项数据
  • 二、地址管理与路由选择
    • (一)IP地址
    • (二)IP地址组成
    • (三)网络号—俗称“网段”的管理
      • 1.A类网络
      • 2.B类网络
      • 3.C类网络
      • 4.D/E类网络:特殊网络
    • (四)子网掩码
      • 1.子网掩码明确限制了一个网络中的主机号个数
      • 2.子网掩码与IP地址相与,可以得到当前IP地址所属的网络号
      • 3.子网掩码可以用于辨别一个ip地址是否属于某个网络
    • (五)特殊IP地址
      • (1)0.0.0.0
      • (2)255.255.255.255
      • (3)127.0.0.1
    • (六)NAT/NAPT—网络地址转换技术
    • (七)路由选择

一、IP协议解析

(一)4位版本

用于标识版本协议 4-ipv4。

(二)4位报头长度

以4字节为单位,ip报头最小20最大60字节。

(三)8位服务类型

3位优先权弃用,4位类型,1位保留。

(四)16位数据报长度

限制一个IP报文必须小于64k。

  • 一个tcp报文数据最大长度必须小于64k-40;
  • 一个ucp报文数据最大长度必须小于64k-28。

(五)16位分片标识

用于分片重组时,识别当前分片属于哪个原始报文,相同的原始报文的分片具有相同的分片标识。

链路层MTU:最大传输单元,限制了一个数据帧在网络中的最大传输大小。

如果一个报文长度处于网络层允许,但是MTU不允许,MTU<IP报文大小<64k;
则这个包在网络层就会被分片,就指的是,将一个大的报文分割成多个小的报文–分片,
每个分片封装一个IP报头进行传输,
这些分片在对端主机上会进行分片重组,重组为原始的报文向上层交付。

既然要在对端进行分片重组,那么哪个分片属于哪个原始报文呢?又在原始报文什么位置呢?
(答:分片标识的作用)

(六)3位分片标志

1位保留,1位禁止分片标志,1位分片结尾标志。

(七)13位分片偏移

标识了当前分片在原始报文中的位置,是以8字节为单位的。如果数据是1,则偏移量实际上是第8字节处。

为什么要以8字节为单位?
13个比特位表示最大大小为8192,而一个原始报文最大大小为64k,以8字节为单位才能完整表示
( 2^10=1024, 2^3 = 8192 * 8 = 64k )*
因此实际上每个分片(除了最后一个)他的分片大小肯定都是8的整数倍。

(八)8位TTL

报文在网络上的生命周期,最大数字是255,表示所能经过的路由器跳数。(每经过一个路由器就会-1)

(九)8位传输层协议

数据到达对端会进行数据分用,也就是选择一个传输层协议进行数据解析,封装时的上层协议类型。

(十)16位校验和

校验数据一致性。

(十一)32位源端-对端IP地址

用于描述通信的两端主机。

(十二) 0-40字节选项数据

比如路由跟踪时候记录的路由信息…

二、地址管理与路由选择

(一)IP地址

用于在网络中唯一标识一台主机。

ipv4:uint32_t类型,IP地址大致有42亿9千多万,IP地址实际上不够用,

DHCP动态地址分配-谁上网给谁分配地址

问题:如何分配地址才能保证网络上IP地址不重复呢?

答:
分网络进行地址管理,一个网络中的主机能够被分配到的IP地址都会具有这个网络的标识—网络号
这时候只要每个网络的网络号不同,则可以将网络地址管理简单化了。

(二)IP地址组成

网络号+主机号

  • 网络号:是一个网络的标识,一个网络分配的IP地址都具有相同的网络号。
  • 主机号:是一台主机在当前网络中的标识。

(三)网络号—俗称“网段”的管理

早期的网络划分方式:将所有的IP地址分为了五大类:

1.A类网络

高1位固定是0;7位网络号;24位主机号;
用于组建超大型网络–一个网络中具有1600w+主机号。

A类网络网络号范围:0~127,
其中IP地址范围:0.0.0.0~127.255.255.255,总共有128个A类网络。
其中每个网络中具有255×255×255个主机号;例如0号网络的IP地址:0.0.0.0~0.255.255.255。

2.B类网络

高2位固定10;14位网络号;16位主机号;
用于组建中型网络–一个网络中具有64k个主机号。

B类网络网络号范围:128.0~191.255,
其中IP地址范围:128.0.0.0~191.255.255.255,共有1w+B类网络。
其中每个网络中具有255×255个主机号,例如128.0网络的IP地址:128.0.0.0~128.0.255.255。

3.C类网络

高3位固定110;21位网络号;8位主机号;
用于组建小型网络-一个网络中具有256个主机号。

C类网络网络号范围:192.0.0~223.255.255;
其中IP地址范围:192.0.0.0~223.255.255.255。
其中每个网络中具有256个主机号,例如192.0.0网络IP地址范围:192.0.0.0~192.0.0.255。

以下地址哪个是C类地址:
(1)23.244.23.24 (2)156.23.23.23 (3)193.23.23.23 (4)191.24.24.24

4.D/E类网络:特殊网络

(四)子网掩码

这种早期网络划分方式,比较粗糙,A类地址浪费较多。
而当前使用的划分方式,是在早期基础上,
引入了一个新的字段-【子网掩码】进行网络划分—CIDR方案

子网掩码: uint32_t类型的数据,不过其中的数据由连续二进制1组成

1.子网掩码明确限制了一个网络中的主机号个数

子网掩码取反得到的数据就是一个子网中最大的主机号max,那么子网的主机号范围就是0~max。

2.子网掩码与IP地址相与,可以得到当前IP地址所属的网络号

例如:

3.子网掩码可以用于辨别一个ip地址是否属于某个网络

例如:一个公司申请了一个C类网络192.168.2.0/24,公司有4个部门,这时候要将网络平均划分4个子网,请问,每个子网的主机号范围,以及网络号,以及子网掩码是多少?

(五)特殊IP地址

一个子网中有两个地址是不能分配给主机的:
(1)主机号全为0的地址:

实际上就是网络号,是网络的标识

(2)主机号全为1的地址:

局域网的广播地址,UDP相较于TCP多一个功能-局域网广播,将数据发送给局域网广播地址,
表示将数据发送给了局域网中的所有主机

(1)0.0.0.0

用于识别本机上的所有IP地址,或者说任意IP地址,通常用于服务器的绑定监听地址。

(2)255.255.255.255

全网广播地址,用于dhcp请求的时候目标主机地址。

一个主机连接到一个网路,向路由器发送dhcp请求,要求路由器给自己分配地址,网络通信,
必须知道目标端IP地址,而这个新连接主机要如何知道路由器的地址呢?
设为全网广播地址!!!

(3)127.0.0.1

其实127网段都是用于本地回环,其中127.0.0.1是最为典型的虚拟回环网卡地址。

用于实现本地网络回环测试。

(六)NAT/NAPT—网络地址转换技术

在地址管理中,光dhcp动态分配是不够的,IP地址还是不够分,因此还有一个非常重要的管理方式:

NAT/NAPT:网络地址转换技术

用于组建私网,对于私网中向外通信的数据,将其源端私网IP地址进行地址替换,替换为对外的公网IP地址。

使用NAT/NAPT方式组建私网,对流经网关的数据进行源端地址替换,替换为对外地址,
这样的话私网中的很多主机实际上就只用了一个对外的IP地址在上网。

私网主机的请求数据,出去的时候都被转换为对外地址了,
这种情况**,不同的私网内的主机IP地址是可以重复的,**
因为数据出去时被转换的地址和端口是不会重复的。

这样也会造成一个问题:私网间的主机是无法直接通信的。

私网内的主机实际上对外是不可见的(因为外部看到的是转换后对外的地址),
但是这样从侧面加强了私网的网络保护。

要求:私网IP地址虽然不同私网可以重复使用,但是不能与公网IP地址冲突。

RFC1918文档规定:用于组建私网,只能用以下IP地址:

  1. 10...* :1个大型私网网段
  2. 172.16..~172.31.. :16个中型私网网段
  3. 192.168.. :256个小型私网网段,用于组建私网

私网:我们自己所搭建的一个内部的私有网络。

公网:也叫外网,就是我们通常所说的上网的互联网。

(七)路由选择

一条数据,要到达对端主机需要经过很多路由器的转发,但是网络是一个非常复杂的星型结构,
因此一条数据如何转发能够最快到达对端。

在每一台节点设备上都有一样东西—路由表

一个路由器拿到一个数据后,会取出目标IP地址,然后在自己所有的路由表中进行查看,
逐个与每个路由表中的网络信息进行比对:

  1. 与对应网络子网掩码相与;
  2. 拿相与结果与对应网络的网络号相比;
    (1)一样则数据目标主机属于此网络;
    (2)不一样则对比下一个路由选项;
  3. 若所有路由表项都没有;
  4. 则将数据转发给自己的网关设备。

互联网上的路由器,通常不仅仅包含有自己相连的网络的路由信息,
实际上有很多层网络的路由表信息, 因为网络上路由器会多层广播自己的路由表。

不同的私网地址和网络号可以重复使用,但是相邻的私网之间,不能具有相同的网络号。
比如路由器组建的私网,与自己所在的私网网络号相同,会造成路由器的路由表中信息冲突。

网络基础网络层--IP协议相关推荐

  1. 网络基础 TCP/IP协议面试常问知识点

    网络基础 TCP/IP协议面试常问知识点 ****************** 如有侵权请提示删除 ********************* 1.网络包的组成: 报头/起始帧分界符--MAC头部-- ...

  2. 网络:网络层IP协议

    目录 一.IP协议 1. IP数据报 1.1 IP首部 2.IP协议的转发 2.1 路由表 2.2 IP协议转发流程 3.子网划分 3.1 分类的IP地址 3.2 划分子网的基本思想 3.3 子网掩码 ...

  3. (chap1 web网络基础) TCP/IP协议层

    1. HTTP( HyperText Transfer Protocol) 超文本传输协议 2. TCP/IP协议层 应用层 应用层决定了向用户提供应用服务时通信的活动. TCP/P协议族内预存了各类 ...

  4. 网络编程--TCP/IP协议(一)

    目录 前言 一丶网络基础 <1>认识IP地址 1>具体格式 2>组成 3>分类 4>子网掩码 <2>认识MAC地址 二丶网络设备及相关技术 <1& ...

  5. TCP/IP网络协议栈:IP协议

    <TCP/IP网络协议栈:以太网数据包结构.802.3> <TCP/IP网络协议栈:ARP协议详解> <TCP / IP攻击:ARP缓存中毒的基本原理.TCP序列号预测和 ...

  6. 网络基础应用层--HTTP协议

    网络基础应用层--HTTP协议 一.应用层协议 (一)应用层协议概念 (二)自定义协议概念 (三)数据格式如何定义最优 (四)结构体的二进制序列化 二.HTTP协议 (一)HTTP协议 1.请求-响应 ...

  7. 计算机网络子网的特定主机地址,网络基础之IP地址和子网掩码

    原标题:网络基础之IP地址和子网掩码 今天来看下IP地址和子网掩码. 子网掩码是每个网络工程师必须要掌握的基础知识,只有掌握它,才能够真正理解TCP/IP协议的设置.下边我们一起来复习复习. 一.IP ...

  8. 网络基础 之SSL协议

    网络基础 之SSL协议 一.SSL 协议简介 SSL 的功能 SSL 的特性 SSL 在协议栈的位置 SSL 体系结构 二.SSL 协议工作原理 SSL协议可分为两层 SSL 的两个重要概念 SSL握 ...

  9. Java中的网络和TCP/IP协议

    网络和TCP/IP协议 一.网络通信协议 1.1 协议和七层模型 1.2 TCP/IP协议 二.网络通信的实现 2.1 TCP协议通信 2.2 UDP协议通信 前言: 有时候我们会不理解,我们在QQ上 ...

最新文章

  1. XenServer中Fast Copy与Full Copy的区别
  2. 前端工程师的修真秘籍(css、javascript和其它)
  3. MySQL的转义字符“\”
  4. 你真的了解Scrum吗?
  5. windows下apk查看工具的原理
  6. 探索java世界中的日志奥秘
  7. 模拟电子技术不挂科学习笔记1(半导体基础、二极管)
  8. MySQL高级知识(十六)——小表驱动大表
  9. Unity 叉乘 vector3 四元数 和声音组件
  10. [转]RTH试用手记之“额外功能”
  11. ajax清除session,跳出iframe框架页面后跳转页面
  12. 数据结构中的数学公式
  13. 传统3D游戏引擎的Web化
  14. unity5.6.5_5.6现在可用并完成了Unity 5周期
  15. 激光中心线算法MATLAB仿真
  16. 网站备案和域名实名认证的重要性
  17. 禁用win10笔记本键盘
  18. Python 一个漂亮的音乐节奏可视化方案
  19. 下载文件、根据链接生成二维码
  20. Mac电脑的强大压缩工具——FastZip,加密压缩。

热门文章

  1. 在xavier上寻找anaconda的替代品
  2. JS字符串string
  3. 【STUDY | 教资笔试面试】
  4. vulnhub私钥泄露实战
  5. 以U-NET为例的网络构建代码实现
  6. Raft is not great?
  7. “GetDocument”: 缺少返回类型;假定为返回“int”的成员函数
  8. 对接支付宝支付通道接口
  9. java:计算π的值
  10. In the last ten years (Superman?)