文章目录

  • 三、IP 层(网络层 - 路由器 - 广域网)
    • 3.1 IP 报文首部结构
    • 3.2 IP地址/网段/子网掩码/广播域
      • 3.2.1 IP 地址分类
      • 3.2.1 子网掩码
      • 3.2.2 广播域
    • 3.3 路由表

三、IP 层(网络层 - 路由器 - 广域网)

网络层的作用是,在复杂的网络环境中为要发送的数据报,找到一个合适的路径进行传输。IP 是实现多个数据链路之间的通信协议,不论数据链路层是以太网还是无线LAN或是PPP,都将一视同仁。

不同数据链路有个最大区别,就是它们各自的最大传输单位(MTU: Maximum Transmission Unit)不同。在以太网中是 1500 字节,在 ATM 中是 9180 字节。

网络层向上提供简单灵活,无连接的,尽最大努力交付的数据报服务。从数据报从主机A发送到主机B的过程中可能要经历很多节点。所谓无连接是指:数据报在传输之前不需要提前规划好整个传输路线,即不用提前建立一条从发送主机到接收主机之间的传输连接路线。(如果是有连接服务,该传输路线建立好之后,各数据报必须在这条路线上传输,经历的结点路径都是相同的)。这就保证了数据传输的简单性。当数据传输到一个节点时,根据网络中的情况在决定通往下一个节点应该走哪条路线。这就保证了数据传输的灵活性。

3.1 IP 报文首部结构

  • 网络层,数据包最大65535字节;链路层,数据最大是1500字节。所以,一旦超过数据链路层的最大要求时(网络层数据部分超过1480字节),数据包会分片。最大传输单元MTU
  • IP报文在数据链路层被分片后,到达目的主机IP层的顺序可能就会发生变化,因此要对原IP报文进行合并就要根据上述的标识标志位片偏移对原 IP 报文进行合并。
  • ICMP协议号:1;IGMP协议号:2;TCP协议号:6;UDP协议号:17;IPv6协议号:41;OSPF协议号:89;

3.2 IP地址/网段/子网掩码/广播域

在IPv4中,IP地址由32位正整数来表示,所以最多 2^32(大约是43亿)个。IP地址由 “网络号” 和 “主机号” 组成,同一网络号下,主机号不能重复。相同的网络号表示处在同一个网段,主机之间组成一个网段,处在同一个链路上(可以理解为共用一个交换机)。那有人可能会问,连最小的 C 类地址都有6万多个地址,接一个交换机,也太多了吧?后面还有一个子网掩码的概念,把网络号再次分隔。

3.2.1 IP 地址分类

IP 地址分为 A, B, C, D 四大类(E类保留)。在公共互联网中,IP 地址不能重复,每台设备地址都唯一。

早期有许多独立的网络,不需要连接互联网,在这些独立的网络中,主机本来可以随意配置 IP 地址,但为了避免出现问题(例如误连了互联网,独立网络之间发生了连接),在 A~D类的基础上又规定了私有网络 IP 范围。于是有了公网 IP私网 IP 之分。

再后来有了 NAT 技术,私有 IP 也可以和互联网上的 公有 IP 通信了。

在全面普及 IPv6 之前,互联网现状是使用 IPv4 和 NAT 技术,解决地址耗尽的问题。


通过将IP地址划分为网络号和主机号来标识,可以有如下特点:

  • IP地址管理机构在分配IP地址时只分配网络号。剩下的主机号由得到该网络号的单位自行分配,这样就方便了管理就够的管理;
  • 路由器在寻找目的主机的IP地址时,只需找到目的主机所在的局域网,再在该局域网内寻找目的主机。
  • 具有不同网络号的局域网必须有路由器进行连接,所以路由器总是有两个或两个以上网络号不同的IP地址。

广播地址:把主机号置为全 “1”,就是该网段的广播地址

3.2.1 子网掩码

早期,大家就是直接按照 A,B,C 类来使用的。但随着网络覆盖面越来越广,上网设备越来越多,直接使用 A,B,C 分类就会非常浪费资源。于是子网掩码出现了,把网络号进一步划分为子网。

划分网段是为了避免出现网络风暴,分隔各个网段。子网/子网掩码是为了充分利用网络号资源,一个网络号下可以分出多个子网。

子网掩码是一段连续的 “1”,比既定的网络号位数长,用来计算网络标识。

IP 地址:172.20.100.52
子网掩码:255.255.255.192
问:子网掩码下的网络号是多少?

注:也可缩写为 172.20.100.52/26

答案是:26 位子网掩码下,网络号是 172.20.100.0。

进一步问,该子网的广播地址是多少?172.20.100.63 !将上图中实际主机号对应的 6 位,全部置 “1” 就可以了。

3.2.2 广播域

记住一句话:交换机分割冲突域,路由器分割广播域

本章前面提到过 IP层 的广播报文,是把某个网络号下的主机号全置为1。而更早章节中也提过,在 MAC 层 以太网中,广播 MAC 地址为 全F。二者其实是相对应的,当 IP 层把广播报文提交给 MAC 层时,MAC 层就识别到这是一个广播帧(其实他也找不到这个 IP 对应的主机,根本不存在),会在组 MAC 帧时,把目的 MAC 地址置为全F。

广播
IP层:网络号(含子网号) + 全1主机号
MAC层:MAC地址全1,即 FF-FF-FF-FF-FF-FF

3.3 路由表

为了把数据包发给目标主机,所有主机(路由器)都维护着一张路由表,记录着IP数据在下一步该发给哪个路由器。

目标地址 子网掩码 网关 接口 跳数

可以运行 route print,显示本地计算机上的路由表。

IPv4 Route Table
===========================================================================
Active Routes:
Network Destination        Netmask          Gateway       Interface  Metric0.0.0.0          0.0.0.0      192.168.1.1     192.168.1.10     35127.0.0.0        255.0.0.0         On-link         127.0.0.1    331127.0.0.1  255.255.255.255         On-link         127.0.0.1    331127.255.255.255  255.255.255.255         On-link         127.0.0.1    331192.168.1.0    255.255.255.0         On-link      192.168.1.10    291192.168.1.10  255.255.255.255         On-link      192.168.1.10    291192.168.1.255  255.255.255.255         On-link      192.168.1.10    291224.0.0.0        240.0.0.0         On-link         127.0.0.1    331224.0.0.0        240.0.0.0         On-link      192.168.1.10    291255.255.255.255  255.255.255.255         On-link         127.0.0.1    331255.255.255.255  255.255.255.255         On-link      192.168.1.10    291
===========================================================================
Persistent Routes:NoneC:\WINDOWS\system32>

路由表分为静态配置,和动态生成。静态路由一般由管理员手动添加,而动态路由一般由各个路由器,根据路由协议(RIP, OSPF等),互相交换路由信息而生成。这里不做详细讨论。

【网络基础学习笔记】三、IP 网络层;相关推荐

  1. (*长期更新)软考网络工程师学习笔记——Section 6 网络层上篇

    目录 一.网络层的定义 二.IPv4数据报 三.IPv4 (一)分类依据 (二)IP地址分类 (三)网络.主机号位数 (四)特殊IP地址 四.划分子网 五.子网掩码 (一)默认子网掩码 (二)VLSM ...

  2. Python基础学习笔记三

    Python基础学习笔记三 print和import print可以用,分割变量来输出 import copy import copy as co from copy import deepcopy ...

  3. (*长期更新)软考网络工程师学习笔记——Section 7 网络层下篇

    九.IPv6 (一)IPv6的定义和省略写法 IPv6是IPv4的新版本,其采用更大的地址空间,从而解决IPv4地址耗尽的问题. IPv6的地址长度为128位,通常写为8组,每组4个十六进制数,且中间 ...

  4. Java基础学习笔记(三)_Java核心技术(高阶)

    本篇文章的学习资源来自Java学习视频教程:Java核心技术(高阶)_华东师范大学_中国大学MOOC(慕课) 本篇文章的学习笔记即是对Java核心技术课程的总结,也是对自己学习的总结 文章目录 Jav ...

  5. 网络基础学习系列三http

    目录 应用层 协议 实现一个计算器 1无序列化和反序列化的计算器 Protocol.hpp Sock.hpp Makefile CalServer.cc CalClient.cc 2.含序列化和反序列 ...

  6. python socket服务器_python网络编程学习笔记(三):socket网络服务器

    1.TCP连接的建立方法 客户端在建立一个TCP连接时一般需要两步,而服务器的这个过程需要四步,具体见下面的比较.步骤 TCP客户端 TCP服务器 第一步 建立socket对象 建立socket对象 ...

  7. (*长期更新)软考网络工程师学习笔记——数据链路层与网络层的相关计算题

    目录 前言 一.海明码校验码的计算 二.最小帧长的计算 三.求默认网关地址 四.网络地址.主机地址.广播地址的区分和求解 五.判断是否属于网络或子网的主机地址 六.子网划分和求子网掩码 七.子网范围和 ...

  8. Linux 网络编程学习笔记——三、TCP 协议详解

    目录 一.TCP 服务的特点 传输层协议主要有 TCP 协议和 UDP 协议,前者相对于后者的特点是:面向连接.字节流和可靠传输. 使用 TCP 协议通信的双方必须先建立连接,然后才能开始数据的读写. ...

  9. Java基础学习笔记三 Java基础语法

    Scanner类 Scanner类属于引用数据类型,先了解下引用数据类型. 引用数据类型的使用 与定义基本数据类型变量不同,引用数据类型的变量定义及赋值有一个相对固定的步骤或格式. 数据类型 变量名 ...

最新文章

  1. 太多人关注,太少人理解,这就是“量子计算”
  2. Android--手势触控屏幕控制/GestureDetector
  3. 每天一道Java题[7]
  4. java和python可以在一个项目中同时使用么-可以同时用python和java开发一个app吗?...
  5. DB2数据导入导出的小结
  6. 设计一种面向对象脚本语言
  7. pythonrgb高精度浮点运算类型_python实现RGB字符串,按24位对齐后输出对应Integer行数字...
  8. Java基础语法(一)
  9. java源代码连接jsp,java网络五子棋的源代码-JSP教程,Java技巧及代码
  10. 使用Python完美管理和调度你的多个任务
  11. Fragment 和 FragmentActivity的使用(二)
  12. python-opencv中的cv.CreateImage函数的参数问题
  13. Illustrator 教程,如何在 Illustrator 中创建颜色渐变?
  14. Java开发、网络爬虫、自然语言处理、数据挖掘简介
  15. android+即刻点赞,Android开发仿即刻点赞文字部分的自定义View
  16. 三维立体图的原理和欣赏方法
  17. GNU:gcc -v
  18. python词频统计GUI(thinter)
  19. 解决导出CSV文件乱码的问题
  20. 人无远虑必有近忧,90后的我如何姑娘熬成婆

热门文章

  1. 牛客 NC15108 道路建设
  2. vue加element 实现Excel导入表格
  3. 李宏毅课程-人类语言处理-文本样式转换(上)
  4. TreeSizeFree磁盘文件管理工具
  5. Java项目:医院分诊管理系统(java+SSM+jsp+HTML+JavaScript+mysql)
  6. 从0开始学c语言-29-数据储存练习、筑基期练习、两步翻转
  7. JCJC错别字检测-华为的选择
  8. 深度神经网络的matlab实现,深度神经网络代码matlab
  9. 趁着同事下午茶的时间,我们都学会了怎么批量给视频加滤镜
  10. pypi打包非代码文件