网络协议详解

news2024/11/24 4:54:20

目录

1.认识网络协议

2网络协议的设计

2.1网络通信的问题

2.2网络协议的分层设计

软件分层与网络分层

3.OSI七层网络模型

各层次的介绍如下

4.TCP/IP 五层协议

各层次说明

各层次所解决的问题

5.网络和操作系统之间的关系

单主机下

多主机下

6.重新理解网络协议

1.认识网络协议

要想认识网络协议,先要理解协议是什么。

其实,在大家的日常生活中,多多少少都接触过协议;比如:篮球比赛时,控球后卫持球进攻,摸一摸左耳,队友们便知道这一球要从左路进攻,摸一摸右耳,队友们便知道要从右路进攻。篮球队员们在实现约定好的情况下,根据控球后卫的举动,作出相应的战术变动,可以实现在紧张的环境下高效沟通、高效的进攻,从而提高得分的效率;其实说白了,就是队员们事先约定好,根据控球后卫的举动作出相应的战术调整,避免出现进攻时跟无头苍蝇一样,你觉得要从左边进攻,他觉得要从右边进攻,最后的都不知道自己要干嘛的尴尬场景。

从可以看出,协议的本质其实就是一种约定,大家事先约定好,并且都遵守,从而减小沟通的成本,通信的成本;网络协议是计算机和计算机之间的协议,所以网络协议就是计算机和计算机之间的一种约定,用来解决计算机和计算机之间的通信问题。

2网络协议的设计

2.1网络通信的问题

计算机被发明出来是给人使用的,人们依靠计算机进行工作,进行工作就会产生数据,我的计算机上产生的数据想要发送给你,你的计算机上产生的数据想要发送给我,这就要求计算机拥有通信的能力;可以看出,计算机和计算机之间要通信,本质上是人与人之间要通信。但是人与人之间的距离是会发生变化的,可能很近,可能很远。

距离比较近的话,直接拷贝一下就行了,但是距离比较远的话,数据的发送就会产生一些问题,比如:我们能保证我们要传输的数据,能够到达目标主机上吗?就算能够到达目标主机上,我们能保证数据是完整地到达对方的主机上吗?就算数据完整的到达了对方的主机上,我们能保证对方能够正确的识别和使用接收到的数据吗?如果通信双方的主机位于不同的局域网内,我们如何进行局域网的转发呢?

总结一下,远距离通信具有以下问题:

1.可靠性问题。

2.主机定位问题。

3.如何使用数据的问题。

4.数据报局域网转发问题。

2.2网络协议的分层设计

既然产生了问题,就要解决问题,前面说过,网络协议就是用来解决计算机与计算机之间的通信问题的,那网络协议应该如何设计呢?

软件分层与网络分层

在计算机界有一句话,叫做 “任何问题都可以通过添加一层软件层来解决”,比如:我们在编写代码时,需要在一个函数中实现一个功能,我们就可以将这个功能单独实现成一个函数,让上层代码调用下层的函数。再或者Linux操作系统中,通过在进程和物理内存之间引入虚拟内存来解决直接映射物理内存的地址不连续等问题…… 

在解决计算机中的问题的时候,为什么要采用分层呢?因为,层和层之间是松耦合的,可以随时替换和维护,并且一层变化并不影响另一层。既然通过分层解决计算机中的问题这么好用,那计算机科学家们就想,计算机之间的通信问题,是不是也可以通过分层来解决呢?是的!

要设计网络协议,本质是要设计解决网络通信问题的方案,方案有好有坏,好的方案一定是可维护、方便拓展的。所以网络协议就被设计成了层状结构。

3.OSI七层网络模型

要设计网络模型,需要有人牵头,于是,国际标准化组织牵头设计了OSI七层网络模型。

OSI七层网络模型,也被称为开放系统互连参考模型(Open System Interconnection Reference Model),是国际标准化组织(ISO)在20世纪80年代初提出的一个网络通信的概念模型。这个模型将网络通信分为七个不同的层次,每个层次都有其特定的功能和任务,旨在使得网络通信的设计、开发和管理更加模块化和可维护。

各层次的介绍如下

1. 物理层

  • 功能:物理层是OSI模型的最底层,负责处理物理传输介质上的原始比特流,确保数据在传输媒体上能够以适当的方式传输。
  • 主要任务:包括比特编码、电压规范、物理拓扑等。物理层还涉及传输介质的特性、信号的放大、衰减、噪声和干扰的处理,以及物理连接的定义和管理。
  • 示例设备集线器、中继器、网线等。

2. 数据链路层

  • 功能:数据链路层负责将原始比特流分割成帧并添加地址信息,以便在直接连接的设备之间传输数据。
  • 主要任务:帧的封装、MAC地址的管理、错误检测和纠正、流量控制等。数据链路层还定义了局域网的拓扑结构,如总线拓扑、星型拓扑和环型拓扑等。
  • 示例设备交换机、网卡、网桥等。

3. 网络层

  • 功能:网络层负责在不同的网络之间传输数据,路由数据包并确保它们能够到达目标设备。
  • 主要任务:IP地址分配、路由选择、数据包转发等。网络层还涉及子网划分、TTL值的处理以及网络层协议的使用,如IP、ICMP和IGMP等。
  • 示例设备路由器、三层交换机等。

4. 传输层

  • 功能:传输层提供端到端的数据传输服务,确保数据的可靠性、流量控制和错误检测。
  • 主要任务:端口管理、流量控制、数据分段和重组等。传输层协议如TCP和UDP在这一层发挥着重要作用。

5. 会话层

  • 功能:会话层管理会话的建立、维护和结束,处理会话层面的错误和同步问题。
  • 主要任务:会话控制、会话恢复等。会话层确保两个实体之间能够按照约定的顺序进行数据的收发。

6. 表示层

  • 功能:表示层负责数据的格式转换、加密和解密,确保应用程序能够正确地解释数据。
  • 主要任务:数据压缩、加密解密、数据格式转换等。表示层为应用层提供的数据进行必要的转换,以适应网络传输的需求。

7. 应用层

  • 功能:应用层是OSI模型的最高层,为用户提供网络应用服务,包括文件传输、电子邮件、网页浏览等。
  • 主要任务:应用程序接口、用户认证、数据传输等。应用层协议如HTTP、SMTP、FTP等在这一层得到应用。

注意:OSI七层网络模型只是一种标准,相当于是设计图纸,ISO组织并不负责实现网络的层状结构,而是由各平台的开发者来负责实现。

4.TCP/IP 五层协议

前辈们在实现OSI七层网络模型的时候发现,OSI七层网络模型虽然设计的非常好,但它既复杂也不实用,于是将OSI七层模型的上三层合并为一层,实现成了TCP/IP五层协议。

各层次说明

物理层: 负责光/电信号的传递方式。比如现在以太网通用的网线(双绞 线)、早期以太网采用的的同轴电缆(现在主要用于有线电视)、光纤, 现在的wifi无线网使用电磁波等都属于物理层的概念。物理层的能力决定了最大传输速率、传输距离、抗干扰性等,集线器(Hub)工作在物理层。

数据链路层: 负责设备之间的数据帧的传送和识别。例如网卡设备的驱动、帧同步(就是说从网线上检测到什么信号算作新帧的开始)、冲突检测(如果检测到冲突就自动重发)、数据差错校验等工作. 有以太网、令牌环网, 无线LAN等标准,交换机(Switch)工作在数据链路层。

网络层: 负责地址管理和路由选择。例如在IP协议中, 通过IP地址来标识一台主机, 并通过路由表的方式规划出两台主机之间的数据传输的线路(路由),路由器(Router)工作在网路层。

传输层: 负责两台主机之间的数据传输。如传输控制协议 (TCP),能够确保数据可靠的从源主机发送到目标主机。

应用层: 负责应用程序间沟通。如简单电子邮件传输(SMTP)、文件传输协议(FTP)、网络远程访问协议(Telnet)等,我们的网络编程主要就是针对应用层。

各层次所解决的问题

对比我们在网络通信的问题来看:

物理层 —— 解决信号的传输问题。

数据链路层 —— 数据报局域转发的问题。

网络层 —— 主机定位问题

传输层 —— 数据可靠性问题

应用层 —— 如何使用数据的问题

5.网络和操作系统之间的关系

单主机下

TCP/IP五层协议与计算机的层次结构 一 一 对应:

分析上面的图,我们可以得出一下结论:

1、网络层和传输层是在操作系统内部实现的,所以网络也是操作系统源代码的一部分,操作系统内部实现了网络管理。操作系统不允许用户直接访问它内部的数据,所以需要对外提供网络相关的系统调用接口,系统调用接口不太好用,有人对系统调用接口做封装,就形成了网络库。

2、TCP/IP 协议在网络通信里起着最核心的作用,并且这两个协议是在操作系统内部实现的,代表了整个网络协议栈;所以习惯性称之为TCP/IP协议栈。

3、不考虑硬件,网络的下三层属于操作系统及驱动,由操作系统自动完成;应用层属于用户层。

多主机下

一个问题:为什么不同的操作系统的设备之间能实现通信?

因为世界上所有的操作系统,只要想入网,都必须遵守TCP/IP协议,保证不同主机之间的数据通信。网络是属于操作系统源代码的一部分,所以,操作系统和操作系统之间既有个性的一面,也有共性的一面。网络协议栈就是他们的共性。

6.重新理解网络协议 

我们知道 操作系统是用大量的C语言和少量的汇编语言写的,而网络协议又是操作系统的一部分,所以网络协议相关的代码也是用C语言写的;

表示协议肯定要有不同数据类型的字段,而C语言中要想完成这个操作,我们只能使用结构体类型来完成。

前面我们说过,协议是一种约定,所以,网络协议在语言角度就是通信双方都能识别的结构体数据类型。

通信双方使用同样的数据类型,经过网络传输,对方一定认识每个字段的大小和含义,于是就能实现网络通信了。

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

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

相关文章

【鸿蒙HarmonyOS NEXT】页面之间相互传递参数

【鸿蒙HarmonyOS NEXT】页面之间相互传递参数 一、环境说明二、页面之间相互传参 一、环境说明 DevEco Studio 版本: API版本:以12为主 二、页面之间相互传参 说明: 页面间的导航可以通过页面路由router模块来实现。页面路由模块根据页…

kubernetes微服务基础及类型

目录 1 什么是微服务 2 微服务的类型 3 ipvs模式 ipvs模式配置方式 4 微服务类型详解 4.1 ClusterIP 4.2 ClusterIP中的特殊模式headless 4.3 nodeport 4.4 metalLB配合loadbalance实现发布IP 1 什么是微服务 用控制器来完成集群的工作负载,那么应用如何暴漏出去&…

JavaWeb——JavaScript(3/4)-JS对象:BOM、DOM(Window、Location,概念、标准模型、获取元素对象)

目录 BOM 介绍 Window 案例(1) Location DOM 概念 标准模型 获取元素对象 案例(2) 原始代码 完整代码 JS对象 BOM 介绍 概念:Browser Object Model 浏览器对象模型,允许JavaScript与浏览器对话,JavaScript 将浏览器的各个组成部…

git 提交自动带上storyid

公司里的运维团队的产品经理,那老六提出说要在每个提交带上的jira storyid或者bugid,不用他自己弄不顾他人麻烦,真想问候他的xx。不过既然已经成为定局,还是想想有没有其他办法。经一番调研,网上有比较零碎的信息&…

攻防世界--->地穴

前言:学习笔记。 下载 解压 查壳。 64位ida打开。 进入主函数。 很容易得知,这是一个RC4加密。 【 (题外话) 在reverse中,RC4考点,不会很难。 reverse中RC4关键点就是,抓住异或。 一般解这种…

Open a folder or workspace... (File -> Open Folder)

问题:vscode Open with Live Server 时 显示Open a folder or workspace... (File -> Open Folder)报错 解决:不可以单独打开文件1.html ; 需要在文件夹里打开 像这样

【哈希表】深入理解哈希表

目录 1、哈希表简介2、哈希函数2.1、概念2.2、常用的哈希函数2.2.1、直接定址法2.2.2、除留余数法2.2.3、平方取中法2.2.4、基数转换法 3、哈希冲突3.1、概念3.2、开放地址法【闭散列:key存放到冲突位置的“下一个”空位置】3.3、链地址法【开散列:冲突位…

SAM 2:分割图像和视频中的任何内容

文章目录 摘要1 引言2 相关工作3 任务:可提示视觉分割4 模型5 数据5.1 数据引擎5.2 SA-V数据集 6 零样本实验6.1 视频任务6.1.1 提示视频分割6.1.2 半监督视频对象分割6.1.3 公平性评估 6.2 图像任务 7 与半监督VOS的最新技术的比较8 数据和模型消融8.1 数据消融8.2…

dr 航迹推算 知识介绍

DR(Dead Reckoning)航迹推算是一种在航海、航空、车辆导航等领域中广泛使用的技术,用于估算物体的位置。DR航迹推算主要通过已知的初始位置和运动参数(如速度、方向)来预测物体的当前位置。以下是 DR 航迹推算的详细知…

跨平台电商数据整合:item_get API在电商大数据平台中的角色

在电商行业蓬勃发展的今天,跨平台运营已成为众多商家的必然选择。然而,随之而来的数据孤岛问题却成为了制约电商企业进一步发展的瓶颈。为了解决这一问题,电商大数据平台应运而生,而item_get API作为获取商品详情的关键接口&#…

统计学第6天

1、变量间关系的度量 函数关系 (1)是一一对应的确定关系; (2)设有两个变量x和y,变量y随x一起变化,并完全依赖于x,当x取某个数值时,y根据确定的关系取相应的值,称y是x的…

建设网盘聚合中心—Win10+Alist+RaiDrive

经常需要在网上找各种资源,但遇到 2 个问题: 1. 大部分网盘都需要先将文件保存在自己网盘后才能下载,也就是必须创建对应网盘账号。 2. 有些网盘还必须要下载客户端才能下载文件。 创建账号无法避免,但可以不用下载那么多的客户端…

写在 Pencils Protocol TGE 前:加密市场共识才是王道,拥抱社区

“Pencils Protocol 正在成为本轮市场周期中,加密项目建立共识最有力的工具!” 对于加密项目而言,代币 TGE 是一个非常重要的事情,它不仅仅意味着生态内经济系统的全面启动,同时也意味着项目生态市场的全面开启。当然…

《Rust避坑式入门》第1章:挖数据竞争大坑的滥用可变性

赵可菲是一名Java程序员,一直在维护一个有十多年历史的老旧系统。这个系统即将被淘汰,代码质量也很差,每次上线都会出现很多bug,她不得不加班修复。公司给了她3个月的内部转岗期,如果转不出去就会被裁员。她得知公司可…

AF透明模式/虚拟网线模式组网部署

透明模式组网 实验拓扑 防火墙基本配置 接口配置 eth1 eth3 放通策略 1. 内网用户上班时间(9:00-17:00)不允许看视频、玩游戏及网上购物,其余时 间访问互联网不受限制;(20 分) 应用控制策略 2. 互联…

二维空间向量的p范数等密度轨迹

图2-52:二维空间向量的 ℓ p \ell p ℓp范数等密度轨迹。 想过两种方式,还是放在一起省地方。 禹晶、肖创柏、廖庆敏《数字图像处理(面向新工科的电工电子信息基础课程系列教材)》 禹晶、肖创柏、廖庆敏《数字图像处理》资源…

数据库系统原理及应用——仓库管理系统

目录 引言 一.需求设计说明书 1.需求分析 2.系统背景 3.系统目标 4.人员分配 5.数据流程图(DFD) 二.概念结构设计 1.局部E-R图 (1)供应商 (2)货物 (3)客户 &…

1-19 平滑处理——双边滤波 opencv树莓派4B 入门系列笔记

目录 一、提前准备 二、代码详解 cv2.bilateralFilter函数用于对图像进行双边滤波。双边滤波是一种保持边缘的平滑技术,常用于图像去噪声和增强图像的细节。函数的四个参数如下: 三、运行现象 四、完整工程贴出 一、提前准备 1、树莓派4B 及 64位系统…

stack smashing detect以及解决之道

0. 简介 相较于其他报错,stack smashing detect这个报错是最令人头疼的段错误种类。“Stack smashing detect” 是指在程序运行过程中检测到栈溢出的情况。栈溢出是一种常见的安全漏洞,发生在程序尝试往栈空间写入超过其边界范围的数据时。 1. 常见分类…

改写二进制文件

以下是一些常见的方法和工具: 1. 使用十六进制编辑器 十六进制编辑器 是最直接的工具之一,用于查看和编辑二进制文件中的数据。它允许你以十六进制格式查看和修改文件内容。 常见十六进制编辑器: HxD(Windows)Hex F…