【网络】- TCP/IP四层(五层)协议 - 网际层(网络层) - 网际协议IP

news2024/11/27 7:43:27

目录
一、概述
二、初步了解网际协议 IP
 👉2.1 与数据链路层的区别
 👉2.2 网际协议 IP 概览
 👉2.3 分层的意义
三、IP协议基础知识
 👉3.1 IP地址属于网络层地址
 👉3.2 路由控制
 👉3.3 IP分包与组包


在这里插入图片描述

一、概述

这篇文章主要介绍TCP/IP协议的网际层,上一篇文章介绍了数据链路层,数据链路层的主要作用是 在互连同一种数据链路的节点之间进行包传递。而网际层的主要作用是 实现终端节点(即使不在同一网络)的通信网际层 有时也称 网络层,但由于网际层的作用中包含了“实现一个网络和另一个网络的通信”,所以 网际层 可能是更好的表达。

网际层常用的的协议有

  • IP(Internet Protocol):网际协议;
  • ICMP(Internet Control Message Protocol):网际控制报文协议;
  • IGMP(Internet Group Management Protocol):网际组管理协议;
  • ARP(Address Resolution Protocol):地址解析协议;

其中 网际协议 IP 是TCP/IP体系中重要的协议之一,也是最重要的互联网标准之一,也是本文主要内容。
在这里插入图片描述

在这里插入图片描述

二、初步了解网际协议 IP

上一篇文章说的数据链路层提供直连两个设备之间的通信功能。与之相比, 作为网络层的IP则负责在没有直连的两个网络之间进行通信传输。那么这两者有什么区别?为什么要分两层呢?网际协议IP又是怎样工作的?

👉2.1 与数据链路层的区别

这一小节通过一个例子了解这两者的区别。

⚽️假设你有一个快递包裹从 广州市海珠区 寄到 广州市天河区,快递员收件之后,可能等包裹装上货车,直接就送到天河区的分拣中心了。

🏀假设你有另一个快递包裹从 广东省广州市 寄到 江苏省苏州市,快递员收件之后,包裹的移动路径可能是这样的:包裹先发往江苏苏州转运中心,再发往广州转运中心,最后才发往目的地。

⚽️例子中的第一个包裹从 广州市海珠区分拣中心广州市天河区分拣中心直达的路径。就好比同一网络(或同一链路)中的两台设备。只要知道源MAC地址 和 目的MAC地址就可以通信。这是 数据链路层 的通信方式。

🏀例子中的另一个包裹从 广东省广州市江苏省苏州市没有直达的路径,需要通过转运中心发出。就好比不在同一网络(或同一链路)中的两台设备。需要通过路由器转发到其他网络。这是 网络层IP 的通信方式。

从上面这个例子可以看出,两个设备在同一网络中使用的是基于MAC地址的数据链路层通信;如果不在同一网络,IP数据报无法直达,需要通过路由器转发,这就是网络层IP的通信。


👉2.2 网际协议 IP 概览

这个小节通过例子,大概地了解 IP 协议,了解IP数据报怎样发送的,对后面的学习有帮助。

🍁首先,我们来了解一下 虚拟互连网络 的概念,虚拟互连网络 也称 逻辑网络,意思是互连起来的各个物理网络的异构性(各个网络底层实现的硬件、结构、协议等差异性)是客观存在的,但是我们利用 IP协议 就可以使这些性能异构的网络在互联网层上看起来好像是一个统一的网络。这样使用IP协议的 虚拟互连网络 可以简称为IP网。

🍁当很多异构网络通过路由器连接起来,如果所有网络都使用相同的IP协议,那么网络层讨论问题就显得方便了。看下面这个例子。

🌰 如下图,源主机H1 要把一个 IP数据报 发给 目的主机H2
1️⃣ 主机H1 先查找自己路由表,看目的主机是否在本网络上,是的话,IP数据报不经任何路由器直接交付目的主机H2
2️⃣ 若不是,则将 IP数据报 发给与自己相连的路由器R1,R1查找路由表,把数据报发给R2进行 间接交付。这样一直转发下去,直到R5查找路由表,知道目的主机H2与自己连接在同一个网络上,不需要再转发,就把数据报直接交付目的主机H2
在这里插入图片描述

注意,图中 R4 到 R5 之间使用了卫星链路,R5 连接的是个无线局域网。只要网络层都使用IP协议,这些底层网络实现的差异性就可以被忽略。


👉2.3 分层的意义

❓ 数据链路层和网络层都是负责通信,那为什么分开两层?
🔑网络通信的功能本身就是很复杂的,分层设计可以简化各个的功能;分层的设计可以隐藏各个网络底层的实现细节,让各层只关注本层的功能;分层的设计可以让存在差异性的计算机或网络相连。

在这里插入图片描述

三、IP协议基础知识

网际协议 IP 大致分为三大作用模块, ①IP寻址、 ②路由(最终节点为止的转发) 、③IP分包与组包。 以下就这三个要点逐一介绍。

👉3.1 IP地址属于网络层地址

在计算机通信中, 为了识别通信对端, 必须要有一个类似于地址的识别码进行标识。前面文章讲过数据链路层的MAC地址正是标识同一链路的不同计算机的识别码。

作为网络层的IP, 也有这种地址信息。 一般叫做 IP地址。 IP地址用于在“连接到网络中的所有主机中识别出进行通信的目标地址”。 因此, 在TCP/IP通信中所有主机或路由器必须设定自己的IP地址(严格来说,要针对每块网卡至少配置一个或一个以上的IP地址。 ) 。

另外, 在网桥或交换集线器等物理层或数据链路层数据包转发设备中, 不需要设置IP地址。因为这些设备只负责将IP包
转化为0、 1比特流转发或对数据链路帧的数据部分进行转发, 而不需要应对IP协议。
在这里插入图片描述

👉3.2 路由控制

路由控制(Routing) 是指将分组数据发送到最终目标地址的功能。 即使网络非常复杂, 也可以通过路由控制确定到达目标地址的通路。一个IP数据报之所以能够成功地到达最终的目标地址, 全靠路由控制。

Hop译为中文叫“跳”。 它是指网络中的一个区间。 IP包正是在网络中一个个跳间被转发。 因此IP路由也叫做多跳路由。一跳的范围是指利用数据链路层以下分层的功能传输数据帧的一个区间,也就是主机 不经其他路由器 而能直接到达的相邻主机之间的一个区间。

为了将数据包发给目标主机, 所有主机都维护着一张 路由控制表(Routing Table) 。 该表记录IP数据在下一步应该发给哪个路由器.
在这里插入图片描述

👉3.3 IP分包与组包

前面介绍分层的意义时,提到可以隐藏网络底层的实现细节,连接存在差异性的网络。数据链路层就属于网络底层,IP数据报最终也是需要进行封装,形成数据链路层的数据帧,经数据链路层传输的。

MTU(Maximum Transmission Unit):最大传输单位。不同实现的数据链路层可能存在不同的 MTU,MTU的值在以太网中是1500字节, 在FDDI中是4352字节, 而ATM则为9180字节。

如果要将大于MTU的IP数据报传输的话,就需要进行 IP分片处理(IP Fragmentation),将较大的IP包分成多个较小的IP包。分片的包到了对端目标地址以后会再被组合起来传给上一层。这样的话就可以忽略存在差异的各个数据链路层。

总结:文章介绍TCP/IP五层(四层)协议的 网络层,大概了解到网际协议 IP 的发包过程,以及简单介绍了IP地址、路由控制、IP分包与组包。需要更详细了解IP协议,可以点击专栏查看后续文章或者看下面参考的三本书。


参考资料:
《计算机网络》第7版 谢希仁 编著
《计算机网络-自顶向下方法》第7版
《图解TCP/IP》第5版
在这里插入图片描述
如果文章有帮助的话,点赞👍、收藏⭐,支持一波,谢谢 😁😁😁

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/551355.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

solr快速上手:核心概念及solr-admin界面介绍(二)

0. 引言 上一节,我们简单介绍了solr并演示了单节点solr的安装流程,本章,我们继续讲解solr的核心概念 solr快速上手:solr简介及安装(一) 1. 核心概念 核心(索引/表) 在es中有索引…

【软件测试】5年测试老鸟总结,自动化测试成功实施,你应该知道的...

目录:导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结(尾部小惊喜) 前言 自动化测试 Pytho…

基于html+css的图展示82

准备项目 项目开发工具 Visual Studio Code 1.44.2 版本: 1.44.2 提交: ff915844119ce9485abfe8aa9076ec76b5300ddd 日期: 2020-04-16T16:36:23.138Z Electron: 7.1.11 Chrome: 78.0.3904.130 Node.js: 12.8.1 V8: 7.8.279.23-electron.0 OS: Windows_NT x64 10.0.19044 项目…

chatgpt赋能Python-pythonage

Pythonage - 一款优秀的Python SEO工具 无论是个人博客还是商业网站,SEO(搜索引擎优化)都是最重要的。Pythonage是一款优秀的Python SEO工具,可以帮助你优化你的网站并提高搜索引擎排名。在这篇文章中,我们将详细介绍…

ChatGPT 使用 拓展资料:开始构建你的优质Prompt

ChatGPT 使用 拓展资料:开始构建你的优质Prompt

【JavaEE】阻塞队列、定时器和线程池

目录 1、阻塞队列 1.1、概念 1.2、生产者消费者模型 1.3、阻塞队列的模拟实现 2、定时器 2.1、使用标准库中的定时器 2.2、模拟实现定时器 3、线程池 3.1、标准库中的线程池 3.1.1、ThreadPoolExecutor类的构造方法 3.1.2、Java标准库的4种拒绝策略【经典面试题】…

Canal内存队列的设计

1、背景 笔者的公司内部使用了开源的Canal数据库中间件来接受binlog数据,并基于此进行数据的订阅和同步到各种同构和异构的数据源上,本文将对Canal内部使用的store模块进行分析。 2、Store模块概览 Canal的store模块用于存储binlog中的每一个event&am…

MySQL- 多表查询(上)

♥️作者:小刘在C站 ♥️个人主页:小刘主页 ♥️每天分享云计算网络运维课堂笔记,努力不一定有收获,但一定会有收获加油!一起努力,共赴美好人生! ♥️树高千尺,落叶归根人生不易&…

安卓基础巩固(一):布局、组件、动画、Activity、Fragment

文章目录 布局LinearLayoutRelativeLayoutTableLayoutFrameLayoutConstraintLayoutListView基于ArrayAdapter自定义Adaper提升ListView的运行效率 RecyclerView基本属性使用案例布局(显示方式)监听事件利用View.onClickListener 和 onLongClickListener …

日志收集机制和日志处理流程规范

本博客地址:https://security.blog.csdn.net/article/details/130792958 一、日志收集与处理流程 云原生平台中对日志提取收集以及分析处理的流程与传统日志处理模式大致是一样的,包括收集、ETL、索引、存储、检索、关联、可视化、分析、报告这9个步骤…

Leetcode 二叉树详解

二叉树 树的概念及基本术语见树与二叉树的基础知识 定义:一棵二叉树是结点的一个有限集合,该集合或者为空,或者是由一个根结点加上两棵分别称为左子树和右子树的、互不相交的二叉树组成。 特点:每个结点至多只有两棵子树&#xff…

Vivado综合属性系列之八 DIRECT_ENABLE DIRECT_RESET

目录 一、前言 二、DIRECT_ENABLE、DIRECT_RESET ​ ​2.1 属性说明 ​ ​2.2 工程代码 ​ ​2.3 综合结果 一、前言 在Vivado 2019之前的版本中,对于设计中触发器的使能端口和复位端口是会自动接地,如果需要接设计端口,如果要直连…

GitHub Copilot开发者酷游网址训练营

目标读者 已使用且【酷游网K͜W͜98典neт娜娜宝宝提供】想发挥GitHub Copilot所有潜能的使用者想知道GitHub Copilot未来展望的使用者想了解GitHub Copilot能力的开发者 简介 最近Open AI带起的新世代,热潮汹涌,一堆AI工具蜂拥而至(如:chatGPT和Midjo…

近期关于Transformer结构有潜力的改进方法总结

目录 0 引言1 Gated Linear Unit (GLU)1.1 思路 2 Gated Attention Unit (GAU)2.1 思路2.2 实验结论2.3 混合注意力 3 FlashAttention3.1 标准Attention的实现3.2 FlashAttention的实现针对目标1针对目标2 4 总结5 参考资料 0 引言 标准Transformer在最新的实际大模型中并没有…

C++STL算法篇之集合算法

CSTL算法篇之集合算法 集合算法set_union(并集)set_difference(差集)set_intersection(交集)set_symmetric_difference(对称差集) 集合算法 当然最好还是要包含 functional algorithm 这2个头文件 集合算法有4个函数 1.set_union 交集 2.set_difference 差集 3.set_intersectio…

安卓开发多选列表和回显已选择内容

问题背景 安卓日常开发和学习过程中,经常会碰到需要多选列表和显示已选择内容的场景,本文将介绍安卓实现多选列表和回显已选择内容的一种方案。 问题分析 话不多说,先上效果: 思路分析: 一个纵向列表显示待选择内…

多线程基础(二)CAS无锁优化/自旋锁/乐观锁、ABA问题

CAS (Compare And Set)比较并替换 上篇文章的锁问题解决,可以使用更高效的方法,使用AtomXXX类,AtomXXX类本身方法都是原子性的,但不能保证多个方法连续调用是原于性的。 import java.util.ArrayList; imp…

chatgpt赋能Python-pythoncd

Python介绍 Python是一种流行的高级编程语言,由Guido van Rossum于1989年开发。Python的设计目标是简单易学、易于阅读和编写,同时也是一种高效的语言,能够处理各种不同的任务。Python在Web开发、数据分析、人工智能和科学计算等领域得到广泛…

chatgpt赋能Python-pythoncalendar

PythonCalendar:Python中优秀的日期处理库 作为一门快速发展的编程语言,Python提供了许多优秀的库和工具,用于方便程序员进行各种各样的操作和处理。其中,日期处理是一个必不可少的模块。PythonCalendar库就是Python中优秀的日期…

ChatGPT 的 AskYourPDF 插件所需链接如何获取?

一、背景 目前 ChatGPT 主要有两款 PDF 对话插件,一个是 AskYourPDF 一个是 ChatWithPDF(需 ChatGPT Plus),他们都可以实现给一个公共的PDF 链接,然后进行持续对话,对读论文,阅读 PDF 格式的文…