【总结】TCP/IP四层模型的理解

news2024/12/28 2:44:37

在开始之前放上一张本文章的核心图片,要一直记住图中的内容!!! 

一、概念理解

        首先我们知道分析网络的时候有两种模型,一种是OSI七层模型,另一种就是TCP/IP四层模型。一般来说,我们常用的就是TCP/IP四层模型,很少会使用OSI七层模型。而上面的图片中是五层是因为上面四层是TCP/IP模型,最下面的物理层只是方便我们理解概念用的,基本上也不会涉及,所以实际上的核心还是上面四层的TCP/IP模型。

        一般来说我们常见的就是以下五种词汇:

1、IP (Internet Protocol)

         IP(互联网协议)是用于在网络中传输数据包的一组规则或标准。它定义了如何将数据从一个设备发送到另一个设备。有两种主要版本的IP协议:IPv4 和 IPv6。IPv4 使用 32 位地址,而 IPv6 使用 128 位地址,以应对地址空间不足的问题。

2、MAC (Media Access Control) 地址

        MAC 地址是一个硬件地址,用于标识网络上的物理设备。每个网络接口都有一个唯一的 MAC 地址,通常由 6 组两位十六进制数表示。MAC 地址用于局域网 (LAN) 中的数据链路层,例如以太网。

3、ARP (Address Resolution Protocol)

        ARP 是一种用于将网络层地址(如 IP 地址)映射到数据链路层地址(如 MAC 地址)的协议。当一个设备想要向另一个设备发送数据但只知道其 IP 地址时,它会使用 ARP 发现该设备的 MAC 地址。

4、交换机 (Switch)

        交换机是一种网络设备,用于连接多个设备形成局域网。它基于 MAC 地址来转发数据帧。现代交换机能够智能地学习连接到它的设备的 MAC 地址,并根据这些信息决定如何转发数据。这样可以提高网络效率,减少广播流量。

5、路由器 (Router)

        路由器是一种网络设备,用于在不同网络之间转发数据包。它工作在网络层,通常使用 IP 地址进行路由决策。路由器可以根据不同的网络协议和子网掩码确定数据包的最佳路径,并将其发送到目的地。

二、从链路层开始分析(同一网段内)

2.1 通信过程(直连)

        在链路层的时候,我们只知道有物理地址(即 MAC 地址),且每台设备的物理地址是唯一的。这意味着在同一个局域网内,不会有两台设备拥有相同的 MAC 地址。

        首先在通信开始之前,我们知道是有一个人先发消息,一个人接收消息。其中这个发送消息的人的地址我们称为源MAC地址,而接收消息的人我们称为目的MAC地址。此时我们通过一根网线将两台电脑设备连接起来,这种方式我们称为直连。假设自己的IP是192.168.0.30,而隔壁老王的IP是192.168.0.100。当我们构建起连接的时候我们可以使用ping去检测我们是否正常连接。

现在我们已知的信息:自己的MAC地址和IP地址,老王的IP地址。

自己隔壁老王
连接方式:直连
发送消息接收消息
源MAC地址目的MAC地址
192.168.0.30192.168.0.100

        现在我们要怎么知道老王的MAC地址呢?

        在这里就要引出ARP协议,通过这个协议我们就可以获得其他设备的MAC地址。那么他又是怎么实现的呢?其实原理就是我们用ARP协议去发了一个ARP请求的广播,所有设备都会收到我们的信息,而只有目标的IP会回复我们的信息,这时候我们就找到了老王的MAC地址。具体实现如下。

我们先构建一个ARP请求帧,其中包含了:

  • 源MAC地址:我们自己的MAC地址。
  • 目的MAC地址:通常使用FF:FF:FF:FF:FF:FF(全1广播地址),这样网络中的所有设备都会接收到这个帧。
  • 请求信息:表明你在寻找哪个IP地址对应的MAC地址。

         这个ARP请求帧会被作为一个广播帧发送到整个局域网内。所有的设备都会接收到这个帧,但只有拥有对应IP地址的设备会处理它。拥有对应IP地址的设备会查看ARP请求中的信息,确认这是在询问它的MAC地址。该设备会构建一个ARP响应帧,其中包含:

  • 源MAC地址:该设备的MAC地址。
  • 目的MAC地址:发起请求的设备的MAC地址。
  • 响应信息:表明它就是请求中提到的IP地址的所有者,并提供了它的MAC地址。

        之后老王的电脑就会发出这个ARP响应帧。 且ARP响应帧通常是以单播形式发送给发起请求的设备,而不是广播。我们接收到老王的ARP响应后,就可以将目标IP地址与MAC地址关联起来,存入本地的ARP缓存表中。之后,当需要与老王的IP地址通信时,可以直接使用对应的MAC地址构建链路层帧。

2.2 查询ARP缓存表

详细使用见:

[Windows CMD] 查看 IP和物理地址 arp-CSDN博客icon-default.png?t=N7T8https://blog.csdn.net/m0_52980547/article/details/140434332?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522172310387816800188590618%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fblog.%2522%257D&request_id=172310387816800188590618&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~blog~first_rank_ecpm_v1~rank_v31_ecpm-1-140434332-null-null.nonecase&utm_term=arp&spm=1018.2226.3001.4450        ARP缓存表是操作系统用来存储IP地址与MAC地址对应关系的地方,还可以查看记录的MAC地址有效期。在Windows系统中打开命令提示符(cmd.exe),输入 arp -a 命令来显示ARP缓存表的内容。在Linux系统中,打开终端,输入 arp -a 或 arp -n 命令来查看ARP缓存表,-a 显示所有条目,包括动态和静态条目;-n 则只显示动态学习的条目。

        ARP缓存表中的MAC地址不是永久有效的,它们有一个有效期。操作系统通常会为ARP缓存表中的每个条目设置一个老化时间,默认通常是几分钟(例如10分钟或20分钟)。如果在这段时间内没有收到相关的ARP请求或响应,该条目就会从缓存中删除。如果在这段时间内仍然与该IP地址通信,每次通信都会刷新该条目的有效期,这样可以确保缓存中的信息保持最新。你也可以手动清除ARP缓存表中的条目。在Windows中,你可以使用 arp -d 命令来删除指定的条目或全部条目。在Linux和Mac OS X中,同样可以使用 arp -d 命令来删除缓存条目。

示例命令:

  • 在Windows中清除ARP缓存表中的所有条目:arp -d *
  • 在Linux和Mac OS X中清除ARP缓存表中的所有条目:arp -d

2.3 同一网段内

为什么同一网段内的设备可以互相通信:

1、相同的子网掩码:

  • 同一网段内的所有设备都使用相同的子网掩码。子网掩码定义了IP地址中哪些部分代表网络部分,哪些部分代表主机部分。
  • 例如,对于一个C类网络(如192.168.1.0),子网掩码通常是255.255.255.0,这意味着前三个八位组表示网络地址,最后一个八位组表示主机地址。

2、直接通信:

        在同一网段内的设备可以直接通过链路层(数据链路层)相互通信。这意味着它们可以通过以太网或其他物理层技术直接发送和接收数据帧,不需要经过路由器或其他网络设备。

3、广播和多播:

        同一网段内的设备可以利用广播或多播功能发送数据给所有设备或一组设备,而不必知道每个设备的具体IP地址。例如,ARP请求就是一个典型的广播消息,用于获取特定IP地址对应的MAC地址。

4、自动寻址:

        设备通常会通过DHCP(Dynamic Host Configuration Protocol)从网络中的DHCP服务器自动获取IP地址和子网掩码。这样确保了同一网段内的设备具有相同或兼容的子网掩码。

5、MAC地址解析:

        当一台设备需要与另一台设备通信时,它首先会查找ARP缓存表中是否有该IP地址对应的MAC地址。如果没有,它会发送一个ARP请求广播,询问该IP地址对应的MAC地址。一旦获取到了MAC地址,就可以直接通过链路层进行通信了。

6、路由无关:

        同一网段内的设备之间的通信不需要考虑路由表,因为它们位于同一广播域内。这意味着数据包不需要经过路由器,而是直接在局域网上广播或直接发送到目的MAC地址。

         总结:同一网段内的设备之所以可以互相通信,是因为它们共享相同的网络配置,包括子网掩码和广播域。这种配置使得设备可以直接通过链路层进行通信,无需经过路由器或其他网络设备。

 2.4 通信过程(交换机)

        刚刚我们两台设备之间是通过一根网线直连的方式进行连接,假设这时候我们多了一个朋友老李同志要一起通信,我们就要使用交换机进行连接。比如我刚和老王通信,老李看到也来了,我想一会和老王通信,一会和老李通信,我们的电脑就要通过一根网线接入同一个交换机的不同端口来进行通信。我们想知道交换机是怎么工作的呢?要怎么实现我一会要和老王对话,一会又要和老李对话,这样反复的通信?现在我们先手动配置IP地址,确保每台设备的IP地址都在同一网段内,且不冲突,配置好后的ip如下面表格所示。

自己隔壁老王老李同志
连接方式:交换机
发送消息接收消息接收消息
源MAC地址目的MAC地址_1目的MAC地址_2
192.168.0.30192.168.0.100192.168.0.20

        那么交换机的工作原理是什么呢? 

         交换机是一种网络设备,它工作在网络的第一层(数据链路层),主要用于在局域网(LAN)中高效地转发数据帧。交换机的工作原理涉及到数据帧的接收、学习、转发和过滤等多个方面。数据帧的内容:

1、帧头:

  • 源MAC地址:发送数据帧的设备的MAC地址。
  • 目的MAC地址:接收数据帧的设备的MAC地址。
  • 类型字段:指示高层协议类型,如IPv4或IPv6。
  • 其他控制信息:可能还包括错误检测码(如CRC校验码)。

2、数据:

  • 包含来自更高层协议(如IP协议)的数据。

3、帧尾:

  • 通常包含结束标志或额外的错误检测码。

        当我们把电脑接入交换机的一个端口的时候,电脑并不会立即发送数据帧给交换机。只有当我们尝试与其他设备通信的时候才开始发送数据帧。并且这个数据帧可能是一个广播帧(例如ARP请求),也可能是一个直接发往特定设备的数据帧。

        当交换机接收到一个数据帧时,它会读取帧头中的源MAC地址,并记录该MAC地址与交换机端口之间的对应关系。其中这个对应关系表称为MAC地址表(也称作转发表或学习表),记录每个MAC地址与其所连接的端口之间的对应关系。这样,交换机就知道了哪个MAC地址连接到了哪个端口。

        接着交换机会检查数据帧的目的MAC地址,如果目的MAC地址已经存在于MAC地址表中,交换机就会将数据帧直接转发到对应的端口。如果目的MAC地址不存在于MAC地址表中,交换机会将数据帧广播到所有端口(除了接收到该数据帧的端口)。当目的设备接收到数据帧后,它会发送一个响应帧,其中包含其MAC地址。交换机会学习这个MAC地址,并更新MAC地址表。

         交换机通过学习MAC地址表这种方式来减少不必要的广播流量,还可以避免广播风暴的发生,提高网络效率。不仅如此,交换机还可以检查数据帧的完整性,例如通过CRC校验来确保数据帧在传输过程中没有损坏,如果检测到错误,交换机会丢弃该数据帧。

        并且为了防止MAC地址表过时,交换机会对MAC地址条目设置一个老化时间(通常是几分钟)。如果在这个时间内没有收到某个MAC地址的任何通信,该条目就会从MAC地址表中删除,这样可以确保MAC地址表中的信息是最新的。

        根据上面交换机的原理,现在我们来和老王与老李进行通信。

        当我把电脑接入交换机的一个端口时(此时交换机尚未连接其他设备),我的电脑不会立即发送数据帧给交换机。然后等老王也将他的电脑接入了交换机的另一个端口,老王的电脑也不会立即发送数据帧给交换机。

        当我尝试与老王的电脑通信时,我的电脑会构建一个数据帧,其中包括目的MAC地址(老王的电脑的MAC地址)。我的电脑发出数据帧后,交换机会学习源MAC地址(我的电脑),并将其与连接的端口关联起来。由于交换机尚未学习到老王的MAC地址,所以我的电脑会发送一个广播帧(例如ARP请求)来获取老王的MAC地址。老王的电脑接收到广播帧后,会回应一个带有自己MAC地址的帧(例如ARP响应)。这样交换机就会学习老王的电脑的MAC地址,并将其与接收到该数据帧的端口关联起来。

       一旦交换机学习了老王的MAC地址,它就可以直接将数据帧转发到老王连接的端口。类似地,当你需要与老李通信时,交换机也会通过同样的方式学习和转发数据帧。

        这样我们就可以轻松地在与老王和老李之间切换通信。当我想要与老王通信时,交换机会将数据帧转发到老王的端口;当我想要与老李通信时,交换机会将数据帧转发到老李的端口。

三、从网络层开始分析(不同网段内)

       

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

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

相关文章

医疗工厂网络同步时钟,子母钟系统结构,可使用十年以上

在医疗和工业领域,准确的时间信息对于确保各项工作的高效运行至关重要。网络同步时钟系统因其高精度、易维护等特点,成为现代医疗工厂不可或缺的时间管理工具。本文将详细介绍网络同步时钟系统的优点及其技术细节。 一、网络同步时钟优点 网络同步时钟系…

工业设计用什么CAD软件?SolidWorks 成为您创意实现的得力助手

随着科技的发展,工业设计已经进入了数字化时代。对于设计师来说,选择一款高效、功能全面的设计软件至关重要。在市场上众多的CAD(计算机辅助设计)软件中,SolidWorks因其出色的性能和广泛的适用性而备受青睐。本文将介绍…

各地区搭子群扩列群h5公众号小程序app开源版开发

各地区搭子群扩列群多开h5公众号小程序app开源版开发 多端应用,源码开源支持自主二开;域名授权。 搭子群和扩列群通常是用来帮助人们找到志同道合的朋友或活动伙伴的社交平台。这些平台可以采用H5页面、微信公众号、小程序或独立的应用程序等形式。下面…

winform 设置TabControl中tab标签的宽度

问题: tabpage标签太挤了,标签间的间隔也不明显。解决方法: 将TabControl的SizeMode属性设为Fixed设置ItemSize的大小(width) 调整后效果:

暗区突围端游下载不了/下载失败/下载太慢的有效解决办法分享

暗区突围端游的第一次测试已经过去了一段时间了,毕竟是第一次测试,当时还是有很多问题的,比如说很多玩家根本拿不到测试资格,还有些是因为游戏优化太差,卡的就玩不了。现在这些问题通通不用担心了,端游在13…

和鲸科技助力 Datathon 会前培训成功举行,“理-工-医-信”跨学科合作,以数据驱动医疗实践

2024 年 8 月 3 日,由解放军总医院和中国生物医学工程学会临床医学工程分会共同举办的第五届“解放军总医院—麻省理工学院医疗大数据学术交流及 Datathon 活动”会前培训班于线上圆满收官,和鲸科技为会前培训班提供全程技术平台支持,该培训班…

掌握 4个SD 卡数据恢复技巧,避免数据丢失!

SD 卡作为一种常见的存储设备,里面通常存放着完美的照片、视频、文档等重要数据。但是,在生活中SD 卡数据丢失的情况时有发生,非常令人崩溃。那今天咱们就来讨论一下4个有效恢复SD卡数据的方法! 1、福昕estore 直通车&#xff1a…

软硬链接和动静态库

为什么一定要提供路径呢? 因为要根据路径找到文件 一切与路径相关的问题都是方便用户去访问文件 软硬链接 给我康康 软链接是这样的: ln -s file_target1.txt file_soft.link 软链接有独特的innode 这是硬链接: ln file_target2.txt …

免费【2024】springboot 高校毕业生离校管理系统的设计与实现

博主介绍:✌CSDN新星计划导师、Java领域优质创作者、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和学生毕业项目实战,高校老师/讲师/同行前辈交流✌ 技术范围:SpringBoot、Vue、SSM、HTML、Jsp、PHP、Nodejs、Python、爬虫、数据可视化…

BIMRender渲染器插件上线 |一款免费的模型实时渲染插件

说到模型渲染和渲染软件 我猜你肯定遇到过下面这些问题: ● 投入产出比低:项目汇报需要高质量的渲染效果图,又不希望在低使用频率的渲染软件投入时间和高昂的成本,专门安装它们似乎并不划算; ● 操作复杂:…

湖北建筑特种作业人员“秘籍”:取证、延期、注销全攻略

湖北建筑特种作业人员“秘籍”:取证、延期、注销全攻略 湖北建筑施工特种作业人员 特种作业人员考核取证、继续延期、变更注销等全部事项都已下放到各市州主管部门。也就是说在湖北省报考建筑电工、焊工、架子工、信号工、起重机械司机、施工升降机等可以就近选择。…

2024高中生必备物品有哪些?学生党速看这五件好物

新的一年开学季又来临了,许多同学还在犹豫要为开学准备哪些物品呢?今天小编整理了五件高中生必备物品,学生党请收下这份清单,从学习用品到生活用品、从智能产品到健康防护,这些小物都在学习生活中发挥着重要作用&#…

Java程序设计:Java 网络聊天室服务器端

网络编程相关内容见上一篇:Java程序设计:Java网络编程实验 目录 1 实验名称 2 实验目的 3 实验源代码 4 实验运行结果图 5 总结 1 实验名称 Java 网络聊天室服务器端 2 实验目的 继续熟练掌握在eclipse中调试代码 掌握Java面向对象思想掌握多线程在该项目中的…

数据加密-AES数据加密及C#实现

引言 AES(Advanced Encryption Standard)是一种广泛使用的对称密钥加密算法,由美国国家标准与技术研究院(NIST)于2001年发布。AES以其高效、安全的特点,在数据加密领域占据了重要地位。 using System; us…

XGP怎么免费玩暗黑4 暗黑4XGP免费白嫖教程

暗黑四新赛季已经开启了,全新赛季一定能给你带来完全不一样的感受,在新赛季中,恶魔入侵,炼狱大军来袭,玩家在完成世界阶级三任务线之后,就可以参与炼狱大军的战斗,怪物会一波一波的形式攻击&…

html+css+js网页制作 船票网1个订单页面带js 有增加和删除功能

htmlcssjs网页制作 船票网1个订单页面带js 有增加和删除功能 网页作品代码简单,可使用任意HTML编辑软件(如:Dreamweaver、HBuilder、Vscode 、Sublime 、Webstorm、Text 、Notepad 等任意html编辑软件进行运行及修改编辑等操作)。…

一个在国内好用且免费的AI网站,可以让自己的学习或者工作方面,事半功倍!它就是codemoss_能用AI

一、开头放重点 🔥世界主流大模型集聚地 免魔法 白玩GPT4 AI智能工作流 Codemoss_能用AI 传送门:https://www.nyai.chat/chat?invitenyai_1141439 还是那句话,一个好用的AI工具,可以在学习或者工作上,事半功倍。…

如何建立强大的谷歌外链网络?

​要建立一个强大的谷歌外链网络,要理清楚一个观念,质量和数量同等重要,没有垃圾的,质量低下的外链,只有有效跟无效的外链,在弄清楚这一点的前提下,你要知道,一个网站,尤…

在Fiddler中的Composer使用post方法发送非法数据

1、如图所示,先通过fiddler抓取接口 2、抓取接口后复制url 3、在fillder中切换到Composer界面,复制的url粘贴到接口输入框中,并将请求类型改为POST. 4、点击该接口,切换到Inspectors-Raw下 复制请求头以及请求参数 5、将请求头复制…

windows端口转发

使用场景 前提条件: 双网段网络环境(A网段、B网段)跳板机一台,或者称为目标服务器一台。 目标: (在A网段)访问这台服务器的IP端口(例如10.143.21.62:10000),提供服务的是B网段的服务…