OSI模型之网络层
一、简介
网络层是OSI参考模型中的第三层,同时也是TCP/IP模型的第二层。它介于传输层和数据链路层之间,主要任务是把分组从源端传到目的端,为分组交换网上的不同主机提供通信服务。网络层传输单位是数据报。
协议结构图如下所示:

二、功能
路由选择与分组转发(最佳路径)
路由算法:静态路由算法(非自适应路由算法)、动态路由算法(自适应路由算法)
动态路由算法:全局性(OSPF)、分散性(RIP)
分层次的路由选择协议:内部网关协议IGP、外部网关协议EGP异构网络互联
拥塞控制
- 注意:若所有节点都来不及接收分组,而要丢弃大量分组的话,网络就处于拥塞状态。因此要采取一定措施,缓解这种拥塞。
解决方法:开环控制(静)、闭环控制(动)
三、IP协议
IP 协议是基于 IP 地址将数据包发送给目的主机,能够让互联网上任何两台主机进行通信。
IP地址的组成
IP地址由网络号(网段地址)和主机号(主机地址)两部分组成。

IP地址的分类
IP 地址分为四类,分别是 A类、 B类、 C类、 D类(还有一个保留的E类)。IP数据报格式

版本: 4 位版本号(version):指定 IP 协议的版本,对于 IPv4 来说,就是 4
首部长度: 4 位头部长度(header length):IP 头部的长度,单位是 4 比特,最小为 5(因为固定部分为 20 字节,所以最小就是 5),也就是说首部长度是 4×5=20 到 4×15=60 之间
区分服务: 8 位服务类型(Type Of Service):3 位优先权字段(已经弃用),4 位 TOS 字段,和 1 位保留字段(必须置为 0)。4 位TOS 分别表示:最小延时、 最大吞吐量、 最高可靠性、最小成本。 这四者相互冲突,只能选择一个。对于ssh/telnet 这样的应用程序,最小延时比较重要;对于 ftp 这样的程序,最大吞吐量比较重要。
总长度: 16 位总长度(total length):整个ip数据报的总长度为2^16-1=65535字节。不过由于链路层的MTU限制,超过1480字节后就会被分片(以太网帧MTU为1500字节,除去20 字节的IP报头)。
标识: 16 位标识(id):唯一的标识主机发送的报文。如果 IP 报文在数据链路层被分片了,那么每一个片里面的这个id 都是相同的。
标志:** 3 位标志字段:第一位保留。第二位置为 1 表示禁止分片,这时候如果报文长度超过 MTU,IP 模块就会丢弃报文。第三位表示“更多分片”,如果分片了的话,最后一个分片置为 1,其他是 0。类似于一个结束标记。
片偏移: 13 位分片偏移(framegament offset):是分片相对于原始 IP 报文开始处的偏移。其实就是在表示当前分片在原报文中处在哪个位置,实际偏移的字节数是这个值 * 8 得到的。因此,除了最后一个报文之外,其他报文的长度必须是 8 的整数倍(否则报文就不连续了)。
生存时间(TTL): 8 位生存时间(Time To Live, TTL):数据报到达目的地的最大报文跳数,一般是 64。每次经过一个路由,TTL就减1,一直减到 0 还没到达,那么就丢弃了。这个字段主要是用来防止出现路由循环
协议: 8 位协议:表示上层协议的类型

首部校验和: 16 位头部校验和:使用 CRC 进行校验,来鉴别头部是否损坏。也就是二进制的和!
源地址和目的地址: 32 位源地址和 32 位目标地址: 表示发送端和接收端
可选字段和填充: 用来支持排错、测量以及安全等措施
IP数据报分片
以太网帧中的数据长度规定最小 46 字节,最大 1500 字节,ARP 数据包的长度不够 46 字节,要在后面补填充位;最大值 1500 称为以太网的最大传输单元(MTU),不同的网络类型有不同的 MTU。

如果一个数据包从以太网路由到拨号链路上,数据包长度大于拨号链路的 MTU 了,则需要对数据包进行分片(fragmentation);不同的数据链路层标准的 MTU 是不同的。NAT(网络地址转换)
NAT不仅能解决IP地址不足的问题,而且还能够有效地避免来自网络外部的攻击,隐藏并保护网络内部的计算机。
宽带分享: 这是 NAT 主机的最大功能。
安全防护: NAT 之内的 PC 联机到 Internet 上面时,他所显示的 IP 是 NAT 主机的公共 IP,所以 Client 端的 PC 当然就具有一定程度的安全,外界在进行 portscan(端口扫描) 的时候,就侦测不到源Client 端的 PC 。CIDR 与 VLSM
解决 IP 地址浪费问题,除了使用子网掩码,还使用了 CIDR 和 VLSM 技术。
CIDR: 是主机号向网络号借位,目的是把几个网络汇总成一个大的网络,增加子网主机数量。
VLSM: 是网络号向主机号借位,目的是把一个标准的网络划分成几个子网,减少子网主机数量。路由选择协议(RIP/OSPF/BGP)
路由选择协议主要用于路由器之间实现路由表收敛的协议,当路由表稳定时,使用其对数据包进行转发。
RIP: 距离矢量路由协议,跳数(最大跳数为15跳,16跳不可达)
OSPF: 开放式最短路径优先,比RIP协议智能。
BGP: 边界网关协议ARP(地址解析协议)
ARP协议主要完成主机或路由器IP地址到MAC地址的映射(解决下一跳走哪的问题)

ARP协议的作用是什么: 二层寻址
ARP协议作用范围是什么: 同一个广播域
查看指令
arp -aARP应用

ARP协议4种典型情况
- 主机A发送给本网络上的主机B:用ARP找到主机B的硬件地址;
- 主机A发送另一网络上的主机B:用ARP找到本网络上一个路由器(网关)的硬件地址;
- 路由器发送给本网络的主机A:用ARP找到主机A的硬件地址;
- 路由器发给另一网络的主机B:用ARP找到本网络上的一个路由器的硬件地址。
RARP
反向地址转换协议,网络层协议,RARP与ARP工作方式相反。 RARP使只知道自己硬件地址的主机能够知道其IP地址。RARP发出要反向解释的物理地址并希望返回其IP地址,应答包括能够提供所需信息的RARP服务器发出的IP地址。网际控制报文协议ICMP
ICMP报文

ICMP的应用
- PING:测试两个主机之间的连通性,使用了ICMP会送请求和回答报文。
- Traceroute:跟踪一个分组从原点到终点的路径,使用了ICMP时间超时差错报告报文
网际组管理协议IGMP
IGMP协议是配置在路由器接口上的。用来周期性扫描本网段还有哪些计算机在绑定多播数据包,如果一个也没有的话,向上游路由器请求多播数据包就拒绝。一份也别过来了。IP组播地址
组播路由选择协议常使用的三种算法:
基于链路状态的路由选择
基于距离-向量的路由选择
协议无关的组播(稀疏/秘籍)ping
ping工具就是通过 ICMP 消息测试网络层连通性的。源主机发出 Echo request 消息,目的主机回应 Echo reply 消息,则两台主机间的网络层通信正常。也可以通过 ping命令来判断目标主机是否启用。

参考文献
OSI体系结构——网络层详解:https://blog.csdn.net/zhang175gl/article/details/105264596
OSI参考模型之网络层:https://blog.csdn.net/qq_46093534/article/details/116762359
IP地址基础知识:https://jinyi.blog.csdn.net/article/details/114484150
IP协议基本知识:https://www.jianshu.com/p/6135aa848e3d
IP 数据报格式及分片:https://ld246.com/article/1572322244697
OSI模型之网络层的更多相关文章
- CANopen学习——OSI模型复习
CanOpen协议实现了物理层和数据链路层,OSI模型是完整的7层. OSI模型网络七层包括物理层.数据链路层.网络层.传输层.会话层.表示层和应用层. 物理层:提供信息传输的物理连接通道,包括使用的 ...
- OSI模型七层模型结构
OSI模型,即开放式通信系统互联参考模型(Open System Interconnection,OSI/RM,Open Systems Interconnection Reference Model ...
- 网络基础---OSI 模型与TCP/IP
一.网络的演进: 1.简单的联接:1960's ------------ 1970's Host Network 六十至七十年代,网络的概念主要是主机架构的低速串行联接,提供应用程序执行.远程打 ...
- 网络七层OSI模型简介
0. 网络七层OSI模型(Open System Interconnection)总览: 1. 应用层 2. 表示层 :表示层的作用是使通信的应用程序能够解释交换数据的含义.这些服务包括数据压缩 ...
- 计算机协议、标准以及OSI模型的简单介绍
由概念启发学习,引导学习.本篇文章中包含了一些最基本的概念和底层知识.虽然零碎,但是这是基础. 一.协议和标准 协议指的是一组控制数据通信的规则.协议有三要素:语法(syntax),语义(semant ...
- 计算机网络原理和OSI模型与TCP模型
计算机网络原理和OSI模型与TCP模型 一.计算机网络的概述 1.计算机网络的定义 计算机网络是一组自治计算机的互连的集合 2.计算机网络的基本功能 a.资源共享 b.分布式处理与负载均衡 c.综合信 ...
- python 全栈开发,Day33(tcp协议和udp协议,互联网协议与osi模型,socket概念,套接字(socket)初使用)
先来回顾一下昨天的内容 网络编程开发架构 B/S C/S架构网卡 mac地址网段 ip地址 : 表示了一台电脑在网络中的位置 子网掩码 : ip和子网掩码按位与得到网段 网关ip : 内置在路由器中的 ...
- python(十二):网络编程之ISO/OSI模型
互联网(Internet)是依据操作系统,在计算机硬件的基础上建立起的通讯机制.它依赖于TCP/IP协议栈. 一.ISO/OSI模型 1.ISO七层模型与OSI五层模型 它们将计算机抽象成了具有层级关 ...
- 【转】挟天子以令诸侯博客关于TCP/IP模型与OSI模型的区别
挟天子以令诸侯 博客园 首页 新随笔 联系 订阅 管理 随笔 - 21 文章 - 0 评论 - 9 TCP/IP四层模型与OSI参考模型 TCP/IP四层模型: 1.链路层(数据链路层/网络接 ...
- 二、 OSI模型的实现TCP 、IP
主要名词定义: IPIP层接收由更低层(网络接口层例如以太网设备驱动程序)发来的数据包,并把该数据包发送到更高层---TCP或UDP层:相反,IP层也把从TCP或UDP层接收来的数据包传送到更低层.I ...
随机推荐
- 记录--用JS轻松实现一个录音、录像、录屏的工具库
这里给大家分享我在网上总结出来的一些知识,希望对大家有所帮助 前言 最近项目遇到一个要在网页上录音的需求,在一波搜索后,发现了 react-media-recorder 这个库.今天就跟大家一起研究一 ...
- rust结构体包含另一个结构体引用时,serde序列化问题
代码如下 use serde::{Deserialize, Serialize}; #[derive(Serialize, Deserialize)] struct Person { id: Stri ...
- 使用自签名证书在Docker中部署Asp.Net Core(Abp)项目
一 编写Dockerfile文件 FROM mcr.microsoft.com/dotnet/aspnet:6.0 COPY / /app WORKDIR /app EXPOSE 80 ENTRYPO ...
- 前端 Typescript 入门
前端 Typescript 入门 Ant design vue4.x 基于 vue3,示例默认是 TypeScript.比如 table 组件管理. vue3 官网介绍也使用了 TypeScript, ...
- 学习Python前要了解的tips
学习Python前要了解的tips 对后续的学习来说很重要,否则后续会出现一些奇奇怪怪的问题,而且很难找到解决方法.嘿嘿,就不要问我怎么知道的了吧,好多都是我踩过的坑 卸载电脑内软件 之前我一直用电脑 ...
- Ubuntu20.04 LTS国内源安装指定版本Docker/docker-compose
1.卸载旧版本Docker #卸载旧版本docker sudo apt-get remove docker docker-engine docker-ce docker.io #清空旧版docker占 ...
- #对勾函数#洛谷 5695 [NOI2001]反正切函数的应用
题目 问给定的每一个\(a\),是否存在正整数\(b,c\), 使得在满足$$\arctan(\frac{1}{a})=\arctan(\frac{1}{b})+\arctan(\frac{1}{c} ...
- #整体二分,树状数组#洛谷 3332 [ZJOI2013]K大数查询
题目 分析 虽然树套树也可以做,这里考虑整体二分, 对于二分的答案\(mid\),1操作实际上就是如果\(c>mid\)就给区间整体加1, 2操作即询问区间和是否超过\(k\),如果超过\(k\ ...
- #模拟#洛谷 5957 [POI2017]Flappy Bird
题目 分析 小鸟所在坐标的奇偶性一定相同, 考虑每次维护一个可行区间表示小鸟在当前列可以进入的纵坐标区间, 那么它有\(x_i-x_{i-1}\)的纵坐标最大改变差,然后根据奇偶性以及限制区间缩小范围 ...
- 深入剖析 Java 类属性与类方法的应用
Java 类属性 Java 类属性,也称为字段,是类中的变量.它们用于存储与类相关的数据. 创建类属性 在类定义中声明属性: public class Main { int x; // 属性 Stri ...