计算机网络部分基础知识

网络协议的意义

        单台主机内部的设备之间需要发送和接收消息,那么和相隔很远的两台主机之间发送消息有什么区别呢?两台主机通过网络发送消息,相当于两个网卡设备之间进行通信,最大的区别在于距离变长了。而距离变长带来的结果就是:

1. 会面临数据包丢包的问题

2. 需要解决目标主机的定位问题

3. 如何保证经过无数台设备转发,数据仍能准确被接收

        为了解决这些问题,就有了协议,协议本质上就是一种约定,两套主机约定好一定的数据格式,这样能保证不同厂商生产的计算机也能顺畅地通信,并且网络通信的分层协议各层能够处理丢包、定位的问题。网络协议的范围非常广泛,从硬件到软件,能保证不同的机器都能无障碍地接入互联网:厂商要想让机器接入互联网就要遵守协议。

网络的层状结构

        在网络通信的过程中,为了保证把数据可靠地从一台主机送到另一台主机,并且另一台主机能对数据作相应的处理,我们需要:

        1. 保证把数据交给下一跳主机

        2. 进行路径选择,定位目标主机

        3. 如果报文出现错误或丢失怎么办

        4. 如何使用送达的数据

        这些问题都需要有协议来解决,所以协议是很多的,为了更好地编码实现协议,就对协议进行了分层,我们把网络看作是层状结构。

        为了方便理解协议分层的好处,我们举一个现实生活中的例子,我们在和亲人打电话的时候,并不是直接和对方沟通,而是我们电话把我们的声音发送到对方的电话,再由对方的电话发出声音让对方听到。这个事件实际上也可以分为两层:语言层和通信设备层,语言层由汉语协议保证顺利交流,通信设备层由电话协议保证能够正常通信。那和外国友人打电话呢?语言层的协议切换为英语协议,但通信设备层并不需要修改协议,这实际上把各层的协议进行了解耦合,每层只需要专注于解决一件事情,并且都能够认为是同层的协议在进行直接通信。

        我们最常用的TCP/IP五层协议模型中,数据链路层协议保证把数据送到下一跳主机,网络层协议解决转发过程中的路径选择和确认目标定位问题,传输层解决报文出现错误或丢包的问题,应用层负责对接收到的数据进行处理,而物理层则负责光电信号的传递方式。

        

网络协议与系统

        现在我们已经知道网络协议是分层的,那么各层协议与一台主机具体是什么关系呢?

        网络协议应用层就在计算机的用户层,传输层和网络层协议位于操作系统的内核中,众所周知,用户想要访问计算机的硬件通常必须调用操作系统提供的接口,操作系统调用驱动程序来使用底层硬件,而数据链路层在计算机的驱动程序层。因为如果用户想进行网络通信,就必须访问网卡,所以自顶向下过程中贯穿了网络协议栈的每一层,这保证了用户会使用协议。

        再进一步,主机A向主机B发送数据时,首先由主机B的网卡接收到数据,然后要想把数据送到主机B的用户层,就需要自底向上贯穿网络协议栈的每一层。

        计算机在进行网络通信的过程中可能会受到很多报文,为了对这些报文进行管理,就需要有对应的数据结构,把对报文的管理转化为对数据结构的增删查改

网络传输的基本流程

        大家网购的时候有没有注意过,我们收到的快递不止是买的东西,上面还有一张快递单,上面有寄件人、收件人、物品信息等等内容。这能保证快递公司在运货的过程中始终知道收件人的地址,并且由于上面写的信息双方都看得懂,收件人也能知道寄件人的地址,这实际上也是一种协议。

        类似的,数据在传输的过程中,数据报文也不止有内容,而是报头加内容,那么报头实际上是什么样的呢?

可以看到,所谓的报头其实就是结构体字段,操作系统内协议的源码相同,则双方主机都能识别结构体字段,这就相当于双方共同遵守一个约定,这就是协议。

        下图是TCP/IP数据的封装和解包流程,封装过程:在应用层把数据发送到发送缓冲区,交付到传输层后添加TCP报头,继续向下交付到网络层,添加IP报头,继续向下交付到数据链路层,添加以太网包头。解包过程:逐层读取到报头后,把剩下的有效载荷交付给上一层。

因此在进行封装时,一定要考虑之后对方解包的过程,每一层的协议都需要解决以下两个问题:

1. 如何将报文中的报头和有效载荷进行分离

2. 如何将自己的有效载荷交付给上层的协议

网络中的地址管理

        局域网中的主机能够直接进行通信,每个网卡都有独一无二的mac地址,当局域网中的一台主机向另一台主机发送信息时,实际上是给所有主机发送广播信息,但只有目标主机的mac地址与信息匹配,其他主机则会将信息丢弃。而IP地址分为公网IP和内网IP,当我们提到IP地址可以用来表示互联网中唯一的一台主机时,指的是公网IP,内网IP是可以出现重复的,具体情况我们在后面的文章进行说明。

        为了更好地理解IP地址与mac地址之间的关系,举一个例子,唐僧师徒前往西天取经,到了女儿国后,女儿国国王问他从哪儿来到哪儿去,唐僧说贫僧自东土大唐而来,前往西天取经,国王接着问,那你上一站是哪儿,下一站要去哪儿,唐僧说上一站是火焰山,但是只知道最终目的地是西天,而不知道下一站是哪,需要国王告知,国王告知唐僧,下一站是黑风岭,最后唐僧师徒离开女儿国,前往下一站。这个过程中,他们的最终目的地是不变的,但是每到一个站点,他们的下一站都会改变,这个最终目的地就相当于是目的IP地址,而每次到的下一站就相当于mac地址,国王实际上就相当于路由器。所以IP地址的意义是什么呢?有了IP地址,我们就能根据路由表进行路径选择。mac地址的意义呢?有了mac地址,数据就能在局域网中正确传输。

总结

        通过本文的学习,我们了解了网络协议分层,知道了每层协议都需要能够分离报头和有效载荷、将有效载荷交付给上层协议;并对mac地址和IP地址有了一定的概念。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

<Linux> 进程控制

目录 一、进程创建 1. fork函数 2. fork函数返回值 3. 写时拷贝 4. fork常规用法 5. fork调用失败原因 6. 如何创建多个子进程? 二、进程终止 1. 进程退出场景 2. 进程退出码 3. errno 4. 进程异常退出 5. 进程常见退出方法 5.1 return退出 5.2 exit退出 5.3 _ex…

【FPGA数字信号处理】- 数字信号处理如何入门?

​数字信号处理(Digital Signal Processing,简称DSP)是一种利用计算机或专用数字硬件对信号进行处理的技术,在通信、音频、视频、雷达等领域发挥着越来越重要的作用,也是FPGA主要应用领域之一。 本文将详细介绍数字信…

Web3链上聚合器声呐已全球上线,开启区块链数据洞察新时代

在全球区块链技术高速发展的浪潮中,在创新发展理念的驱动下,区块链领域的工具类应用备受资本青睐。 2024年8月20日,由生纳(香港)国际集团倾力打造的一款链上应用工具——“声呐链上聚合器”,即“声呐链上数…

ESP RainMaker OTA 自动签名功能的安全启动

【如果您之前有关注乐鑫的博客和新闻,那么应该对 ESP RainMaker 及其各项功能有所了解。如果不曾关注,建议先查看相关信息,知晓本文背景。】 在物联网系统的建构中,安全性是一项核心要素。乐鑫科技对系统安全给予了极高的重视。ES…

OpenCV学堂 | 汇总 | 深度学习图像去模糊技术与模型

本文来源公众号“OpenCV学堂”,仅用于学术分享,侵权删,干货满满。 原文链接:汇总 | 深度学习图像去模糊技术与模型 引言 深度学习在图像去模糊领域展现出了强大的能力,通过构建复杂的神经网络模型,可以自…

Golang | Leetcode Golang题解之第337题打家劫舍III

题目: 题解: func rob(root *TreeNode) int {val : dfs(root)return max(val[0], val[1]) }func dfs(node *TreeNode) []int {if node nil {return []int{0, 0}}l, r : dfs(node.Left), dfs(node.Right)selected : node.Val l[1] r[1]notSelected : …

Kotlin Multiplatform 跨平台开发的优化策略与实践

本文首发于公众号“AntDream”,欢迎微信搜索“AntDream”或扫描文章底部二维码关注,和我一起每天进步一点点 Kotlin Multiplatform 跨平台开发的优化策略与实践 在当今快速发展的软件开发领域,跨平台开发技术正变得越来越重要。Kotlin Multi…

Ubuntu中服务部署

Ubuntu中服务部署 一、root用户密码一、SSH远程连接二、JDK1.8安装1、解压上传的安装包2、配置jdk环境变量 三、minio安装1、官网下载安装包2、上传文件并授权3、书写启动脚本4、启动及说明5、启动异常 四、nacos安装1、下载上传安装包,并解压2、修改启动脚本3、配置…

[RCTF2015]EasySQL1

打开题目 点进去看看 注册个admin账户,登陆进去 一个个点开看,没发现flag 我们也可以由此得出结论,页面存在二次注入的漏洞,并可以大胆猜测修改密码的源代码 resoponse为invalid string的关键字是被过滤的关键字,Le…

2百多首胎教儿童音乐ACCESS\EXCEL数据包

还记录之前我搞到过一个《113个大自然声音助眠纯音乐白噪音数据包》吗?今天又遇到了一个胎教儿童音乐,辅助用于怀孕手册、胎教指南、儿童早教类产品是个很不错的数据包哦。 MP3文件对应记录数共258条,大小总容量为1GB,其中分类汇总…

基于JavaWeb的本科生交流培养管理平台的设计与实现--论文pf

TOC springboot529基于JavaWeb的本科生交流培养管理平台的设计与实现--论文pf 第1章 绪论 1.1选题动因 当前的网络技术,软件技术等都具备成熟的理论基础,市场上也出现各种技术开发的软件,这些软件都被用于各个领域,包括生活和…

物联网(IoT)详解

物联网(IoT)详解 1. IoT定义简介2. IoT工作原理3. IoT关键技术4. 物联网与互联网区别5. IoT使用场景6. 开源物联网平台7. 参考资料 1. IoT定义简介 首先第一个问题,什么是物联网(IoT)? 物联网(英文&#…

PyCharm单步调试

1、先在入口设置断点,再点击爬虫图标(shift F9)开始调试 调试图标如图: 2、蓝色光标表示当前运行在这行 3、快捷键 F7:进入当前行函数 F8:单步 F9:全速运行

以FLV解复用为例详解开源库FFmpeg中解复用器的源码逻辑及处理流程

目录 1、FFmpeg简介 2、FLV文件格式介绍 3、注册解复用器 4、解复用器的处理 4.1、AVFormatContext 4.1.1、AVClass 4.1.2、AVOption 4.1.3 AVDictionary—AV字典 4.1.4、AVIOContext 4.1.4.1、URLProtocol 4.1.4.2、AVIOContext的初始化及获取 4.1.5、AVInputF…

【手撕数据结构】链式二叉树

目录 链式二叉树的结构及其声明链式二叉树的四种遍历方式前序遍历中序遍历(中根遍历)后序遍历层序遍历概念思路分析详细代码 求树的节点个数变量累加法(错误)分治递归法 求树的叶子节点个数警惕空指针正确代码 求第k层节点个树思路分析及规则明细代码详细…

算法学习017 不同的二叉搜索树 c++算法学习 中小学算法思维学习 比赛算法题解 信奥算法解析

目录 C不同的二叉搜索树 一、题目要求 1、编程实现 2、输入输出 二、算法分析 三、程序编写 四、运行结果 五、考点分析 六、推荐资料 C不同的二叉搜索树 一、题目要求 1、编程实现 给定一个整数n,求以1、2、3、......、n为节点组成的二叉搜索树有多少种…

C++ 设计模式——工厂方法模式

工厂方法模式 工厂方法模式主要组成部分代码实现工厂方法模式模式的 UML 图工厂方法模式 UML 图解析优点和缺点适用场景 工厂方法模式 工厂方法模式是一种创建型设计模式,它通过定义一个接口用于创建对象,但由子类决定实例化哪个类。与简单工厂模式不同…

数据结构----栈

一丶概念 只能在一端进行插入和删除操作的线性表(又称为堆栈),进行插入和删除操作的一端称为栈顶,另一端称为栈底 二丶特点 先进后出 FILO first in last out 后进先出 LIFO last in first out 三丶顺序栈 逻辑结构&…

什么是制造业项目管理软件?适合制造企业的项目管理软件具备哪些特征

当前,我国的制造业呈现出稳步增长与风险并存的现象。经济构建以国内大循环为主体,国产替代的浪潮正在席卷国内制造业,越来越多的制造领域企业开始启动数字化变革来支撑企业的迅猛发展,进一步优化项目管理流程,促进研发…

Impala 与 Hive 的比较

Impala 与 Hive 的关系 impala是基于hive的大数据分析查询引擎,直接使用hive的元数据库metadata,意味着impala元数据都存储在hive的metastore当中,并且impala兼容hive的绝大多数sql语法。所以需要安装impala的话,必须先安装hive&…