【计算机网络】第四章:网络层

2023-05-16

各个章节的知识点总结传送门如下,欢迎自取:
【计算机网络】第一章:计算机网络概述https://blog.csdn.net/iwanderu/article/details/103795715
【计算机网络】第二章:物理层 https://blog.csdn.net/iwanderu/article/details/103802457
【计算机网络】第三章:数据链路层 https://blog.csdn.net/iwanderu/article/details/103812828
【计算机网络】第四章:网络层 https://blog.csdn.net/iwanderu/article/details/103812967
【计算机网络】第五章:传输层 https://blog.csdn.net/iwanderu/article/details/103812974
【计算机网络】第六章:应用层 https://blog.csdn.net/iwanderu/article/details/103812980
【计算机网络】第七章:网络安全 https://blog.csdn.net/iwanderu/article/details/103812986
【计算机网络】第八章:Internet上的音频视https://blog.csdn.net/iwanderu/article/details/103813005
【计算机网络】第九章:无线网络https://blog.csdn.net/iwanderu/article/details/103813011

4.1 网络层提供的服务

4.1.1 网络层的作用

负责在不同的网络之间(基于数据包的IP地址)尽力转发数据包,不负责丢包重传和接收顺序。
有点像送快递,一个人往另一个地方寄快递,每个快递走不同的路线,可能后发的先到了,也可能丢件了。但是网络层不管这些,只管寄快递。
在这里插入图片描述
数据包在Internet中的传输,Internet既有局域网,又有广域网,既有光纤,又有铜线,无线,还有不同的协议,这是Internet复杂所在。
路由器是三层设备:能看到网络层的IP地址来选择路径。
在这里插入图片描述

4.1.2 互联网络与虚拟互联网络

(1)互联网互联的设备
中间设备又称为中间系统或中继(relay)系统。

->物理层中继系统:转发器(repeater),有点像集线器。
->数据链路层中继系统:网桥或桥接器(bridge)。
->网络层中继系统:路由器(router)。
->传输层/应用层中继系统:网关(gateway)器。
网关就是路由器接口的地址。一般是本网段第一个地址。

(2)网络需要解决的问题
在这里插入图片描述
(3)虚拟网络把复杂的Internet看成一个网络,化简问题。虚拟互联网络就是逻辑互联网络,他的意思就是互联起来的各种物理网络的异构性本来就是客观存在的, 但是我们利用IP协议就可以使这些性能各异的网络从用户看起来好像是一个统一的网络,而不用考虑具体的网络异构细节。
在这里插入图片描述

4.2 网络设备和OSI参考模型的关系

4.2.1举例,PC4向PC3传输数据

在这里插入图片描述
PC:计算机;Hub:集线器;Switch:交换机;Router:路由

发送端(封装):

(1)应用层准备要传输的数据;
(2)传输层把文件进行分段并编号;(数据段)
(3)网络层把传输层的每一个数据包增加原IP地址和目标IP地址;(数据包)
(4)数据链路层把每个数据加上MAC地址;两种情况:(数据帧)
使用自己的子网掩码,判断自己和目标地址分别在哪个网段,若在同一个网段(不过路由器),通过ARP协议广播的方式得到目标IP地址的MAC地址,然后就能封装出一个数据帧;如果子网掩码不是一个网段(用与运算),通过ARP协议广播的方式得到路由器(网关)的MAC地址,然后把数据通过交换机发送到路由器M2,因为M2和M3是点对点通信,没有别的主机,所以它们之间的MAC地址就是FF。
(5)物理层把数据帧变成数字信号(bit流)

接收端(解封):

(1)交换机Hub0接收bit流,能对数据进行存储转发。它根据数据帧的MAC地址,确定数据是从哪来的,要去哪。
(2)路由器M2获取交换机的数据包,识别其中的IP地址,根据路由表选择出口,它无法识别数据段内容。
(3)路由器M2到M3是点对点通信,遵守PPP协议。
(4)PC3收到bit流后,数据链路层发现MAC地址是自己的,去掉MAC地址给它的网络层,网络层去掉IP地址给传输层,传输层把数据给应用层,应用层把各个数据拼接起来。

4.2.2 路由器/交换机/集线器会不会中病毒

不会,路由器不能识别数据内容。它只负责信息的传递。但是病毒会影响网络设备。因为病毒会占用网络流量。

4.3 ARP协议

4.3.1 TCP/IP协议层次关系

在这里插入图片描述
IP协议:把数据包从一个网段转到另一个网段,就是用来选择路径用的。
ARP为IP服务,IP为ICMP/IGMP服务。

4.3.2 ARP协议的作用

将IP地址通过广播(本网段,不通过路由器),目标MAC地址是FF-FF-FF-FF-FF-FF,解析目标IP地址的MAC地址。
ARP是解决同一个局域网上的主机或路由器的IP地址和MAC地址的映射关系。如果所找的主机和原主机不在同一个局域网上,那么就要通过ARP找一个位于本局域网上的某个路由器的MAC地址,然后把分组发送给这个路由器,让这个路由器把分组转发给下一个网络。剩下的工作就由下一个网络来做。
从IP地址到MAC地址的解析是自动进行的,主机的用户对这种地址解析过程是不知情的。
只要主机或路由器要和本网络上的另一个已知IP地址的主机或路由器进行通信,ARP协议就会自动地将该IP地址解析为链路层所需要的MAC地址。

4.3.3 使用ARP的四种典型情况

(1)发送方是主机,要把IP数据报发送到本网络的另一个主机,此时用ARP找到目标主机的MAC地址;
(2)发送方是主机,要把IP数据报发送到另一个网络的另一个主机,此时用ARP找到本网络上一个路由器的MAC地址,剩下的工作由路由器进行;
(3)发送方是路由器,要把IP数据报发送到本网络的另一个主机,此时用ARP找到目标主机的MAC地址;
(4)发送方是路由器,要把IP数据报发送到另一个网络的另一个主机,此时用ARP找到本网络上一个路由器的MAC地址,剩下的工作由路由器进行;

4.3.4 逆地址解析协议RARP

只知道自己MAC地址就能获得其IP地址。

4.3.5 ARP欺骗/网络执法官/ARP防火墙-实验课

如果同一网段中有电脑中毒,可能会把中毒电脑的MAC地址传回去。

4.4 网际控制报文协议ICMP

4.4.1 ICMP

ICMP:在IP之上,用来测试网络层有没有故障。使用最多的命令是ping。
为了提高IP数据报交付成功的机会,在网络层使用了ICMP(Internet Control Message Protocol)。
ICMP允许主机或路由器报告差错情况和提供有关异常情况的报告;
ICMP不是高层协议,而是IP层协议;
ICMP报文件为IP层数据报的数据加上数据报的首部,组成IP数据报发送出去。

4.4.2 ping(Packet Internet Grope)命令诊断网络故障

PING是网络层命令。
TTL是数据报的生存时间每过一个路由器就会减1,作用是防止数据报在网络中循环。TTL默认初始值如下:
Linux 64
Windows 128
Unix 256
可以根据TTL值粗略判定对方是什么系统。

(1)PING,因特网包套所起,用于测试网络连接量的程序。ping发送一饿ICMP回声请求消息给目的地并报告是否收到所希望的ICMP回声应答。
(2)ping指端对端联通,通常用作可用性检测,但是某些病毒会强行大量远程执行ping命令抢占你的网络资源,导致系统网速变慢。严禁ping入侵作为大多数防火墙的一个基本功能提供给用户进行选择。
(3)如果打开IE浏览器访问网站失败,可以通过ping命令测试到Internet的网络连通,可以为你排除网络故障提供线索。

4.4.3 ping和pathping命令

QQ能登上,网页打不开是为什么? 网络层没有问题,域名解析有问题。
pathping 能跟踪数据包路径,发现出问题的位置。
Windows上跟踪数据包路径的命令:tracerert 10.7.1.53
路由器上跟踪数据包路径的命令:traceroute 12.0.0.3

4.5 IGMP协议和多播组播

点到点通信:
广播:目标MAC地址全是F,目标IP地址全是255,也就是全是1.全网广播不能跨越路由器。
组播=多播:分组广播。

4.5.1 访问多播视频节目

使用多播一般用于直播,网络会议,能够节省带宽。
IGMP协议的作用就是周期性扫描本网段内有没有主机在访问多播数据包。

4.6 IP数据包的结构

注意,ARP数据包不是这个格式。
首部:第一部分是固定长度,20字节,是所有IP数据包必须具有的。后一部分是可选字段,长度可变。
在这里插入图片描述
每一行32bit相当于1个字节,一共5行,共20字节。
在这里插入图片描述
(1)版本:用来表示TCP/IP是哪个版本,ipv4还是ipv6.
(2)区分服务:确定更高的传输优先级。
(3)总长度:确定数据部分长度。一共是16位,最多有2^16-1=65535字节。

注意,网络层,数据包最大65535字节;而数据链路层数据最大是1500字节,是不一样的。所以说,一旦超过数据链路层的最大要求时(网络层数据部分超过1480字节),数据包会分片。最大传输单元MTU。

在这里插入图片描述

数据包分片:把数据分割,分别添加IP地址,通过网络发给目标MAC地址。目标在通过网络层拼接。传送过程中可能会丢包,或者后发的先到(泪滴攻击就是利用目标机发送破坏的IP包(重叠的包货过大的包负荷)可以通过TCP/IP协议来瘫痪各种不同的操作系统)。所以需要编号。

(4)标识:如果出现数据包分片,那么标识用来确定哪些数据包是需要组合的。
(5)标志:确定该数据包是完整的还是分片中的一部分。占3位,只有前两位有用,标志字段最低位是MF(More Fragment),MF=1表示后面还有分片,MF=0表示最后一个分片。标志字段中间一位是DF(Don’t Fragment),只有DF=0才允许分片。
(6)片偏移:偏移等于当前字节在数据部分的第几个再除以8.(下图是一个举例)
在这里插入图片描述
(7)生存时间:就是TTL,time to live,每过一个路由器就减1。8位二进制。防止数据包在网络中循环。
(8)协议:用协议号标识数据部分是什么数据。
在这里插入图片描述

ICMP协议号:1;
IGMP协议号:2;
TCP协议号:6;
UDP协议号:17;域名解析
IPv6协议号:41;
OSPF协议号:89;

(9)首部检验和:16位,只检验数据报的首部,不检验数据部分。这里不是采用CRC检验码而是采用简单的计算方法。每经过一个路由器就会检验一次。
在这里插入图片描述
(10)源地址和目的地址都是IP地址,32位,只符合IPv4。IPv6是128位。
(11)可变部分:一般没用。

4.7 IP协议

(1)网络畅通的条件
沿途路由器必须知道下一跳给谁,数据包有去有回。
在这里插入图片描述

4.7.1 静态路由

需要管理员告诉路由器所有没有直连的网络下一跳给谁。
适合于小规模网络,不能自动调整路由。

4.7.2 动态路由

(1)RIP协议
周期性广播(30s)路由表,选择路径的依据是最少的跳数,最大跳数是15跳,所以一般不适合大网络。
(2)OSPF协议
根据带宽选择路径。

4.8 子网掩码

能够帮助路由器判断对应主机是否在同一个网段中。
在这里插入图片描述

4.9 ABCDE类网络地址

网络地址(网络号)唯一指定了每个网络。同一网络中的每台计算机都共享相同的网络地址,并用它作为自己IP地址的一部分。ABC对应的子网掩码分别是255.0.0.0和255.255.0.0和255.255.255.0
在这里插入图片描述
特殊的几个地址

127.0.0.1 本地换回地址
169.254.0.0
10.0.0.0,172.16.0.0–172.31.0.0,192.168.0.0–192.168.255.0 保留的私网地址

在这里插入图片描述

4.10 子网划分

在这里插入图片描述
在这里插入图片描述
注意,全为1是广播,所以63,127,191,254不选
在这里插入图片描述

参考文献
https://www.bilibili.com/video/av9876107?p=7

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

【计算机网络】第四章:网络层 的相关文章

  • lm3s811 学习笔记(二)【自己建工程】

    在lm3s811 学习笔记 一 里 xff0c 我讲述了如何使用别人的工程 xff0c 烧写程序到板子上 这一节我来讲讲自己是怎么创建工程 不过用的还是别人的程序 xff0c 毕竟自己对lm3d811驱动库还不熟悉 打开keil 4 1 在
  • 计算机文化基础

    计算机应用基础试题 一 填空题 每空1分 xff0c 共30分 1 计算计的软件系统通常分成 软件和 软件 2 字长是计算机 次能处理的 进制位数 3 1KB 61 B xff1b 1MB 61 KB 4 计算机中 xff0c 中央处理器C
  • 74ls系列中文资料功能介绍

    型号 功能 74ls00 2输入四与非门 74ls01 2输入四与非门 oc 74ls02 2输入四或非门 74ls03 2输入四与非门 oc 74ls04 六倒相器 74ls05 六倒相器 oc 74ls06 六高压输出反相缓冲器 驱动器
  • qt学习笔记(二)之布局管理器&信号与槽(简介)

    我们在上节的程序中加点小应用 主要是用到了布局管理器和信号与槽 在这里我也只是简单介绍一下 随着后续的深入研究 xff0c 接下来会具体介绍 一 布局管理器 include lt QtGui gt int main int argc cha
  • Android 开发之 Activity BroadcastReceiver Service和音乐播放

    Activity的生命周期 xff1a Activity有三个状态 xff1a 当它在屏幕前台时 位于当前任务堆栈的顶部 xff0c 它是激活或运行状态 它就是响应用户操作的Activity 当它失去焦点但仍然对用户可见时 xff0c 它处
  • JSON-lib框架,转换JSON、XML不再困难

    Json lib可以将Java对象转成json格式的字符串 xff0c 也可以将Java对象转换成xml格式的文档 xff0c 同样可以将json字符串转换成Java对象或是将xml字符串转换成Java对象 一 准备工作 1 首先要去官方下
  • xStream完美转换XML、JSON

    xStream框架 xStream可以轻易的将Java对象和xml文档相互转换 xff0c 而且可以修改某个特定的属性和节点名称 xff0c 而且也支持json的转换 xff1b 前面有介绍过json lib这个框架 xff0c 在线博文
  • C++程序员经常问的11个问题

    C 43 43 程序员经常问的11个问题 这篇文章收了好长时间 xff0c 但还是觉得贴出来 xff0c 作为收藏 xff0c 在网上这样的浮躁环境 xff0c 很少能认认真真地看这样长的文章 xff0c 有时间我也要把 Effective
  • C++监控USB设备

    这个程序前阵子帮一个朋友实现的 xff0c 之前从未用消息队列做过类似的事情 xff0c 做完后感觉其在线程同步 xff0c 通信发面很好用 xff0c 难怪COM也用这套机制 程序稍微修改便能用作一般性的处理 xff0c 目前实现的功能类
  • TCP通信

    客户端的代码 xff1a 1 include 34 utili h 34 2 3 int main 4 5 int sockCli 61 socket AF INET SOCK STREAM 0 6 if sockCli 61 61 1 7
  • 解决引用openssl静态库libcrypto.a和libssl.a出现undefined reference to错误的问题

    解决引用openssl静态库libcrypto a和libssl a出现undefined reference to错误的问题 最近在做使用openssl链接http和https的项目 xff0c 编译时出现以下问题 usr local o
  • ssh允许root登录

    vi etc ssh sshd config Authentication LoginGraceTime 120 PermitRootLogin without password 找到这里 xff0c 把它注释 PermitRootLogi
  • 大型网站技术架构

    大型网站技术架构 xff08 1 xff09 网站都是从小网站一步一步发展为大型网站的 xff0c 而这之中的挑战主要来自于庞大的用户 安全环境恶劣 高并发的访问和海量的数据 xff0c 任何简单的业务处理 xff0c 一旦需要处理数以 P
  • iOS线程池

    多线程开发是一件需要特别精心的事情 xff0c 即使是对有多年开发经验的工程师来说 为了能让初级开发工程师也能使用多线程 xff0c 同时还要简化复杂性 各种编程工具提供了各自的办法 对于iOS来说 xff0c 建议在尽可能的情况下避免直接
  • QT https post请求

    以VS开发为例 因为https访问需要用到SSL认证 xff0c 而QT默认是不支持SSL认证 xff0c 所以在使用之前必须先做一些准备工作 xff1a 需要安装OpenSSL库 xff1a 1 首先打开http slproweb com
  • 在windows下的QT编程中的_TCHAR与QString之间的转换

    由于在windows下的QT编程中 xff0c 如果涉及到使用微软的API xff0c 那么不可避免使用 TCHAR这些类型 xff0c 因此在网上查了一下 xff0c 其中一个老外的论坛有人给出了这个转换 xff0c 因此在这里做一下笔记
  • QT图片旋转

    目前发现有两种方法 xff0c 如下 xff1a 1 使用QPixmap的transformed函数旋转 xff0c 这个函数默认是以图片中心为旋转点 xff0c 不能随意设置旋转点 xff0c 使用如下 xff1a QMatrix lef
  • signtool对EXE进行签名

    数字证书 xff0c 真是个神奇的东西 xff0c 可以保证软件不被修改 xff0c 可以表明文件的发布日期 xff0c 最重要的 xff0c 可以很大程度的减少杀毒软件的误报 xff0c 当然 xff0c 这就要使用可信任的机构颁发的证书
  • Linux C语言实现UDP的发送和接收

    发送端实现 xff1a U1 c include lt stdio h gt include lt stdlib h gt include lt string h gt include lt sys socket h gt include
  • C语言 特殊的数字

    问题描述 153是一个非常特殊的数 xff0c 它等于它的每位数字的立方和 xff0c 即153 61 111 43 555 43 333 编程求所有满足这种条件的三位十进制数 span class token macro property

随机推荐

  • STL简单的介绍

    我们要知道C 43 43 的含义 xff1a C语言 43 类 43 模板 xff08 STL就是典型的代表 xff09 STL是Standard Template Library的简称 xff0c 中文名是标准模库 从根本上说 xff0c
  • C语言 查找整数

    问题描述 给出一个包含n个整数的数列 xff0c 问整数a在数列中的第一次出现是第几个 输入格式 第一行包含一个整数n 第二行包含n个非负整数 xff0c 为给定的数列 xff0c 数列中的每个数都不大于10000 第三行包含一个整数a x
  • C语言 字母图形

    问题描述 利用字母可以组成一些美丽的图形 xff0c 下面给出了一个例子 xff1a ABCDEFG BABCDEF CBABCDE DCBABCD EDCBABC 这是一个5行7列的图形 xff0c 请找出这个图形的规律 xff0c 并输
  • C++ 无参构造函数

    设计表示平面坐标位置的点类 xff0c 可以修改和获取点的x y坐标值 xff0c 设置构造函数对点的数据成员进行初始化 xff0c 并且能够用数组保存一系列的点 span class token macro property span c
  • C语言 矩阵乘法

    问题描述 给定一个N阶矩阵A xff0c 输出A的M次幂 xff08 M是非负整数 xff09 例如 xff1a A 61 1 2 3 4 A的2次幂 7 10 15 22 输入格式 第一行是一个正整数N M xff08 1 lt 61 N
  • C语言 分解质因数

    问题描述 求出区间 a b 中所有整数的质因数分解 输入格式 输入两个整数a xff0c b 输出格式 每行输出一个数的分解 xff0c 形如k 61 a1a2a3 a1 lt 61 a2 lt 61 a3 xff0c k也是从小到大的 具
  • 编译原理 赋值语句翻译成四元式

    赋值语句及算数表达式的翻译 将赋值语句翻译成四元式的语义描述 1 S gt id 61 A 2 A gt id 3 A gt int 4 A gt real 5 A gt A1 43 A2 6 A gt A1A2 7 A gt A1 8 A
  • 关联容器知识点通关

    关联容器 1 关联容器与顺序容器的区分2 关联容器的数据2 1 数据存储2 1 1 pair类型2 1 2 关联容器的类型别名2 1 3 关联容器迭代器 2 2 关联容器的初始化 3 关联容器的增删改查3 1 关联容器增加元素3 2 删除关
  • django JWT 验证401错误

    因为前端请求时携带了Authorization请求头 xff08 主要是JWT xff09 xff0c 而如果用户未登录 xff0c 此请求头的JWT无意义 xff08 没有值 xff09 xff0c 为了防止REST framework框
  • “轻松搞定 CMake”系列之 find_package 用法详解

    一 find packakge 命令基本介绍 在我们实际开发过程中 xff0c 经常不可避免会使用到第三方开源库 xff0c 这些开源库可能是通过 apt get install 命令自动安装到系统目录中 xff0c 也可能是由我们自己下载
  • STL中的string类

    一 string是什么 xff1f string类是专门的字符串操作的一个类 xff0c 非常的强大 二 string与char 的区别 xff1a char 呢就是指向字符数组地址的指针 xff0c 然后我们提供了一个string h x
  • Cpp 对象模型探索 / 父类和子类调用构造函数和析构函数的顺序

    2018 03 19 创建人 xff1a Ruo Xiao 邮箱 xff1a xclsoftware 64 163 com 一 建立对象过程 father son 栗子 xff1a span class token keyword clas
  • 串口通信 / 奇校验、偶校验、0 校验和 1 校验

    时间 xff1a 2019 01 28 创建人 xff1a Ruo Xiao 邮箱 xff1a xclsoftware 64 163 com 一 目的 对数据传输的正确与否进行校验 二 方法 奇校验 xff1a 让主体数据加上校验位中的 1
  • 堆栈向下增长和向上增长的理解

    时间 xff1a 2019 01 31 创建人 xff1a Ruo Xiao 邮箱 xff1a xclsoftware 64 163 com 假设堆栈为数组Taskstk unsigned int Taskstk 255 堆栈压数从栈顶压向
  • C++--名字修饰

    名字修饰 在C C 43 43 中 xff0c 一个程序要运行起来 xff0c 需要经历以下几个阶段 xff1a 预处理 编译 汇编 链接 名字修饰 xff08 Name Mangling xff09 是一种在编译过程中 xff0c 将函数
  • 【ROS入门】解决Could not find a package configuration file provided by “nmea_msgs“问题

    笔者Linux虚拟机系统为Ubuntu20 04 xff0c 安装ROS我参考的是https blog csdn net weixin 45168199 article details 106910446 安装完成后创建ROS工作空间 mk
  • C#中的屏蔽、覆写和抽象

    屏蔽基类成员 虽然派生类不能删除其继承的任何成员 xff0c 但可以声明一个与基类成员签名相同的成员来屏蔽之 xff08 注意方法的签名由名称和参数列表组成 xff0c 不包括返回值类型 xff09 要让编译器知道你在故意屏蔽继承的成员 x
  • 【计算机网络】第一章:计算机网络概述

    各个章节的知识点总结传送门如下 xff0c 欢迎自取 xff1a 计算机网络 第一章 xff1a 计算机网络概述描述 计算机网络 第二章 xff1a 物理层 计算机网络 第三章 xff1a 数据链路层 计算机网络 第四章 xff1a 网络层
  • 【计算机网络】第二章:物理层

    各个章节的知识点总结传送门如下 xff0c 欢迎自取 xff1a 计算机网络 第一章 xff1a 计算机网络概述https blog csdn net iwanderu article details 103795715 计算机网络 第二章
  • 【计算机网络】第四章:网络层

    各个章节的知识点总结传送门如下 xff0c 欢迎自取 xff1a 计算机网络 第一章 xff1a 计算机网络概述https blog csdn net iwanderu article details 103795715 计算机网络 第二章