网站建设发布ps科技感seo提高网站排名
网站建设发布ps科技感,seo提高网站排名,一般网站开发用什么笔记本,做网站拍幕布照是什么意思#x1f52d;个人主页#xff1a; 北 海 #x1f6dc;所属专栏#xff1a; 神奇的网络世界 #x1f4bb;操作环境#xff1a; CentOS 7.6 阿里云远程服务器 文章目录 #x1f324;️前言#x1f326;️正文1.网络发展1.1.背景1.2.类型 2.网络协议2.1.什么是协议2.2.协议… 个人主页 北 海 所属专栏 神奇的网络世界 操作环境 CentOS 7.6 阿里云远程服务器 文章目录 ️前言️正文1.网络发展1.1.背景1.2.类型 2.网络协议2.1.什么是协议2.2.协议分层2.3.OSI七层模型2.3.TCP/IP五层模型2.4.系统与网络的联系 3.网络传输3.1.前置概念3.2.同一个局域网内通信3.3.数据包的封装与分用3.4.局域网通信原理3.5.跨路由器的远端通信 4.网络地址4.1.IP地址4.2.MAC地址4.3.IP与MAC的关系 ️总结 ️前言
在网络世界的纷繁复杂中理解基础才能驾驭未来。本文踏上网络之旅解析其『发展 ‖ 协议 ‖ 传输 ‖ 地址』四大方面探寻阿帕网到商用互联网的发展深入 OSI七层模型、TCP/IP五层模型揭示数据传输的奥妙。透过实际案例走进网络的心脏洞悉通信的精妙之处为探险网络世界的每一位旅者打开智慧之门 ️正文
1.网络发展
1.1.背景
1945 年二战结束世界恢复和平并出现了 美国、苏联 两个超级大国1947 年杜鲁门主义 出台标志着以两个超级大国为代表的 冷战 正式开始1957 年苏联 发射了人类第一颗人造地球卫星令 美国 大为震惊1958 年美国 组建高级研究计划局ARPA简称 阿帕负责研发用于军事用途的高新科技 在 阿帕 中信息技术处 属于核心机构主要研究方向是计算机网络通讯等方面1968 年拉里·罗伯茨 提交了一份题为 《资源共享的电脑网络》 报告报告中提出 让阿帕的计算机相互连接以达到信息共享的目的而这就是最早的网络阿帕网
1969 年 10 月 29 日进行第一次 阿帕网 的连接实验起点为 加州大学洛杉矶分校终点则是 500km 之外的 斯坦福研究所第一次连接实验想传输单词 login最终因连接中断只成功传输了字母 l 和 o但这次连接实验成功开启了网络世界的大门最初 阿帕网 的节点只有四个到了 1981 年节点增加至 213 个 1974 年温顿·瑟夫 和 罗伯特·卡恩 提出的 TCP/IP 协议 正式发表TCP/IP 协议 突破了不同硬件间的限制允许不同的计算机之间进行高效可靠的数据传输经过数十年的完善TCP/IP 协议 成为使用最广泛的网络协议这也为网络快速发展奠定了基础1986 年美国国家科学基金会网络NSFNET) 成立阿帕网 只能用于军事研究而 NSFNET 则是鼓励大学和研究机构加入到自己的互联网中服务于学术研究NSFNET 快速发展并逐渐替代了 阿帕网 随着互联网在 军事 和 学术 领域的不断发展商业 领域对于网络的需求变得越来越迫切因为这是一个全新的市场具有不可估量的发展前景世界上第一家商业互联网服务提供商 The World 很快就成立了并于 1989 年开始提供互联网的接入服务目前这家公司的官网仍可访问随后越来越多的商业互联网服务商开始诞生1995 年NSFNET 将自己的经营权转给了美国的私有电信公司至此互联网正式进入商业时代
尽管商业互联网早在 1989 年就已经开始但想要通过互联网获取信息仍存在门槛这对于普通人是很不友好的导致互联网无法普及同年互联网中教父级的人物 蒂姆·伯纳斯-李 发明了 万维网 www并于第二年开发出了 第一个网页服务器 和 第一个网页浏览器至此普通人只需要打开浏览器就能轻松查阅到互联网中的所有信息信息变得触手可得互联网也因此快速发展进入了网页时代。互联网在 1990-2000 年这十年间的发展令所有人吃惊这期间也诞生了很多互联网传奇 1993 年1 月马克.安德森 开发了马赛克Mosaic浏览器支持显示图片并于第二年成立 网景公司推出了新一代 网景浏览器1995 年 网景公司 在纽约上市一夜之间公司市值就突破了 20 亿美元 1995 年 3 月斯坦福大学的两名电气工程系的研究生共同创建了 雅虎公司 1995 年 7 月杰夫·贝索斯 创建 亚马逊全新的电子商务模式使其创始人一跃成为世界首富 1995 年微软为了回应 网景浏览器推出了经典浏览器 Internet Explorer 1997 年丁磊在广州创建了 网易公司并推出了强大且免费的 163 邮箱 1998 年 2 月从美国麻省理工学院毕业回国的 张朝阳 创建了 搜狐 1998 年 11 月马化腾 在深圳创建 腾讯公司腾讯帝国正式拉开了帷幕 1998 年 12 月王志东 创建了 新浪网站才有了后来的新浪微博 1998 年 2 月谷歌 成立曾想将自己的网络爬虫项目出售给 雅虎惨遭拒绝多年之后谷歌 成为全球最大的搜索引擎公司 1999 年 9 月马云 带着他的十八罗汉在杭州的公寓中创建了 阿里巴巴集团如今的 淘宝、支付宝 等阿里系产品已经深刻改变了人们的生活方式 2000 年李彦宏 带着他的 “超链分析” 技术专利创建了 百度“百度一下你就知道” 的观念深入人心 … 上述内容摘录自知乎文章《可能谦虚的说这是一篇最全的互联网发展史》 互联网 仍在快速发展web2.0 和 移动互联网 时代同样诞生了无数传奇即将到来的 web3.0 也同样令人期待。所有人共建的就是 网络
1.2.类型
如果按照 网络区域 进行划分可以分为 局域网 LAN 和 广域网 WAN
局域网 LAN 通常指在一个区域内将多台计算机通过双绞线、同轴电缆等连接介质互相连接 广域网 WAN 则是指将相隔千里的计算机进行连接 值得注意的是 局域网和广域网只是一个相对的概念并没有明显的界限比如一个看似很大的广域网实际也就是个局域网 2.网络协议
2.1.什么是协议
协议 是一种约定也是一种标准比如著名的 IEEE 754 标准就规定了浮点数如何在内存中存储再比如投资者往往会与被投资者签订一份对赌协议确保投资顺利进行
协议制定后参与者都必须遵守该协议
不同行业中的 协议 往往由该行业中的翘楚制定比如在通信标准领域华为 就担任了重要角色并作为 5G 标准的主导者之一 一流企业定标准二流企业做品牌三流企业做产品 在当前互联网时代有众多计算机生产商、计算机操作系统和多样化的计算机网络硬件设备。那么如何实现这些不同设备之间的互相连接呢
答案是 制定出被大家都认可的协议当 协议 被制定出来且拥有一定用户基础后后续厂商推出的硬件设施也必须遵守该 协议否则就会被市场抛弃如此一来可以倒逼众多配套设备共同遵守网络连接环境也就逐渐完善了
2.2.协议分层
网络在传输过程中面临诸多问题
数据如何组织如何解析的问题长距离传输数据丢失的问题如何在众多主机中定位目标主机的问题如何进行数据转发、路径选择的问题010101 硬件级别的协议问题 如何解决这些问题呢
将问题分类逐个击破 — 高内聚
这些问题之间是存在先后关系的比如只有先把信息组织好了才需要考虑数据传输过程中的丢失问题丢失问题得到保障后就要考虑把数据发送给谁、如何发送最终通过硬件完成发送
基于 解耦、可维护性、可扩展性 这三点出发采用 协议分层 的解决方案将不同的问题解决策略归入不同模块中模块之间互不影响 — 低耦合
此时网络的 层状结构 呼之欲出不同分层中包含了各种协议负责解决不同的问题 其实 分层 这个概念早在语言学习阶段就已经接触过了在学习 继承 时子类继承自父类当前出现了 父类 和 子类 这两层结构父类可以不必关心子类的具体实现需要时可以直接通过父类指针对子类成员或函数进行访问 在进行 分层 后上层无需关心下层的具体实现只需要使用下层提供的功能即可分层 思想很好的体现了计算机领域的设计哲学任何计算机问题都可以通过添加一层软件层解决 拿日常生活举例假设 A 想给 B 打电话只需要拿起电话并拨通 B 的号码待 B 接通电话后双方可以通话在通话过程中A 与 B 都认为自己在直接与对方通话
这是因为 A、B 同处 语言层任务是 进行通话而通话的具体实现属于 通信设备层用于 实现通话语言层 依赖 通信设备层 的功能但并不关心它的具体实现因为没必要 语言层和通信设备层之间通过 接口 进行连接有点类似于操作系统中的系统调用 假设某天 通信设备层 中的电话机坏了可以将其更换为无线电继续向 语言层 提供通话的服务即便设备更换了A、B 依旧可以正常通话 不仅 通信设备层 可以更换设备语言层 也可以更换角色比如现在变成 B、C 两个外国人进行通话通信设备层 依旧可以正常提供服务 上述例子中很好的体现出 分层 的好处分层之后每一层都只关注自己层的功能使用下层提供的接口任何一层出问题都不会直接影响其他层
分层 是解决大量问题的最优解高内聚、低耦合 能否不进行分层 从技术层面来说是可以的但这对于整个系统的设计都是非常不友好的比如你可以把所有的代码都写到一个 main 函数中程序依旧可以运行但如果程序运行出现了问题或者说需要对某个功能进行改动会变得十分麻烦 所以随着编程思想的深入不同的功能由不同的函数实现对功能函数进行聚合也就形成了类分层也是如此分层之后无论是进行功能维护还是进行功能扩展都可以在不影响其他层的情况下进行 2.3.OSI七层模型
基于 网络分层 的设计思想诞生了著名的 OSI七层网络模型
OSIOpen System Interconnect即 开放式系统互连 一般都叫 OSI参考模型是 ISO组织 在 1985 年研究的 网络互连模型该模型将 网络 从逻辑上分成了 七层每一层都有对应的 协议 或 物理设备
OSI参考模型 最大优点是将 服务、接口 和 协议 这三个概念明确地区分开来通过七个层次化的结构模型使不同的系统不同的网络之间实现可靠的通讯
自底向上OSI参考模型 中不同层级实现功能如下所示
分层名称功能预览物理层解决硬件相关的问题比如 01 序列解析、数字/模拟信号处理、界定连接器和网线的规格数据链路层解决两台主机在局域网中如何连通的问题网络层解决主机跨网络经过路径选择后如何到达目标主机的问题传输层解决数据传输时可能发生的数据丢失问题同时通过策略实现数据高效传输会话层进行连接管理表示层规定信息转换格式应用层针对不同应用的协议
表格图片来源《网络入门基础》
OSI参考模型 是一种框架性的设计方法基于该模型可以实现不同的具体模型其中最出名的是 TCP/IP五层模型这也是我们主要学习的网络模型
2.3.TCP/IP五层模型 为什么会变成五层模型 这是因为开发人员在使用 OSI七层模型 的过程中发现这个标准设计的过于麻烦了应用层、表示层、会话层 可以合为一层应用层加上剩下的四层也就是变成了五层模型 为什么叫做 TCP/IP 五层模型 这是因为其中的 TCP、IP 协议非常经典、非常重要具有代表意义于是就命名成了 TCP/IP 五层模型
注意 TCP/IP是一组协议的代名词其中包含了许多协议共同组成了 TCP/IP 协议簇
TCP/IP 五层模型 也可以称为 TCP/IP 四层模型这是因为 物理层 不是我们开发人员关注的重点 TCP/IP 五层模型 的不同分层功能如下自底向上 物理层 负责光电信号的传递方式以太网 中采用 同轴电缆、双绞线、光纤、电磁波 等传递信号不同材质决定了信号最大传输速率、传输距离、抗干扰性等如果信号传递过程中出现衰减还可以使用 集线器 进行信号增强 数据链路层 负责设备之间的数据帧的传送和识别比如网卡设备的驱动、帧同步、冲突检测、差错校验等工作 数据链路层 中有很多不同的实现标准以太网、令牌环、无线 LAN 等具体是什么标准取决于网卡用于连接多台设备实现网络数据传输与交换的 交换机 就工作在 数据链路层 网络层 负责地址管理和路由选择比如在 IP 协议 中通过 IP 地址来标识主机可以通过查询路由表的方式规划出源主机与目标主机之间的传输路线这正是 路由器 的工作职责 传输层 负责两台主机之间的数据传输通过诸如 TCP 协议 等传输协议实现高效、可靠的数据传输数据传输不一定成功可以通过 重传 相关机制重新传输数据 应用层 负责应用程序间沟通比如 简单电子邮件传输SMTP、文件传输协议FTP、网络远程访问协议Telnet 等在进行网络编程时主要针对的就是 应用层 一般而言硬件除了工作在某一层外还需要具备自己下层的功能
对于一台主机它的操作系统内核实现了从「传输层」到「物理层」的内容对于一台路由器它实现了从「网络层」到「物理层」对于一台交换机它实现了从「数据链路层」到「物理层」对于集线器它只实现了「物理层」
但这并不是绝对的某些硬件也可以工作在上层比如 路由器 可以实现传输层的部分功能交换机 也可以实现网络层的转发
2.4.系统与网络的联系
系统、网络 不分家看似设计复杂的网络标准模型其实和系统设计有着千丝万缕的联系比如 物理层、数据链路层、网络层、传输层 这四层属于 操作系统层剩下的 应用层 属于 用户层因为我们最终是需要通过操作系统来进行网络通信所以网络标准模型必然会被融入操作系统中 应用层中的 应用、表示、会话 不属于系统体系结构也不能属于系统体系结构因为他们由用户定义并实现由于实现方式不固定也就统称为 应用层网络编程就是在 应用层 中进行的 网络标准模型融入操作系统后为了让用户能使用网络操作系统就为网络相关操作提供了一批 系统调用接口也就是后面学习的 socket 套接字编程 操作系统具有四大管理模块内存管理、进程管理、文件管理、驱动管理压根就没有 网络管理那么操作系统是如何网络进行管理的 Linux 中一切皆文件网络需要借助网卡通信而网卡在操作系统看来不过是一个提供了读方法与写方法的硬件设备而已所以操作系统只需要通过 「文件管理」 那一套来对网络进行管理就行了 其实 socket 本质上就是一个文件描述符一个专门对于 网络资源文件 进行操作的句柄而已这也就意味着系统提供的网络相关系统调用接口必然与文件相关接口操作类似 网络本质上是挂接至文件系统中的一个重要子功能
网络与系统也有一些区别系统可以有很多种但网络中的核心协议栈必须一致无论是哪种系统如果核心协议栈不一致就无法进行网络通信 所有主流操作系统都必须实现基于 TPC、IP 实现的核心协议栈工作在操作系统层中 3.网络传输
3.1.前置概念
一、处在同一个局域网中的主机是可以直接通信的
比如部分游戏的本地连接对战功能CS 1.6、魔兽世界、求生之路等这些游戏在进行本地多人对战时只需要构建一个局域网主机相连后即可直接进行通信 再比如 快牙、QQ互传、快传 等传输文件的方式也是通过局域网连接实现的本质上就是通过热点构建一个子网局域网其他手机主机连接后可以直接通信传输文件
这些日常生活中接触过的操作都在证明 处于同一个局域网中的主机是可以直接通信的 二、TCP/IP模型中的不同层都有自己的协议而协议最直观的表现部分叫做 「协议报头」
每一层都有自己的 协议 很好理解毕竟每层需要解决的问题都不同用来解决问题的 协议 自然就不同 至于什么是 协议报头协议报头 有什么用
协议报头 在数据传输过程中用于承载一些控制信息协议报头 提供了关于数据包或帧的元信息以便在网络中正确地路由、传递和处理数据
比如下面这个就是经典的 TCP 协议报头 可以通过生活中的例子辅助理解
前面提到过马云 创办的 淘宝 深刻改变了现代人的生活说白了就是网购这种网上购物方式必须依赖强大的 物流 体系面对成千上万的商品以及全国大大小小的收货信息该如何设计快递方式才能确保 物流 过程中不会出差错 答案是通过 快递单 标识物流信息这里的快递单就好比 协议报头因为有很多家快递公司每家公司的 快递单 都不一样不同协议的 协议报头 也不一样协议报头 是协议最直观的表现部分 所以假设张三双十一在某东上买了一把青轴机械键盘商家发货时会先选择一家 快递公司协议 进行发货将 键盘有效载荷 打包并给包裹贴上一张 快递单协议报头准备物流 如果不发生意外张三在数天后会收到一条取件信息张三拿到快递后首先做的是读取 快递单协议报头 信息 确认是自己的包裹后才会 把包裹拆开解包最终张三成功拿到了自己网购的 键盘有效载荷
在上面这个故事中张三的整个购物过程可以分为三步商家打包 - 物流 - 张三解包快递单作为快递公司的代表包含了很多重要信息是包裹物流过程中的通关文牒
如果张三想要退货则会在原先包裹的基础之上再加一张 快递单2将之前的 快递单1包裹 整体看作一个 包裹有效载荷利用新的 快递单2 进行封装
此时的有效载荷从 键盘 变成了 包裹证明有效载荷是一个相对的概念 网络中传输的 数据 可以看作商品称为 有效载荷传输过程中选择的 协议 可以看作快递公司协议报头 自然就是快递单了实际在进行网络传输时也是遵循 打包 传输 解包 这三步走的只不过在传输过程中还需要再 打包在众多 协议报头 的保驾护航之下可以确保数据在网络世界中成功递达
快递单1 商品 — 协议报头 有效载荷
快递单2 快递单1商品 — 协议报头 有效载荷 所以现在可以理解为什么不同层中的协议可以共同完成数据传输工作了因为对于同层来说协议是用来解决问题的问题解决后会用自己的 协议报头 将数据打包传给下层或者把自己本层的协议报头与有效载荷分离后把有效载荷传给上层 传给下层时解决完问题后将上层传过来的有效载荷与自己层的协议打包后继续传给下一层这个过程称为 封装传给上层时上层得到的是一个自己能看懂的数据包把自己本层的协议分离后把有效载荷继续往上传就好了这个过程称为 分用 封装 与 分用 是不同网络层中必须面对的重要问题只有把这两个问题解决了整个传输过程才会通畅关于更多实现细节可以接着往下看 3.2.同一个局域网内通信
有了 局域网内直接通信 和 协议报头 的前置知识后接下来演示 同一个局域网内两台主机如何通信 通信过程应用层将自己的 协议报头 与用户想发送的 信息 封装成一个 数据包传给下一层传输层将自己的 协议报头 与 数据包 封装成一个新的 数据包传给下一层不断重复直到 数据包 来到对端主机网络中链路层从数据包中分离出 有效载荷向上交付网络层同样需要分离出 有效载荷向上交付最终 有效载荷 为 主机A 发送的 信息成功交给了 主机B 解铃还须系铃人XXX层 封装 的协议报头只有同层才能进行 解包
得益于 协议分层看似 主机A 与 主机B 在直接通信实际上数据至少经历了九次传输
3.3.数据包的封装与分用
从上面主机通信的例子中可以产出以下结论
每一层都有自己的协议报头向下传输时每一层都要有将自己的「协议报头」与「有效载荷」封装传给下一层的能力向上传输时每一层都要有将自己的「协议报头」与「有效载荷」分离识别并交付给上一层的能力在逻辑上同一层中使用的都是同一个协议都认为自己在于对端直接通信
向上交付时如何从数据包中将自己的 「协议报头」 与 「有效载荷」 分离呢
a.「协议报头」中一般都包含了当前报头的大小用数据包总大小 - 协议报头大小得到的就是「有效载荷」除此之外有的「协议报头」与「有效载荷」之间存在特殊分隔符可以轻松识别并分离
可是协议有很多在向上交付时如何知道 「有效载荷」 该传递给哪个 协议 呢
b.如果要交给上一层「有效载荷」中必然包含上一层协议报头而协议报头中包含了协议信息自然能知道将「有效载荷」交付给谁了
几乎每层 协议 都要具备 a、b 两个基本功能否则就无法向上交付数据 补充概念 不同的协议层对数据包有不同的称谓,在传输层叫做段在网络层叫做数据报在链路层叫做帧应用层数据通过协议栈发到网络上时每层协议都要加上一个数据首部称为封装首部信息中包含了一些类似于首部有多长、载荷有多长、上层协议是什么等信息数据封装成帧后发到传输介质上到达目的主机后每层协议再剥掉相应的首部,根据首部中的上层「协议报头」将数据交给对应的上层协议处理 3.4.局域网通信原理
局域网通信的一般原理在局域网中进行通信时无论任何时刻只允许一台主机向局域网中发送信息
局域网中通信的具体实现方式这里不详谈通过一个例子来辅助理解 某天张三正在上课王老师定了一个规矩在我上课期间其他人不允许讨论如果想发言需要举手示意 张三听着听着就走神了突然王老师看着张三想起了一件事并直接问到“[张三] [你的作业为什么没交]”因为此时全班只有王老师的声音其他同学听到后发现王老师叫的是 [张三]而不是自己选择无视了王老师的发言当张三听到王老师在叫自己名字后打起精神并站了起来开始分析王老师传达的信息[为什么没交作业]张三想了半天想出一个理由[王老师] [作业我写了但在家里忘带了下次带给你]其他同学听到张三的发言依旧选择无视王老师收到张三的信息后表示“[张三] [你能忘记作业为什么不能忘记吃饭呢]”全班发出笑声张三收到信息后尴尬坐下 故事结束在上面的故事中张三所处的环境正是一个 局域网同学和老师们可以直接通信但任何时刻都只允许一人通信其中每个人的名字可以看作自己的 标识符王老师发出的信息中只包含了 [张三] 这个 标识符因为在一个教室里所以除张三外的其他同学也能收到王老师发出的信息但他们选择无视因为 [张三] 这个 标识符 与自己对不上当张三与王老师在进行对话时虽然全班人都能听到但本质上只有张三与王老师在进行通信而这就是 局域网 中 以太网 的通信原理 如何理解 “抓包” 行为 当你收到不是发给你的数据包时没有选择无视而是将其收集了起来这就是抓包带入故事中就是那种喜欢凑热闹的吃瓜群众 网卡默认会过滤掉不属于自己的数据包可以手动设置成混杂模式以关闭过滤 以太 是什么东西为什么能跟网络扯上关系 以太 这个名词源于物理学中的 以太假说认为光在太空中通过 以太 传播但物理实验证明其根本不存在最终沦为物理学界的笑柄。而我们网络中正是通过 光电信号 传输数据的光电信号中有光因此就把该标准称为 以太网用来 “致敬” 物理学 既然局域网中的数据包可以被所有人收到也就意味着通信过程可能被干扰就比如同时向湖面丢石头产生的波纹之间会相互影响导致自己的波纹 丢失/混乱 如果我们不断往局域网中发送大量无用的数据包会导致 网络碰撞影响局域网中的正常通信发生 网络碰撞 后未递达的数据会重新发送此时再发送就会变得特别慢因为此时局域网中都是垃圾数据包大部分时间都用在甄别垃圾数据包上了 这就也解释了大部分学校的校园网在晚上打游戏的时候会很卡因为大家处于同一个局域网中大家都在打游戏都在发送数据包容易发生 数据碰撞从而导致数据 延迟递达也就是 网卡 在网络世界中需要使用 唯一标识符 来标识自己的主机否则就无法做到信息传递与接收网卡厂商在生成网卡时会给每一个网卡都写入属于自己的 SN 号也就是 MAC 地址这是一个硬件地址目前 全球唯一 对于 Windows 电脑用户可以调起 cmd 窗口输入指令 ipconfig /all 查询自己当前电脑网卡的 MAC 信息 当我们在局域网中进行通信时可以直接通过 MAC地址比对判断数据包是不是发给自己的 3.5.跨路由器的远端通信
在学习远端通信之前需要先认识一下 路由器
路由器 主要工作在 网络层但它也具备 数据链路层、物理层 的工作能力并且 路由器 也可以可以看作一台 主机节点作为远端通信的桥梁路由器 至少需要级联两个子网至少要提供两个网络接口 主机A 与 主机B 不处在同一个局域网中如果想要进行通信需要让 路由器 与 主机A 处于同一个子网同时让 路由器 与 主机B 也处在同一个子网主机A 把数据交给 路由器路由器 把数据转发给 主机B主机A 与 主机B 完成了通信 假设 主机A 与 路由器 所在子网标准为 以太网主机B 与 路由器 所在子网标准为 令牌环同样可以演示两台主机如何进行跨路由器的远端通信 令牌环 是局域网中实现通信的另一种方法存在一个 令牌该局域网中的主机轮流持有只有持有 令牌 的主机才能发出信息令牌环 目的也是确保任何时刻都只有一台主机发送信息 主机A 正常将信息封装后向下传递当数据包来到 网络层 时发现此时有很多主机自己该如何将数据包正确传递给路由器呢 在局域网中主机可以通过甄别 唯一标识符 MAC 的方式无视不属于自己的信息此时目标主机并不存在于当前局域网中按照之前的逻辑主机A 发送的信息会被所有人丢弃包括路由器所以光靠 唯一标识符 MAC 是无法完成跨路由器通信的还需要一个重要概念IP 地址
IP 地址 的功能是 标识公网环境下的所有主机当前所谈及的 IP 地址 均为 IPv4 标准该标准使用了一个 4 字节的无符号整数类型unsigned int来表示一个 IP 地址
// IP地址的结构通过位段实现
struct ip
{int part1 : 8;int part2 : 8;int part3 : 8;int part4 : 8;
}操作系统内核由 C语言 编写而网络中的 传输层 和 网络层 属于操作系统内核自然也是通过 C语言 实现的 从代码结构中可以看出 IP 地址 由四部分组成每一部分占 8 字节表示范围为 [0, 255]
直接使用二进制表示比较抽象IP 地址 一般表示为xxx.xxx.xxx.xxx 这种表示方式称为 字符串风格的点分十进制方案是方便给人看的如何将二进制转换为 点分十进制
// IP地址
unsigned int ipVal 3332933889;// 分别获取IP地址中的四个部分
struct ip* pIP (struct ip*)(ipVal);pIP-part1;
pIP-part2;
pIP-part3;
pIP-part4;将获取的四个部分转为十进制然后拼接成字符串即可关于转换工作不需要我们手动完成使用系统提供的接口就行了
如何借助 IP 地址 把数据包正确交给路由器
在路由器中存在一张 路由表其中包含了当前子网中已有路径信息以及之前通信过的路径信息主机A 在进行数据包发送前会先到 路由表 中查询目标路径是否存在如果存在就按照路径传递如果不存在就会把数据包交给路由器由路由器完成数据包的转发 可以把 IP地址 看作学号规定不同班级的学号前缀不一样假设张三捡到了一张学生证数据包仔细查阅花名册路由表后发现不是自己的同班同学于是将学生证交给了辅导员路由器由辅导员来完成学生证的归还工作 将数据包丢给路由器的行为称为 默认路由 现在 主机A 知道自己要把数据包交给路由器同时也知道 主机B 的 IP 地址接下来路由器就会收到一个数据包 路由器拿到数据包后会进行解包将 以太网报头 拆掉然后分析 IP 报头规划该数据包的路径得知需要将此数据包交给 主机B加上 令牌环报头 后把数据包丢入令牌环网络中等待 主机B 截取 不仅是主机需要解包路由器等中间设备也需要具备解包能力因为路径规划依赖于 IP而查看IP协议报头需要先将以太网等链路层协议报头去除 得益于 路由器 IP 地址在 网络层 及以上层次中都认为数据包的内容始终没有改变而在 网络层 之下允许各种不同的实现标准进行通信比如这里的以太网与令牌环这种优秀的设计使网络在普及时可以畅通无阻
IP 是全球网络的基础 4.网络地址
4.1.IP地址
IP地址用来标识网络中不同主机的地址
目前的 IP 地址 有两种IPv4、IPv6凡是没有特殊说明的IP 地址 都是指 IPv4
IPv4 由一个 4 字节的无符号整数 构成占 32 比特位可表示的最大地址数为 42亿
为了让 IP 地址 更便于阅读可以将整数中的四部分转为十进制后通过符号连接以 点分十进制 的形式展现比如 192.168.0.1
IPv4 标准于 1981 年推出在那个联网设备都还极度匮乏的年代使用一个无符号整型最大表示 42 亿就足够了IPv4 在当时看来确实可以标识网络中的主机所有主机然而谁也没有意料到网络发展如此之快快到 42 亿个地址根本不够用IPv4 标准中的所有地址于 2019 年全部分配完毕这就导致 IPv4 标准现在并不能标识所有主机只能标识公网环境下的所有主机 为了应对 IPv4 地址不够用的窘境推出了 IPv6、NAT 等技术IPv6 足足使用了 16 字节长度为 128 位是 IPv4 的四倍可以标识 340 亿亿亿台设备是一个天文数字称可以为全世界的每一粒沙子编上一个地址目前 IPv6 标准尚未全面普及而 NAT 技术则是引入了 地址转换 的概念简言之就是在公网与内网间建立映射关系使得内网中允许地址重复NAT 技术提供了一定的安全保护 我们普通人使用的网络一般都是内网地址普遍都是 192.168.xxx.xxx这种情况下即使你的 IP 暴露也无法直接定位至你的主机设备 4.2.MAC地址
MAC地址用来识别数据链路层中相连的节点
MAC 地址 用一个 6 字节的整数表示占 48 比特位可表示的最大地址数为 百万 亿
MAC 地址 一般用十六进制数字加上冒号的形式来表示例如: 08:00:27:03:fb:19
MAC 地址 在网卡出厂时就确定了不能修改. MAC 地址 通常是唯一的虚拟机中的 MAC 地址 不是真实的 MAC 地址可能会冲突也有些网卡支持用户配置 MAC 地址) IP 地址很紧张MAC 地址就不一样作为数据包转发的节点同一个局域网内MAC 地址重复的可能性几乎为048 比特位显得有点浪费这就好比你每个月要1000生活费但你爸每个月都给你1000w足够用但过于夸张了 4.3.IP与MAC的关系
IP 地址 与 MAC 地址 最大的区别在于传输过程中IP 地址不会改变MAC 地址会改变随着传输距离的增加MAC 地址改变的次数也会增加
如何理解 IP 地址 与 MAC 地址 的关系
IP 地址 分为 源IP地址、目标IP地址MAC 地址 也分为 源MAC地址、目标MAC地址
假设有一天张三考上了大学临近上学日一向谨慎的张三选择规划好自己的报名路线
因为张三家住贵州而他的学校在湖北途径多个省份张三需要坐高铁从贵州到重庆再从重庆到湖北分为两程贵州-重庆重庆-湖北虽然中途涉及换乘并且每一程的始发地和目的地也不一样但张三的最终目的地始终没有改变
源IP地址张三家目标IP地址张三考上的学校源MAC地址[贵州重庆]目标MAC地址[重庆湖北]
张三只需要带够钱并且明确自己的目的地就一定能抵达
张三的报名之路类似于数据包在网络中的传输之路IP 地址始终没有改变但 MAC 地址可能发生改变当 主机A 将数据包交给路由器时路由器分析 IP 地址得知需要将数据包转交给 主机B于是数据包中的 目的 MAC 地址 会变成 MAC-主机B主机B 收到数据包后经过不断解包分用主机B 将会收到 主机A 发送的信息 lo
所以 IP 地址 用来表示始发地与目的地MAC 地址 用来表示途中需要经过的中转区间通常把 MAC 地址 的改变称为 下一跳就是从一个 子网 跳转到另一个 子网 中
IP 地址 和 MAC 地址 共同协作确保数据能够从源设备传输到目的设备。IP 地址 提供了端到端的逻辑标识而 MAC 地址 则在局域网中提供了物理设备之间的唯一标识。这种分层的设计有助于网络的灵活性和可扩展性 如何在 Linux 中查看 IP 地址 与 MAC 地址
ifconfigether 表示 以太当前局域网中采用了以太网 的通信方式 ️总结
以上就是本次关于网络基础『发展 ‖ 协议 ‖ 传输 ‖ 地址』的全部内容了通过追溯网络发展历史深入介绍协议相关概念引出 OSI 七层参考模型和 TCP/IP 五层模型并配合实例生动解释不同层次的功能。通过深入剖析分层模型特别是通过局域网内通信和跨路由器远程通信两个案例用于理解网络传输的宏观流程加深对数据包封装与分用过程的领悟同时简要涉及了协议报头相关概念。最后系统性地介绍了网络地址使我们对 IP 地址与 MAC 地址的概念及差异有了清晰认识
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/90056.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!