目录

  • 前言
    • 上层协议类型
    • IP报文头部
    • IP编址
    • 进制之间转换
    • IP地址分类
      • 私有地址范围
      • 特殊地址
    • 子网掩码
      • 默认子网掩码
      • 地址规划
      • 有类IP编址的缺陷
      • 变长子网掩码
    • 无类域间路由
    • 网关
    • IP包分片
    • 生存时间
    • 协议号
    • 常见问题

前言

网络层位于数据链路层与传输层之间。网络层中包含了许多协议,其中最为重要的协议就是IP协议。网络层提供了IP路由功能。理解IP路由除了要熟悉IP协议的工作机制之外,还必须理解IP编址以及如何合理地使用IP地址来设计网络。

上层协议类型

以太网帧中的Type字段值为0x0800,表示该帧的网络层协议为IP协议。


       在剥掉帧的头部和尾部之前,网络设备需要根据帧头中Type字段确定下一步将帧发送到哪个上层协议进行处理。

本例中的帧头部Type字段表示该帧需要上送到IP协议进行处理。以下将介绍帧的头部和尾部被剥掉后,IP协议将如何处理帧中的数据。

IP报文头部

IP报文头部信息用于指导网络设备对报文进行路由和分片。

同一个网段内的数据转发通过链路层即可实现,而跨网段的数据转发需要使用网络设备的路由功能。
分片是指数据包超过一定长度时,需要被划分成不同的片段使其能够在网络中传输。

IP报文头部长度为20到60字节,报文头中的信息可以用来指导网络设备如何将报文从源设备发送到目的设备。

  1. 版本字段表示当前支持的IP协议版本,当前的版本号为4。
  2. DS字段早期用来表示业务类型,现在用于支持QoS中的差分服务模型,实现网络流量优化。
  3. 源和目的IP地址是分配给主机的逻辑地址,用于在网络层标识报文的发送方和接收方。根据源和目的IP地址可以判断目的端是否与发送端位于同一网段,如果二者不在同一网段,则需要采用路由机制进行跨网段转发。

IP编址

IP地址分为网络部分和主机部分。
IP地址由32个二进制位组成,通常用点分十进制形式表示。


IPv4地址为32比特的二进制数,通常用点分十进制表示。

IP地址用来标识网络中的设备,具有IP地址的设备可以在同一网段内或跨网段通信。IP地址包括两部分,第一部分是网络号,表示IP地址所属的网段,第二部分是主机号,用来唯一标识本网段上的某台网络设备。

每个网段上都有两个特殊地址不能分配给主机或网络设备。

  1. 第一个是该网段的网络地址,该IP地址的主机位为全0,表示一个网段。
  2. 第二个地址是该网段中的广播地址,目的地址为广播地址的报文会被该网段中的所有网络设备接收。广播地址的主机位为全1。除网络地址和广播地址以外的其他IP地址都可以作为网络设备的IP地址。

进制之间转换

在IP网络中,二进制和十六进制是常用的编码方式

  1. 二进制每一位只有0和1两个值,基值为2,二进制数的每一位都可以用2的x次幂来表示,x表示二进制数的位数。
  2. 十六进制的每一位可以有16个数值,范围为0-F(即0-9和A-F),A对应十进制的10,F对应十进制的15(二进制的1111)。

IP地址分类

IPv4地址被划分为A、B、C、D、E五类,每类地址的网络号包含不同的字节数。

A类,B类和C类地址为可分配IP地址,每类地址支持的网络数和主机数不同。

  1. A类地址可支持126个网络,每个网络支持224 (16,777,216 )个主机地址,另外每个网段中的网络地址和广播地址不能分配给主机。
  2. C类地址支持200多万个网络,每个网络支持256个主机地址,其中254个地址可以分配给主机使用。
  3. D类地址为组播地址。主机收到以D类地址为目的地址的报文后,且该主机是该组播组成员,就会接收并处理该报文。

各类IP地址可以通过第一个字节中的比特位进行区分。

  1. A类地址第一字节的最高位固定为0;
  2. B类地址第一字节的高两位固定为10;
  3. C类地址第一字节的高三位固定为110;
  4. D类地址第一字节的高四位固定为1110;
  5. E类地址第一字节的高四位固定为1111
IPv4中的部分IP地址被保留用作特殊用途。
为节省IPv4地址,A、B、C类地址段中都预留了特定范围的地址作为私网地址
私有地址范围

10.0.0.0~10.255.255.255
       172.16.0.0~172.31.255.255
       192.168.0.0~192.168.255.255

默认情况下,网络中的主机无法使用私网地址与公网通信;当需要与公网通信时,私网地址必须转换成公网地址。

特殊地址

127.0.0.0~127.255.255.255
       0.0.0.0
       255.255.255.255

  1. 127.0.0.0网段中的地址为环回地址,用于诊断网络是否正常。
  2. IPv4中的第一个地址0.0.0.0表示任何网络,这个地址的作用将在路由原理中详细介绍。
  3. IPv4中的最后一个地址255.255.255.255是0.0.0.0网络中的广播地址。

子网掩码


子网掩码用于区分网络部分和主机部分。子网掩码与IP地址的表示方法相同。每个IP地址和子网掩码一起可以用来唯一的标识一个网段中的某台网络设备。子网掩码中的1表示网络位,0表示主机位。

默认子网掩码

地址规划

通过子网掩码可以判断主机所属的网段、网段上的广播地址以及网段上支持的主机数

图中这个例子,主机地址为192.168.1.7,子网掩码为24位(C类IP地址的缺省掩码),从中我们可以判断该主机位于192.168.1.0/24网段。将IP地址中的主机位全部置为1,并转换为十进制数,即可得到该网段的广播地址192.168.1.255。

有类IP编址的缺陷

在设计网络时使用有类IP地址会造成地址的浪费

变长子网掩码

采用可变长子网掩码可解决上述问题。缺省子网掩码可以进一步划分,成为变长子网掩码(VLSM)


通过改变子网掩码,可以将网络划分为多个子网

本例中的地址为C类地址,缺省子网掩码为24位。现借用一个主机位作为网络位,借用的主机位变成子网位。一个子网位有两个取值0和1,因此可划分两个子网。该比特位设置为0,则子网号为0,该比特位设置为1,则子网号为128。将剩余的主机位都设置为0,即可得到划分后的子网地址;将剩余的主机位都设置为1,即可得到子网的广播地址。每个子网中支持的主机数为27-2(减去子网地址和广播地址),即126个主机地址。

无类域间路由

无类域间路由CIDR(Classless Inter Domain Routing)由RFC1817定义。
CIDR突破了传统IP地址的分类边界,将路由表中的若干条路由汇聚为一条路由,减少了路由表的规模,提高了路由器的可扩展性。

如上图所示,一个企业分配到了一段A类网络地址,10.24.0.0/22。该企业准备把这些A类网络分配给各个用户群,目前已经分配了四个网段给用户。如果没有实施CIDR技术,企业路由器的路由表中会有四条下连网段的路由条目,并且会把它通告给其他路由器。
通过实施CIDR技术,我们可以在企业的路由器上把这四条路由10.24.0.0/24,10.24.1.0/24,10.24.2.0/24,10.24.3.0/24汇聚成一条路由10.24.0.0/22。这样,企业路由器只需通告10.24.0.0/22这一条路由,大大减小了路由表的规模。

网关

网关用来转发来自不同网段之间的数据包

报文转发过程中,首先需要确定转发路径以及通往目的网段的接口,然后将报文封装在以太帧中通过指定的物理接口转发出去。如果目的主机与源主机不在同一网段,报文需要先转发到网关,然后通过网关将报文转发到目的网段。
       网关是指接收并处理本地网段主机发送的报文并转发到目的网段的设备。为实现此功能,网关必须知道目的网段的IP地址。网关设备上连接本地网段的接口地址即为该网段的网关地址。

IP包分片

网络中转发的IP报文的长度可以不同,但如果报文长度超过了数据链路所支持的最大长度,则报文就需要分割成若干个较小的片段才能够在链路上传输。将报文分割成多个片段的过程叫做分片。


接收端根据分片报文中的标识符(Identification),标志(Flags),及片偏移(Fragment Offset)字段对分片报文进行重组。

  1. 标识符用于识别属于同一个数据包的分片,以区别于同一主机或其他主机发送的其它数据包分片,保证分片被正确的重新组合。
  2. 标志字段用于判断是否已经收到最后一个分片。最后一个分片的标志字段设置为0,其他分片的标志字段设置为1,目的端在收到标志字段为0的分片后,开始重组报文。
  3. 片偏移字段表示每个分片在原始报文中的位置。第一个分片的片偏移为0,第二个分片的片偏移表示紧跟第一个分片后的第一个比特的位置。比如,如果首片报文包含1259比特,那么第二分片报文的片偏移字段值就应该为1260。

生存时间


       报文在网段间转发时,如果网络设备上的路由规划不合理,就可能会出现环路,导致报文在网络中无限循环,无法到达目的端。环路发生后,所有发往这个目的地的报文都会被循环转发,随着这种报文逐渐增多,网络将会发生拥塞。
       为避免环路导致的网络拥塞,IP报文头中包含一个生存时间TTL(Time To Live)字段。报文每经过一台三层设备,TTL值减1。初始TTL值由源端设备设置。当报文中的TTL降为0时,报文会被丢弃。同时,丢弃报文的设备会根据报文头中的源IP地址向源端发送ICMP错误消息。

协议号

目的端的网络层在接收并处理报文以后,需要决定下一步对报文该做如何处理。IP报文头中的协议字段标识了将会继续处理报文的协议。与以太帧头中的Type字段类似,协议字段也是一个十六进制数

该字段可以标识网络层协议,如ICMP(Internet Control Message Protocol,因特网控制报文协议),也可以标识上层协议,如TCP(Transmission Control Protocol,传输控制协议,对应值0x06)、UDP(User Datagram Protocol,用户数据包协议,对应值0x11)。

常见问题

子网掩码的作用是什么?

网关的作用是32位的IP子网掩码用于区分IP地址中的网络号和主机号。网络号表示网络或子网,主机号表示网络或子网中的主机。

IP报文头部中TTL字段的作用是什么?

如果网络中存在环路,则IP报文可能会在网络中循环而无法到达目的端。TTL字段限定了IP报文的生存时间,保证无法到达目的端的报文最终被丢弃。

网关的作用是什么?

网关是指接收并处理本地网段主机发送的报文并转发到目的网段的设备。

计算机网络——IP编址(一篇带你读懂)相关推荐

  1. 一篇带你读懂MQ——MQ的原理、持久化以及使用场景总结

    一.MQ简介及特点 MQ全称为Message Queue, 消息队列(MQ)是一种应用程序对应用程序的通信方法.应用程序通过写和检索出入列队的针对应用程序的数据(消息)来通信,而无需专用连接来链接它们 ...

  2. 一篇带你读懂用户故事地图

    之前在敏捷产品管理系列中,我讲了产品 Backlog 作为敏捷团队管理开发过程的核心,所有的活动和交付物是如何围绕它展开的.我也给你讲了组成产品 Backlog 之一的用户故事又是如何经过 建模.搜集 ...

  3. Linux - 一篇带你读懂 Curl Proxy 代理模式

    curl 是一个很有名的处理网络请求的 类Unix 工具.出于某种原因,我们进行网络请求,需要设置代理.本文讲全面介绍如何为 curl 设置代理 设置代理参数 基本用法 -x, --proxy [pr ...

  4. [Hive]一篇带你读懂Hive是什么

    ✅作者简介:大家好,我是Philosophy7?让我们一起共同进步吧!

  5. JVM学习笔记(Ⅰ):Class类文件结构解析(带你读懂Java字节码,这一篇就够了)

    JVM学习笔记(Ⅰ):Class类文件结构解析,带你读懂Java字节码 前言:本文属于博主个人的学习笔记,博主也是小白.如果有不对的地方希望各位帮忙指出.本文主要还是我的学习总结,因为网上的一些知识分 ...

  6. 带你读懂《深入理解计算机系统》开篇

    <深入理解计算机系统>在豆瓣评分高达9.7分,可以说是豆瓣上计算机相关书籍中评分最高的一本 一.以下是豆瓣知乎的一些评论节选给大家: 1. 还能说什么呢?能把硬件.系统.软件系统地结合起来 ...

  7. 带你读懂Spring 事务——事务的隔离级别(超详细,快藏)

    不了解事务的铁汁可以先看前两篇,讲的超详细,有问题还请您指点一二 带你读懂Spring 事务--认识事务 带你读懂Spring 事务--事务的传播机制(藏) 特别提示:本文所进行的实验都是在MySQL ...

  8. 机器学习中为什么需要梯度下降_机器学习101:一文带你读懂梯度下降

    原标题 | Machine Learning 101: An Intuitive Introduction to Gradient Descent 作者 | Thalles Silva 译者 | 汪鹏 ...

  9. 一文带你读懂HTTP协议的前世今生

    点击上方蓝字关注我们 HTTP,Hypertext Transfer Protocol,超文本协议,是在万维网上传输文件(如文本.图形图像.声音.视频和其他多媒体文件)的规则集.如果web用户打开他们 ...

最新文章

  1. windows 搭建kms服务器激活_自建KMS激活服务器的两种方法
  2. Java新手入门的30个基本概念
  3. python123组合数据类型答案_Python组合数据类型
  4. 前端18个月难度翻番?来这里把握大前端技术本质进展丨稀土开发者大会
  5. ADO Entities Framework不对多表查询进行优化?
  6. Mybatis的案例和接口代理开发和模板配置
  7. 20145308刘昊阳 20145302张薇《信息安全系统设计基础》实验五:网络通信 实验报告...
  8. Tomcat软连接访问配置(symbol link)
  9. 这本Python算法书有点火~
  10. MySQL 数据库索引优化项目实战
  11. 苹果出现长方形透明框_看到我卧槽!这是苹果史上最疯狂的开发者大会
  12. SAP-MM-PA精解分析系列之供应商(02)-账户组解析
  13. C++如何写adaptable仿函数
  14. linux-快速返回上次所在目录
  15. 学习中遇到的小技巧(陆续更新……)
  16. Uiautomator2 GitHub文档转载
  17. 【OAK开源项目教程】opencv+python实现测量包装盒尺寸和体积
  18. Python爬虫之findall和lxml
  19. EPLAN绘图软件:使用技巧--拖拉非坏事
  20. 如何保护您的网站免受恶意软件的侵害

热门文章

  1. 字符串大小写转换器(html+css+js)
  2. Hexo图片相关 - 文章显示、主页显示、修改fancybox
  3. jsp网上图书销售管理系统ssh论文
  4. python爬取图片实例_Python简单爬取图片实例
  5. linux下python操作.doc后缀文件
  6. 简析强制缓存和协商缓存
  7. 使用shodan/censys API搜索免费的elasticsearch/kibana资源
  8. Arduino篇-红外遥控器控制小车
  9. 使用awk命令分析nginx日志定位响应慢的java接口
  10. 频率信号转电压或电流信号隔离变送器0-1KHz /0-5KHz /0-10KHz转0-2.5V/0-5V/0-20mA