Linux网络编程:网络协议及网络传输的基本流程

目录

一. 计算机网络的发展

二. 网络协议的认识

2.1 对于协议分层的理解

2.2 TCP/IP五层协议模型

2.3 OSI七层模型

三. 网络传输的流程

3.1 同一网段中计算机通信的流程

3.2 不同网段中计算机设备的通信

3.3 对于IP地址和MAC地址的理解

3.4 数据的封装和解包

四. 总结 


一. 计算机网络的发展

独立模式:每一台计算机之间都是相互独立的,如果几台计算机要协同工作,需要相互之间传输数据,那么就需要人工将数据从一台计算机拷贝到另一台计算机。

图1.1 网络互联

网络互联:将多台计算机连接在一起实现数据共享。

图1.2 网络互联

局域网:随机互联网技术的发展,计算机数量的增多,通过交换机和路由器,将一定区域内的所有计算机连接起来,让他们可以相互通信。

图1.3 局域网

广域网:随着计算机数量的增多,将更大范围、更多计算机连接起来的网络,可称为广域网。广域网和局域网是相对的概念,在中国境内,我们可以认为,每个省的网络属于局域网,而全国范围的网络是广域网,而在全球范围内,又可以认为中国的网络属于局域网。

图1.4 广域网

二. 网络协议的认识

2.1 对于协议分层的理解

软件的设计是分层的,分为前端和后端,前端就是给用户的界面,后端进行数据处理、数据运算等工作,用户要通过前端将信息交付给后端进行处理,后端也要将处理结果反馈给前端,前端和后端,就可以被视为软件的两层。网络协议的设计也是分层的

分层设计的好处在于:(1). 更好的适应复杂的场景。 (2).实现不同功能之间的解。

以图2.1所示的用户通信场景为例,上层用户遵循语言协定(汉语、英语等),下层的通信设备也遵守各自的协议,如:采用电脑发微信,不同电脑之间就要遵守特定的电脑协议。此时,如果两名老外要通过英语发送信息,那么就只需要改变上层的用户协议,而底层通信设备的协议不用修改,再比如通信设备变为了卫星电话,那么只需改变通信设备之间的协议即可,用户层协议无需修改。这就是协议的分层设计,能够实现不同功能间的解耦。

图2.1 分层设计协议

2.2 TCP/IP五层协议模型

TCP/IP是一组协议的代名词,TCP表示传输层协议,IP表示网络层协议。TCP/IP协议可分为以下五层,每一层都呼叫下一层网络来实现自身需求。

  • 物理层:负责通过光/电信号来传输数据,如光纤、集线器、调制解调器,都属于物理层的设备,集线器的工作是将信号放大,以便实现远距离数据传输,调制解调器则对信号进行变频、转化等操作。
  • 数据链路层:负责设备之间数据帧的传送和识别,执行数据帧同步、冲突检测、数据校验等工作,遵循以太网、无线WIFI、令牌环网等标准,交换机是运行在数据链路层的硬件设备,可以通过报文交换实现接受数据和发送数据到指定的计算机网络设备中。
  • 网络层:负责明确发送数据的源地址和接受数据的目标ip地址,明确数据传输所经历的路由器路径,路由器就是运行在网络层的设备。
  • 数据传输层:负责主机之间的数据传输,如用户数据报协议UDP、控制传输协议TCP。
  • 应用层:负责上层用户使用的应用软件间的通信,如电子邮件传输协议SMTP、文件传输协议FTP、远程网络访问协议Telnet。

TCP/IP的5层协议在计算机体系中的实现如图2.2所示,操作系统至少要实现从数据传输层到物理层、路由器至少要实现从网络层到物理层、交换机至少要实现从数据链路层到物理层、而集线器则是仅仅实现在物理层。

图2.2 TCP/IP五层协议与计算机体系中每部分的对应关系

2.3 OSI七层模型

OSI七层模型从逻辑上将网络通信分为了七层,每一层都有对应的功能、硬件设施以及协议。

  • 物理层:各种底层设备,负责光/点信号的传输,光纤、集线器、调制解调器都属于物理层。
  • 数据链路层:负责各个主机之间数据帧的传输,负责帧同步、冲突检测以及准确性校验等工作,这一层的标准有以太网标准、无线WIFI标准、令牌环网标准。交换机是工作在数据链路层的设备。
  • 网络层:负责地址的管理和路由的选择,路由器是工作在网络层的设备。
  • 传输层:负责主机之间的数据传输,如用户数据报协议UDP、控制传输协议TCP。
  • 会话层:对通信进行管理,负责通信的建立、终止和维持。
  • 表示层:实现上层设备数据和网络标准数据格式之间的转换。
  • 应用层:针对特定应用的协议,如文件传输协议FTP、电子邮件传输协议SMTP、远程网络访问协议Telnet。

综上我们发现,OSI七层模型和TCP/IP五层模型的低四层几乎是相同的,差别在于上层,OSI在操作系统之上的用户层面,划分出了会话层、表示层和应用层,而TCP/IP则直接归一化成应用层,OSI是一种非常理想的理论指导模型,TCP/IP是一种已经在网络工程中被成熟应用的设计模型,这是因为在操作系统之上的用户软件,场景非常复杂,难以同一制定协议,因此上层协议的维护便交给了用户来实现,就有了TCP/IP五层协议模型。

图2.3展示了OSI七层模型每层对应的TCP/IP模型及在计算机体系中的位置。

图2.3 OSI七层模型与TCP/IP五层模型及计算机体系结构的对应关系

三. 网络传输的流程

3.1 同一网段中计算机通信的流程

在我们的一般性认识中,同一网段的计算机能够实现直接通信,如电视机投屏,只要手机和电视连接在同一网络下,就可以直接投屏,从手机向电视投屏,本质就是同一网段中的计算机通信。

图3.1展示了统计网段中计算机设备通信的具体流程,可见,两台设备的通信并不是一台设备直接将数据发送给另一台设备,而是要经过层层传输才能够到达。根据TCP/IP五层模型,发送数据的设备,数据压从上层传递至下层,通过以太网将数据发送至另一台设备,另一台设备也要从下层到上层逐步获取数据。

图3.1 同一网段中计算机通信的流程

如图3.2所示的常见,同一网段中,可能存在多台计算机设备,那么如何确保同一网段中两台设备之间通信,其余的计算机设备不受干扰呢?

这就要涉及到主机的地址了,在局域网中,每台主机都有唯一的Mac地址,用于标识主机的唯一性,可用于识别数据链路层中相连的节点, 假设图3.2中的设备A要给设备C发送信息,设备B由于处于同一网段中,也会看到设备A发送的信息,但是设备A在传送信息的时候,会带上目标设备的Mac地址,设备B在检测到信息不是发送给它的时候,就会将信息自动屏蔽。

如果某个网络中两台设备一同发生数据,导致数据信号在网络传输中发生碰撞,就会出现数据冲突问题,数据传输层要负责进行冲突检测,如果发生冲突,数据就要重发。如果向某个网络中传入大量垃圾数据,就会不断造成数据冲突,这就是网络攻击的一种方式。

结论:在局域网中,通过Mac地址可以标识主机的唯一性,可用于识别数据链路层中相连的节点。

图3.2 同一网段中多台计算机设备

3.2 不同网段中计算机设备的通信

在广域网中,每台计算机设备都与其专属的IP地址,用于确定不同网段中发送数据的源主机和接收数据的目标主机。如图3.3所示,不同网段中计算机设备的通信,需要由路由器充当连接各个网段的桥梁,实现跨网段的数据传输。

图3.3 跨网段的计算机通信流程

3.3 对于IP地址和MAC地址的理解

对于IP地址的理解:

  • IP地址有IPv4和IPv6两种表达方式,主流采用IPv4。
  • IP地址用于标识网络中主机的唯一性。
  • 对于IPv4,其表达方式为:4个0~255的阿拉伯数字,每个数据之间用 . 分隔,如123.12.4.255就是一个合法的IPv4地址。

对于Mac地址的理解:

  • MAC地址用于标识数据链路层相连的节点。
  • MAC地址由48个二进制位构成,采用16进制数 + 冒号来表示,如 12:a8:bd:06:00:67 就是一个合法的MAC地址。
  • 一般来说,网卡出厂就配置好了MAC地址,但也有些网卡支持用户自行配置MAC地址,甚至在某些虚拟机中,会存在重复的MAC地址。

以图3.4的模型,解释IP地址和MAC地址的区别,在广域网中,我们希望将数据从主机A发送到主机B,那么,主机A和主机B的地址,就是在通信中所讲的IP地址。在数据链路层,主机A发送的数据要依次经过路由器1、2、3才能到达主机B,假设现在数据处于路由器1,那么路由器1的地址就称为当前的MAC地址,而接下来要经过的路由器2的地址,就称为下一个MAC地址。 

图3.4 IP地址和MAC地址的区别

3.4 数据的封装和解包

源主机向下传输数据的时候,每一层都要添加一些属性信息,在每一层添加的信息被称为报头,自顶向下添加报头的过程,就是数据封装的过程。目标主机在自底向下接受数据的时候,在每一层都要去掉对应的报头,去掉报头的过程过程就是数据的解包过程。

如:源主机数据在经过网络层的时候,要添加对应的IP地址信息,用于查找目标主机,而数据链路层需要添加下一个MAC地址,以便于找到数据传输过程中下一个路由器的位置。

图3.5 网络通信中数据的封装和解包

四. 总结 

  • 网络协议的设计是分层的,这样有利于适应复杂的场景,并且可以实现不同功能之间的解耦。
  • TCP/IP五层设计模型是工程实践中常采用的协议设计方案,自顶向下各层依次为:应用层、传输层、网络层、数据链路层和物理层,其中应用层为针对特定上层应用的协议,传输层负责主机之间数据的传输,网络层负责地址的管理和路由的选择,数据链路层负责各个主机之间数据帧的传输,物理层为底层的各种硬件设施。
  • OSI七层模型为一种理想的设计模型,其下五层与TCP/IP相同,依次为:传输层、网络层、数据链路层和物理层,差别在于上三层,OSI七层模型的上三层为:应用层、表达层、会话层。其中应用层为针对特定应用的协议,表达层负责向数据转化为网络能够识别的数据格式,会话层负责通信的建立、终止和维护。
  • IP地址负责在网络中标识主机的唯一性,MAC地址负责在数据链路层标识相连节点的地址。
  • 网络中,数据从上层向下层传输要添加报头,从下层向上层传输要去掉报头,添加报头的过程称为封装,去掉报头的过程称为解包。

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Android Studio实机同WIFI调试

1.点击Pair using Wi-Fi 2.手机扫描跳出来的二维码 小米手机可搜索无线调试进行adb 调试

运算符,switch

目录 算术运算符 逻辑运算符 强制类型转换 自增自减运算符 ​编辑 三目运算符 A?B:C 逗号表达式 switch 算术运算符 除法的运算结果和运算对象的数据类型有关,两个都是int商就是int,被除数或者除数只要有一个是浮点型数据,…

视频剪辑文案怎么写 视频剪辑文案用什么软件

视频剪辑文案与平面材料文案相比,在声音、画面的展现上自由度更高,视觉的丰满感也更高,是视听结合效果的呈现。本文会给大家介绍视频剪辑文案怎么写,视频剪辑文案用什么软件的相关内容,让大家可以在短时间内学会视频剪…

面试半个月后的一些想法

源于半个月面试经历后的一些想法,刚开始想的是随便写写,没想到居然写了这么多。 找不到目标找不到意义亦或是烦躁的时候,就写写文章吧,把那些困扰你很久的问题铺开来 花时间仔细想想,其实真正让我们生气懊恼&#xff0…

KubeSphere Namespace 数据删除事故分析与解决全记录

作者:宇轩辞白,运维研发工程师,目前专注于云原生、Kubernetes、容器、Linux、运维自动化等领域。 前言 2023 年 7 月 23 日在项目上线前夕,K8s 生产环境出现故障,经过紧急修复之后,K8s 环境恢复正常&#…

图书管理系统可行性分析报告

一、需求分析: 1.1系统目的: 本系统主要实现对图书馆的信息进行管理,面对校园的学生借书需求,对读者资源,图书资源,借书信息进行管理,本系统的开发就是为了提高图书管理的工作效率,…

YOLOV7改进-添加CoordConv(坐标卷积)

坐标卷积link 只替换FPN1x1卷积层和检测头中的第一卷积层 1、复制到common文件夹最后 2、做改进对比实验时,不要载入与训练权重 3、yolo.py解析模型里面 4、对yolov7.yaml的配置文件修改 5、对fpn1x1卷积替换

MediaBox助力企业一站式获取音视频能力

以一只音视频百宝箱,应对「千行千面」。 洪炳峰、楚佩斯|作者 大家好,今天我分享的主题是MediaBox——行业音视频数字化再加速。 根据权威数据表明,65%的行业数字化信息来自视频,基于此,音视频技术对于行…

Linux入门教程||Linux系统目录结构

登录系统后,在当前命令窗口下输入命令: ls / 你会看到如下图所示: 树状目录结构: 以下是对这些目录的解释: /bin: bin是Binary的缩写, 这个目录存放着最经常使用的命令。 /boot: 这里存放的是启动Linux时…

【MySQL数据库原理】MySQL Community 8.0界面工具汉化

尝试以下方法来汉化 MySQL Workbench 8.0 的菜单: 1、使用社区翻译版本:有一些热心的社区成员会将 MySQL Workbench 翻译成不同的语言,包括中文。你可以在一些开源或社区网站上寻找这些翻译版本,并按照他们的说明进行安装。 2、…

华为OD机试 - 快速人名查找 - 深度优先搜索dfs(Java 2023 B卷 200分)

目录 专栏导读一、题目描述二、输入描述三、输出描述四、解题思路五、Java算法源码六、效果展示1、输入2、输出3、说明 华为OD机试 2023B卷题库疯狂收录中,刷题点这里 专栏导读 本专栏收录于《华为OD机试(JAVA)真题(A卷B卷&#…

记录第一次带后端团队

在过去的一个半月里我第一次作为后端开发组长角色参与公司项目从0到1的开发,记录这一次开发的经历。 1、背景介绍 首先说明一下背景。我所在的公司是做智慧社区相关业务,开发的项目是系统升级工具,方便公司实施同事安装和升级系统。 参与后…