Linux网络编程:网络协议及网络传输的基本流程
目录
一. 计算机网络的发展
二. 网络协议的认识
2.1 对于协议分层的理解
2.2 TCP/IP五层协议模型
2.3 OSI七层模型
三. 网络传输的流程
3.1 同一网段中计算机通信的流程
3.2 不同网段中计算机设备的通信
3.3 对于IP地址和MAC地址的理解
3.4 数据的封装和解包
四. 总结
一. 计算机网络的发展
独立模式:每一台计算机之间都是相互独立的,如果几台计算机要协同工作,需要相互之间传输数据,那么就需要人工将数据从一台计算机拷贝到另一台计算机。
网络互联:将多台计算机连接在一起实现数据共享。
局域网:随机互联网技术的发展,计算机数量的增多,通过交换机和路由器,将一定区域内的所有计算机连接起来,让他们可以相互通信。
广域网:随着计算机数量的增多,将更大范围、更多计算机连接起来的网络,可称为广域网。广域网和局域网是相对的概念,在中国境内,我们可以认为,每个省的网络属于局域网,而全国范围的网络是广域网,而在全球范围内,又可以认为中国的网络属于局域网。
二. 网络协议的认识
2.1 对于协议分层的理解
软件的设计是分层的,分为前端和后端,前端就是给用户的界面,后端进行数据处理、数据运算等工作,用户要通过前端将信息交付给后端进行处理,后端也要将处理结果反馈给前端,前端和后端,就可以被视为软件的两层。网络协议的设计也是分层的。
分层设计的好处在于:(1). 更好的适应复杂的场景。 (2).实现不同功能之间的解。
以图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.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模型及在计算机体系中的位置。
三. 网络传输的流程
3.1 同一网段中计算机通信的流程
在我们的一般性认识中,同一网段的计算机能够实现直接通信,如电视机投屏,只要手机和电视连接在同一网络下,就可以直接投屏,从手机向电视投屏,本质就是同一网段中的计算机通信。
图3.1展示了统计网段中计算机设备通信的具体流程,可见,两台设备的通信并不是一台设备直接将数据发送给另一台设备,而是要经过层层传输才能够到达。根据TCP/IP五层模型,发送数据的设备,数据压从上层传递至下层,通过以太网将数据发送至另一台设备,另一台设备也要从下层到上层逐步获取数据。
如图3.2所示的常见,同一网段中,可能存在多台计算机设备,那么如何确保同一网段中两台设备之间通信,其余的计算机设备不受干扰呢?
这就要涉及到主机的地址了,在局域网中,每台主机都有唯一的Mac地址,用于标识主机的唯一性,可用于识别数据链路层中相连的节点, 假设图3.2中的设备A要给设备C发送信息,设备B由于处于同一网段中,也会看到设备A发送的信息,但是设备A在传送信息的时候,会带上目标设备的Mac地址,设备B在检测到信息不是发送给它的时候,就会将信息自动屏蔽。
如果某个网络中两台设备一同发生数据,导致数据信号在网络传输中发生碰撞,就会出现数据冲突问题,数据传输层要负责进行冲突检测,如果发生冲突,数据就要重发。如果向某个网络中传入大量垃圾数据,就会不断造成数据冲突,这就是网络攻击的一种方式。
结论:在局域网中,通过Mac地址可以标识主机的唯一性,可用于识别数据链路层中相连的节点。
3.2 不同网段中计算机设备的通信
在广域网中,每台计算机设备都与其专属的IP地址,用于确定不同网段中发送数据的源主机和接收数据的目标主机。如图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地址,以便于找到数据传输过程中下一个路由器的位置。
四. 总结
- 网络协议的设计是分层的,这样有利于适应复杂的场景,并且可以实现不同功能之间的解耦。
- TCP/IP五层设计模型是工程实践中常采用的协议设计方案,自顶向下各层依次为:应用层、传输层、网络层、数据链路层和物理层,其中应用层为针对特定上层应用的协议,传输层负责主机之间数据的传输,网络层负责地址的管理和路由的选择,数据链路层负责各个主机之间数据帧的传输,物理层为底层的各种硬件设施。
- OSI七层模型为一种理想的设计模型,其下五层与TCP/IP相同,依次为:传输层、网络层、数据链路层和物理层,差别在于上三层,OSI七层模型的上三层为:应用层、表达层、会话层。其中应用层为针对特定应用的协议,表达层负责向数据转化为网络能够识别的数据格式,会话层负责通信的建立、终止和维护。
- IP地址负责在网络中标识主机的唯一性,MAC地址负责在数据链路层标识相连节点的地址。
- 网络中,数据从上层向下层传输要添加报头,从下层向上层传输要去掉报头,添加报头的过程称为封装,去掉报头的过程称为解包。
相关文章:
Linux网络编程:网络协议及网络传输的基本流程
目录 一. 计算机网络的发展 二. 网络协议的认识 2.1 对于协议分层的理解 2.2 TCP/IP五层协议模型 2.3 OSI七层模型 三. 网络传输的流程 3.1 同一网段中计算机通信的流程 3.2 不同网段中计算机设备的通信 3.3 对于IP地址和MAC地址的理解 3.4 数据的封装和解包 四. 总结…...
【大数据之Kafka】十、Kafka消费者工作流程
1 Kafka消费方式 (1)pull(拉)模式:消费者从broker中主动拉取数据。(Kafka中使用) 不足:如果Kafka中没有数据,消费者可能会陷入循环,一直返回空数据。 &#…...
如何确保ChatGPT的文本生成对特定行业术语的正确使用?
确保ChatGPT在特定行业术语的正确使用是一个重要而复杂的任务。这涉及到许多方面,包括数据预处理、模型训练、微调、评估和监控。下面我将详细介绍如何确保ChatGPT的文本生成对特定行业术语的正确使用,并探讨这一过程中的关键考虑因素。 ### 1. 数据预处…...
行业追踪,2023-09-11
自动复盘 2023-09-11 凡所有相,皆是虚妄。若见诸相非相,即见如来。 k 线图是最好的老师,每天持续发布板块的rps排名,追踪板块,板块来开仓,板块去清仓,丢弃自以为是的想法,板块去留让…...
LVS + Keepalived群集
文章目录 1. Keepalived工具概述1.1 什么是Keepalived1.2 工作原理1.3 Keepailved实现原理1.4 Keepalived体系主要模块及其作用1.5 keepalived的抢占与非抢占模式 2. 脑裂现象 (拓展)2.1 什么是脑裂2.2 脑裂的产生原因2.3 如何解决脑裂2.4 如何预防脑裂 …...
springboot将jar改成war
一、maven项目 1、修改pom文件 <packaging>war</packaging>2、添加Servlet API依赖,Spring Boot的Starter依赖通常会包含这个依赖,所以你可能已经有了,没有就需要添加 <dependency><groupId>javax.servlet</gr…...
从9.10拼多多笔试第四题产生的01背包感悟
文章目录 题面基本的01背包问题本题变式 本文参考: 9.10拼多多笔试ak_牛客网 (nowcoder.com) 拼多多 秋招 2023.09.10 编程题目与题解 (xiaohongshu.com) 题面 拼多多9.10笔试的最后一题,是一道比较好的01背包变式问题,可以学习其解法加深对…...
搭建自己的OCR服务,第一步:选择合适的开源OCR项目
一、OCR是什么? 光学字符识别(Optical Character Recognition, OCR)是指对文本资料的图像文件进行分析识别处理,获取文字及版面信息的过程。 亦即将图像中的文字进行识别,并以文本的形式返回。 二、OCR的基本流程 1…...
【C++】VScode配置C/C++语言环境(简洁易懂版)
目录 一、下载VScode(装好直接跳第五步)二、安装VScode三、VScode设置语言为中文四、VScode切换主题(个人爱好)五、下载C语言编译器(MinGW-W64 GCC)六、配置编译器环境变量七、配置VScode八、使用单独窗口…...
【hive】—原有分区表新增加列(alter table xxx add columns (xxx string) cascade;)
项目场景: 需求:需要在之前上线的分区报表中新增加一列。 实现方案: 1、创建分区测试表并插入测试数据 drop table test_1; create table test_1 (id string, score int, name string ) partitioned by (class string) row format delimit…...
verilog学习笔记7——PMOS和NMOS、TTL电路和CMOS电路
文章目录 前言一、PMOS和NMOS1、NMOS2、PMOS3、增强型和耗尽型4、两者面积大小 二、CMOS门电路1、非门2、与非门3、或非门4、线与逻辑5、CMOS传输门6、三态门 三、TTL电路四、TTL电路 VS CMOS电路五、数字电平六、使用CMOS电路实现逻辑函数1、上拉网络 PUN2、下拉网络 PDN3、实…...
Java知识点二
Java知识点二 1、Comparable内部比较器,Comparator外部比较器2、源码结构的区别:1)Comparable接口:2)Comparator接口: 2、Java反射 1、Comparable内部比较器,Comparator外部比较器 我们一般把Comparable叫…...
基于单片机压力传感器MPX4115检测-报警系统-proteus仿真-源程序
一、系统方案 本设计采用52单片机作为主控器,液晶1602显示,MPX4115检测压力,按键设置报警,LED报警。 二、硬件设计 原理图如下: 三、单片机软件设计 1、首先是系统初始化 /***************************************…...
Pytorch02 神经网路搭建步骤
文章目录 import numpy as np import torch from PIL.Image import Image from torch.autograd import Variable# 获取数据 def get_data():train_Xnp.asarray([3.3,4.4,5.5,6.71,6.93,4.168,9.779,6.182,7.59,2.167,7.042,10.791,5.313,7.997,5.654,9.27,3.1])train_Ynp.asarr…...
【源码】JavaWeb+Mysql招聘管理系统 课设
简介 用idea和eclipse都可以,数据库是mysql,这是一个Java和mysql做的web系统,用于期末课设作业 cout<<"如果需要的小伙伴可以http://www.codeying.top";可定做课设 线上招聘平台整合了各种就业指导资源,通过了…...
Java中级编程大师班<第一篇:初识数据结构与算法-数组(2)>
数组(Array) 数组是计算机编程中最基本的数据结构之一。它是一个有序的元素集合,每个元素都可以通过索引进行访问。本文将详细介绍数组的特性、用法和注意事项。 数组的基本特性 数组具有以下基本特性: 有序性: 数…...
杰哥教你面试之一百问系列:java集合
文章目录 1. 什么是Java集合?请简要介绍一下集合框架。2. Java集合框架主要分为哪几种类型?3. 什么是迭代器(Iterator)?它的作用是什么?4. ArrayList和LinkedList有什么区别?它们何时适用&#…...
【数据结构】树和二叉树概念
1.树概念及结构 树概念 树是一种非线性的数据结构,它是由n(n>0)个有限结点组成一个具有层次关系的集合。把它叫做树是因为它看起来像一棵倒挂的树,也就是说它是根朝上,而叶朝下的。 有一个特殊的结点,…...
C盘清理教程
C盘清理教程 首先使用space Sniffer 扫一下c盘,然后看一下到底是哪个文件这么大 第二步,创建软链接。 首先将我们需要移动的文件的当前路径拷贝下来:C:\Users\Tom\Desktop\test-link\abc\ghi.txt 然后假设剪切到D盘下:D:\ghi.…...
【实战-05】 flinksql look up join
摘要 look up join 能做什么? 不饶关子直接说答案, look up join 就是 广播。 重要是事情说三遍,广播。flinksql中的look up join 就类似于flinks flink Datastream api中的广播的概念,但是又不完全相同,对于初次访问…...
C++数据结构--红黑树
目录 一、红黑树的概念二、红黑树的性质三、红黑树的节点的定义四、红黑树结构五、红黑树的插入操作参考代码 五、代码汇总 一、红黑树的概念 红黑树,是一种二叉搜索树,但在每个结点上增加一个存储位表示结点的颜色,可以是Red或Black。 通过…...
Linux perf使用思考
目录 一、参考资料(建议阅读)二、值得思考的几个问题1、perf使用不同的性能事件进行统计有什么区别呢?2、那使用不同的性能事件统计出来的数据?排序是如何决定的,其中的百分比数值在不同的性能事件进行统计时各自的意义…...
自定义路由断言工厂
我们来设定一个场景: 假设我们的应用仅仅让age在(min,max)之间的人来访问。 第1步:在配置文件中,添加一个Age的断言配置 spring: application:name: api-gateway cloud:nacos:discovery:server-addr: 127.0.0.1:8848gateway:discovery:locator:enabled: trueroute…...
Nacos安装及在项目中的使用
目录 概要一、安装 Nacos1、下载 Nacos2、解压3、启动 Nacos 服务器4、自定义Nacos启动脚本5、访问Nacos Web控制台 二、Nacos----服务注册与发现1、添加 Nacos 依赖2、配置 Nacos 服务器地址3、使用 Nacos 注册服务4、启动服务 三、Nacos----配置管理1、创建配置数据2、从 Nac…...
overleaf中latex语法总结
α和bata $\alpha$ $\beta$上标和下标同时使用 $A_{IJ}^{IJ}$\\ %上标^下标_多个使用{}行内公式 \noindent $abc$\\ %行内公式\documentclass{article} \usepackage[utf8]{inputenc} \usepackage[namelimits]{amsmath} %数学公式 \usepackage{amssymb} %数学公式…...
Grafana配置邮件告警
1、创建一个监控图 2、grafana邮件配置 vim /etc/grafana/grafana.ini [smtp] enabled true host smtp.163.com:465 user qinziteng05163.com password xxxxx # 授权码 from_address qinziteng05163.com from_name Grafanasystemctl restart grafana-serv…...
setup中的nextTick函数
await nextTick() 是 Vue 3 的一个异步函数,用于等待 DOM 更新完成后执行回调函数, 它在 setup 函数中非常有用,可以确保在对 DOM 进行操作之前,先等待 Vue 完成相关的 DOM 更新。 下面是一个示例,演示了 await nextT…...
Matlab信号处理3:fft(快速傅里叶变换)标准使用方式
Fs 1000; % 采样频率 T 1/Fs; % 采样周期:0.001s L 1500; % 信号长度 t (0:L-1)*T; % 时间向量. 时间向量从0开始递增,0s~1.499sS 0.7*sin(2*pi*50*t) sin(2*pi*120*t); % 模拟原信号 X S 2*randn(size(t)); …...
Python|合并两个字典的几种方法
在Python中,有多种方法可以通过使用各种函数和构造函数来合并字典。在本文中,我们将讨论一些合并字典的方法。 1. 使用方法update() 通过使用Python中的update()方法,可以将一个列表合并到另一个列表中。但是在这种情况下,第二个…...
ElementUI浅尝辄止24:Message 消息提示
常用于主动操作后的反馈提示。与 Notification 的区别是后者更多用于系统级通知的被动提醒。 1.如何使用? Message 在配置上与 Notification 非常类似,所以部分 options 在此不做详尽解释,可以结合 Notification 的文档理解它们。Element 注…...
做康复医院网站/集团网站推广
大概的思路:1、读取xml文件2、当一个下拉框选中某选项时,根据该选项,当前节点指向下一层,进入下一层下拉框的设置3、取消当前下拉框的禁用,禁用下一层的下拉框4、清空当前下拉框的选项5、根据当前节点读取xml的数据&am…...
东营网站建设天锐科技/友情链接导航
目前市面上双机热备软件厂家比较多,要想一一了解费时费力。今天我们小编就给大家来详细介绍几款双机热备软件。 一、Skybility HA Skybility HA 提供的双机高可用系统解决方案,为用户提供了具有单点故障容错能力的系统平台。它采用主服务发生故障时备服…...
更改wordpress地址/seo自学网官方
kotlin相比java的一些变化方法名fun,变量和参数命名,前面是名称,后面是类型创建对象不用new ,直接对象名加括号控件不用findeviewbyid重写override,改为写在前面继承用分号:,实现用逗号,!!后的对象不可为nullÿ…...
想做外贸去哪个网站做/站群seo
使用Script中的Defer属性。script中的defer属性默认情况下是false的。也就是说:如果是编写脚本的时候加入defer属性,那么浏览器在下载脚本的时候就不必立即对其进行处理,而是继续对页面进行下载和解析,这样会提高下载的性能。这样…...
二维码生成器在线制作图片/seo检查工具
SQL2005数据库数据库SQL Server2005设计与应用1.数据库:数据存放的仓库 DataBase DB层次模型网状模型关系模型:二维表格 sql2.应用:数据库设计原理***得到一个数据库原形(理论)(E-R图)3.数据库软件:数据库管理系统DataBase Management System ࿰…...
二级域名做城市分网站/百度搜索引擎收录入口
作者:Eaglet 随着.Net技术的发展,.Net技术被逐渐应用到很多大型的应用软件项目中。这些项目的规模越来越大,很多项目中除了自己的代码外还引用了很多第三方的.net组件。同时很多项目又被应用到很多关键的部门,软件系统的稳定性越来…...