一、简介

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

协议结构图如下所示:

二、功能

  1. 路由选择与分组转发(最佳路径)

    路由算法:静态路由算法(非自适应路由算法)、动态路由算法(自适应路由算法)

    动态路由算法:全局性(OSPF)、分散性(RIP)

    分层次的路由选择协议:内部网关协议IGP、外部网关协议EGP

  2. 异构网络互联

  3. 拥塞控制

  • 注意:若所有节点都来不及接收分组,而要丢弃大量分组的话,网络就处于拥塞状态。因此要采取一定措施,缓解这种拥塞。

    解决方法:开环控制(静)、闭环控制(动)

三、IP协议

IP 协议是基于 IP 地址将数据包发送给目的主机,能够让互联网上任何两台主机进行通信。

  1. IP地址的组成

    IP地址由网络号(网段地址)和主机号(主机地址)两部分组成。

  2. IP地址的分类

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

  3. 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 位目标地址: 表示发送端和接收端

  • 可选字段和填充: 用来支持排错、测量以及安全等措施

  1. IP数据报分片

    以太网帧中的数据长度规定最小 46 字节,最大 1500 字节,ARP 数据包的长度不够 46 字节,要在后面补填充位;最大值 1500 称为以太网的最大传输单元(MTU),不同的网络类型有不同的 MTU。



    如果一个数据包从以太网路由到拨号链路上,数据包长度大于拨号链路的 MTU 了,则需要对数据包进行分片(fragmentation);不同的数据链路层标准的 MTU 是不同的。

  2. NAT(网络地址转换)

    NAT不仅能解决IP地址不足的问题,而且还能够有效地避免来自网络外部的攻击,隐藏并保护网络内部的计算机。

    宽带分享: 这是 NAT 主机的最大功能。

    安全防护: NAT 之内的 PC 联机到 Internet 上面时,他所显示的 IP 是 NAT 主机的公共 IP,所以 Client 端的 PC 当然就具有一定程度的安全,外界在进行 portscan(端口扫描) 的时候,就侦测不到源Client 端的 PC 。

  3. CIDR 与 VLSM

    解决 IP 地址浪费问题,除了使用子网掩码,还使用了 CIDR 和 VLSM 技术。

    CIDR: 是主机号向网络号借位,目的是把几个网络汇总成一个大的网络,增加子网主机数量。

    VLSM: 是网络号向主机号借位,目的是把一个标准的网络划分成几个子网,减少子网主机数量。

  4. 路由选择协议(RIP/OSPF/BGP)

    路由选择协议主要用于路由器之间实现路由表收敛的协议,当路由表稳定时,使用其对数据包进行转发。

    RIP: 距离矢量路由协议,跳数(最大跳数为15跳,16跳不可达)

    OSPF: 开放式最短路径优先,比RIP协议智能。

    BGP: 边界网关协议

  5. ARP(地址解析协议)

    ARP协议主要完成主机或路由器IP地址到MAC地址的映射(解决下一跳走哪的问题)

  • ARP协议的作用是什么: 二层寻址

  • ARP协议作用范围是什么: 同一个广播域

  • 查看指令

    arp -a
    
    
  • ARP应用

  • ARP协议4种典型情况

    • 主机A发送给本网络上的主机B:用ARP找到主机B的硬件地址;
    • 主机A发送另一网络上的主机B:用ARP找到本网络上一个路由器(网关)的硬件地址;
    • 路由器发送给本网络的主机A:用ARP找到主机A的硬件地址;
    • 路由器发给另一网络的主机B:用ARP找到本网络上的一个路由器的硬件地址。
  1. RARP

    反向地址转换协议,网络层协议,RARP与ARP工作方式相反。 RARP使只知道自己硬件地址的主机能够知道其IP地址。RARP发出要反向解释的物理地址并希望返回其IP地址,应答包括能够提供所需信息的RARP服务器发出的IP地址。

  2. 网际控制报文协议ICMP

  • ICMP报文

  • ICMP的应用

    • PING:测试两个主机之间的连通性,使用了ICMP会送请求和回答报文。
    • Traceroute:跟踪一个分组从原点到终点的路径,使用了ICMP时间超时差错报告报文
  1. 网际组管理协议IGMP

    IGMP协议是配置在路由器接口上的。用来周期性扫描本网段还有哪些计算机在绑定多播数据包,如果一个也没有的话,向上游路由器请求多播数据包就拒绝。一份也别过来了。

  2. IP组播地址

    组播路由选择协议常使用的三种算法:

    基于链路状态的路由选择

    基于距离-向量的路由选择

    协议无关的组播(稀疏/秘籍)

  3. 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模型之网络层的更多相关文章

  1. CANopen学习——OSI模型复习

    CanOpen协议实现了物理层和数据链路层,OSI模型是完整的7层. OSI模型网络七层包括物理层.数据链路层.网络层.传输层.会话层.表示层和应用层. 物理层:提供信息传输的物理连接通道,包括使用的 ...

  2. OSI模型七层模型结构

    OSI模型,即开放式通信系统互联参考模型(Open System Interconnection,OSI/RM,Open Systems Interconnection Reference Model ...

  3. 网络基础---OSI 模型与TCP/IP

    一.网络的演进: 1.简单的联接:1960's ------------ 1970's    Host Network 六十至七十年代,网络的概念主要是主机架构的低速串行联接,提供应用程序执行.远程打 ...

  4. 网络七层OSI模型简介

    0.  网络七层OSI模型(Open System Interconnection)总览: 1.  应用层 2.  表示层 :表示层的作用是使通信的应用程序能够解释交换数据的含义.这些服务包括数据压缩 ...

  5. 计算机协议、标准以及OSI模型的简单介绍

    由概念启发学习,引导学习.本篇文章中包含了一些最基本的概念和底层知识.虽然零碎,但是这是基础. 一.协议和标准 协议指的是一组控制数据通信的规则.协议有三要素:语法(syntax),语义(semant ...

  6. 计算机网络原理和OSI模型与TCP模型

    计算机网络原理和OSI模型与TCP模型 一.计算机网络的概述 1.计算机网络的定义 计算机网络是一组自治计算机的互连的集合 2.计算机网络的基本功能 a.资源共享 b.分布式处理与负载均衡 c.综合信 ...

  7. python 全栈开发,Day33(tcp协议和udp协议,互联网协议与osi模型,socket概念,套接字(socket)初使用)

    先来回顾一下昨天的内容 网络编程开发架构 B/S C/S架构网卡 mac地址网段 ip地址 : 表示了一台电脑在网络中的位置 子网掩码 : ip和子网掩码按位与得到网段 网关ip : 内置在路由器中的 ...

  8. python(十二):网络编程之ISO/OSI模型

    互联网(Internet)是依据操作系统,在计算机硬件的基础上建立起的通讯机制.它依赖于TCP/IP协议栈. 一.ISO/OSI模型 1.ISO七层模型与OSI五层模型 它们将计算机抽象成了具有层级关 ...

  9. 【转】挟天子以令诸侯博客关于TCP/IP模型与OSI模型的区别

    挟天子以令诸侯 博客园 首页 新随笔 联系 订阅 管理 随笔 - 21  文章 - 0  评论 - 9 TCP/IP四层模型与OSI参考模型   TCP/IP四层模型: 1.链路层(数据链路层/网络接 ...

  10. 二、 OSI模型的实现TCP 、IP

    主要名词定义: IPIP层接收由更低层(网络接口层例如以太网设备驱动程序)发来的数据包,并把该数据包发送到更高层---TCP或UDP层:相反,IP层也把从TCP或UDP层接收来的数据包传送到更低层.I ...

随机推荐

  1. 基于pytorch的图像训练识别

    一.准备数据集 分为测试集和训练集,文件如下排放 二.开始识别 数据集准备好后,即可导入到模型开始训练,运行下列代码 import time from torch.utils.tensorboard ...

  2. Java中一个逐渐被遗忘的强大功能,强到你难以置信!!

    大家好,我是冰河~~ 说起Java,简单好用,但是Java中很多牛逼的技术却逐渐被遗忘了~~ 在Java语言出现之前,很多系统都是使用C和C++开发的.Java出现之后,由于其面向对象的思想更加符合人 ...

  3. SpringBoot项目 填充Excel模板 导出 下载

    模板 下载后的效果 项目结构 pom <?xml version="1.0" encoding="UTF-8"?> <project xmln ...

  4. kingbaseES 优化之数据库瓶颈排查

    针对数据库的性能瓶颈排查方法分为两个层次1.实例级别性能问题排查 2.语句级别性能问题排查 实例级别 实例级别性能问题排查用来分析数据库实例整体是否存在性能瓶颈,然后根据排除出的疑似问题进行实例级别参 ...

  5. KinbaseES 优化之IO优化

    IO 资源作为目前服务器中最昂贵的资源之一,是目前绝大部分业务系统主要的瓶颈资源,原因就在于服务器相关的硬件资源中IO资源的性能提升是难度最大的.存储的发展步伐远低于内存和CPU的发展. 在数据库管理 ...

  6. Finereport11 类Excel筛选

    微信公众号:次世代数据技术 关注可了解更多的教程.问题或建议,请公众号留言或联系本人; 微信号:weibw162 本教程视频讲解可以关注本人B站账号进行观看:weibw162 一.需求描述 在使用FI ...

  7. 6 HTML图片标签

    6 图片标签 在HTML中,图像由标签定义的,它可以用来加载图片到html网页中显示.网页开发过程中,有三种图片格式被广泛应用到web里,分别是 jpg.png.gif. img标签的属性: /* s ...

  8. OpenHarmony社区运营报告(2023年8月)

      本月快讯 ● 2023年8月3日,OpenAtom OpenHarmony(以下简称"OpenHarmony")发布了Beta2版本.OpenHarmony 4.0 Beta2 ...

  9. C 语言结构体和枚举完全指南:成员访问、字符串操作、枚举基础

    访问结构体成员 要访问结构体的成员,请使用点语法 (.): // 创建名为 myStructure 的结构体 struct MyStructure { int myNum; char myLetter ...

  10. C# Winform Socket点对点通信

    前言 Socket的英文原义是"孔"或"插座",其实在网络编程中Socket就是这个意思,就像我们打电话,要首先知道对方的手机号一样,这个手机号就相当于一个So ...