【网络】协议与网络传输

目录

一、协议

1.1 认识协议

1.2 协议分层

二、OSI七层模型

三、TCP/IP五(四)层模型

四、网络传输

4.1 数据包封装与分用

4.2 网络传输基本流程

4.2.1 以太网通信

(1)原理

(2)数据碰撞问题

(3)网卡工作模式和局域网

4.2.2 令牌环网

4.2.3 认识IP地址和路由器


一、协议

1.1 认识协议

“协议”是一种约定,计算机中通过高低电平代表1和0就是一种约定,要通过01信号传输各种不同的信息,就需要更多的约定

例如我们平时收快递的时候,不止收到了物品,还有快递包装上贴着的快递单。快递单上就有许多约定好的字段,例如姓名字段、电话字段、地址字段等,这就是一个快递公司约定的协议

又例如以前还在用座机通信时,打电话要花钱。去上学时想和家里报个平安但是又想省钱,就可以跟家里人约定电话响一声代表平安,响两声代表......这也是我们和家里人约定的一个协议

我们的语言也是协议,摩斯密码也是协议,协议都是由人们共同约定并赋予其含义的。 

市场中那么多的公司,有生产硬件的,有开发软件的,还有写操作系统的......如何让不同厂商之间生产的计算机能够相互顺畅的通信呢?就需要有人制定一个共同的标准,大家都来遵守这个标准,这就是网络协议

1.2 协议分层

在实际中,协议也分为多层,每层协议各司其职才能完成长距离的通信

例如中国人用座机打电话进行通信,其中就可以分为语言层和通信设备层。在打电话时看似双方在直接进行沟通,但实际上是一方将数据传输到自己所用的座机,座机再将数据传输给对方的座机,对方的座机再将数据传输给对方。在语言层中双方通过汉语这个协议进行沟通,在通信设备层数据则按照座机所使用的协议进行传输

如果变更语言层,则英国人用座机通信时语言层就采用英语这个协议;如果变更通信设备层,则中国人用无线电通信时则数据按照无线电所使用的协议进行传输

实际的网络通信中则会更加复杂,需要将协议分为更多层


二、OSI七层模型

OSI(Open System Interconnection,开放系统互连)七层网络模型又称开放式系统互联参考模型,是一个逻辑上的定义和规范。其将网络从逻辑上分为了七层,每一层都有相对应的物理设备,比如交换机、路由器

OSI七层模型是一种框架性的设计方法,其最主要的功能就是帮助不同类型的主机实现数据传输。它的最大优点在于将服务、接口和协议这三个概念明确地区分开,通过七个层次化的结构模型使不同系统不同网络之间实现可靠的通讯

分层名称功能每层功能概览
7应用层针对特定应用的协议例如电子邮件有电子邮件协议、文件传输有文件传输协议、远程登录有远程登录协议
6表示层设备固有数据格式和网络标准数据格式的转换接收不同表现形式的信息,如文字流、图像、声音等
5会话层通信管理,负责建立和断开通信连接。管理传输层以下的分层何时建立连接、何时断开连接以及保持多久的连接
4传输层管理两个节点之间的数据传输,确保数据被可靠地传输到目标地址是否有数据丢失?
3网络层地址管理与路由选择经过哪个路由传递到目标地址?
2数据链路层互连设备之间传送和识别数据帧数据帧与二进制数据流之间的转换
1物理层以“0”和“1”代表电平高低,界定连接器与网线的规格二进制数据流与电子信号之间的切换,连接器与网线的规格

但OSI七层模型过于复杂且不实用,所以我们主要了解TCP/IP五(四)层模型


三、TCP/IP五(四)层模型

TCP/IP协议是一组协议的代名词,它还包括许多其他协议,组成了TCP/IP协议簇

TCP/IP通讯协议采用了五层的层级结构,其中:

  • 应用层:负责应用程序间沟通,如简单电子邮件传输(SMTP)、文件传输协议(FTP)、网络远程访问协议(Telnet)等,用户进行网络编程主要就是针对应用层
  • 传输层:负责两台主机之间的数据传输,如传输控制协议(TCP),能够确保数据可靠的从源主机发送到目标主机
  • 网络层:负责地址管理和路由选择,例如在IP协议中通过IP地址来标识一台主机,并通过路由表的方式规划出两台主机之间的数据传输的线路(路由),路由器(Router)就工作在网络层
  • 数据链路层:负责设备之间的数据帧的传送和识别,例如网卡设备的驱动、帧同步、冲突检测、数据差错校验等工作,有以太网、令牌环网、无线LAN等标准,交换机(Switch)工作在数据链路层
  • 物理层:负责光/电信号的传递方式,例如现在以太网通用的双绞线、早期以太网采用的同轴电缆(现在主要用于有线电视)、光纤,现在的WIFI无线网使用电磁波等都属于物理层的概念。物理层的能力决定了最大传输速率、传输距离、抗干扰性等,集线器(Hub)工作在物理层

网络协议栈的结构: 

应用层:

DNS,URI,HTML,HTTP,TLS/SSL,SMTP,POP,IMAP,MIME,TELNET,SSH,FTP,SNMP,MIB,SIP,RTP,LDAP

应用程序

传输层:

TCP,UDP,UDP-Lite,SCTP,DCCP

操作系统

网络层:

ARP,IP,ICMP

数据链路层

设备驱动程序和网络接口

物理层:硬件

网络协议栈的层次结构中,每一层都有协议,其中传输层和网络层最重要,因此作为名字的一部分

物理层我们一般考虑的比较少,因此也可以称为TCP/IP四层模型

网络协议栈和我们的操作系统息息相关,物理层的网卡属于硬件,网络通信的本质就是在访问硬件(网卡)。传输层和网络层是Linux内核中的模块,提供对应的系统调用以供应用层的开发者使用网卡


四、网络传输

4.1 数据包封装与分用

在逻辑上,数据直接在通信双方之间传递,但实际上网络通信时发送的数据都需要自上而下贯穿发送者的协议栈到达底层,并经过网络传输到接收者的协议栈底层,再自下而上贯穿接收者的协议栈到达上层

对于用户发送的数据包,不同的协议层对其有不同的称谓。数据包在传输层叫做(segment),在网络层叫做数据报(datagram),在数据链路层叫做(frame)。

数据包从应用层通过协议栈发送到网络的过程中,每经过一层协议就需要加上一个数据首部(报头),这个过程称为封装,数据包称为有效载荷。在报头中通常包含一些例如报头长度、有效载荷长度等信息,不同协议的报头其格式也各不相同

有效载荷加上报头就成为一个完整的报文上层的报文传递到下层后就变为了下层的有效载荷,再经过下层封装报头后继续向下传递,这就是数据包封装的过程。到达链路层封装为帧后传输到网络中,到达目的主机后再经过层层解包将不同协议层的报头与有效载荷分离,并根据报头中的信息判断将有效载荷交给上层的哪一个协议

在解包时,下层的有效载荷变为上层协议的报文,在解包过程中根据报头中的某些字段判断其属于上层的哪个协议并传递的过程称为数据包的分用

所以通信的过程,其实就是对数据包不断的封装和解包的过程。因为这个过程在协议栈中进行,因此几乎每一层的协议,都需要具备能够将有效载荷和报头分离的能力,并且能够正确将有效载荷交付给上层对应的协议。

4.2 网络传输基本流程

跨网段的主机进行数据传输,数据帧从源主机到目标主机的传输过程中要经过一个或多个路由器

两台主机通过TCP/IP协议通信的过程如下所示:

4.2.1 以太网通信

(1)原理

每台主机在局域网中,都需要有自己唯一的一个标识

例子:我是一个老师,在上课发卷子时说“张三上来拿卷子”,这时只有张三来拿卷子,其他同学为什么不来?

一定是所有同学都听到了我的这句话,但只有张三符合我话中的“标识”,即能够标识班里同学唯一性的名字(假设无人重名),因此只有张三做出了反应。

实际上这就是以太网的通信原理,在发送数据的时候,源主机将自己要发送的数据帧在局域网中进行广播,连接局域网的每个节点都能够接收到这个帧。节点通过比较自己的MAC地址和数据帧中包含的目的地MAC地址来判断该帧是否是发往自己的,一旦确认是发给自己的,则复制该帧做进一步处理,否则将帧直接丢弃。

什么是MAC地址?每张网卡都有一个48位长度的唯一序列号,这就是MAC地址,一般以16进制数字加上冒号的形式来表示(例如08:00:27:03:fb:19)。MAC地址在网卡出厂时就确定了,不能被修改且通常是唯一的(虚拟机中的MAC地址不是真实的MAC地址,可能冲突,且有些网卡也支持用户配置MAC地址)

(2)数据碰撞问题

有时局域网中有人正在下载大量数据,或者在人多的场合中网络就会很卡。又例如网络攻击中攻击者向局域网中发送大量垃圾数据,导致以太网发送数据碰撞问题

因此,以太网中发送数据帧的主机都需要执行碰撞避免的机制,例如CSMA/CD协议或CSMA/CA协议。简单来说就是错峰出行,尽量避免同时发送数据帧,尽可能确保任何时刻内局域网中只有一台主机在发送数据帧,并且发送数据帧的主机需要进行碰撞检测

局域网中的所有主机共同构成碰撞域,主机越多,就越容易发生数据碰撞。交换机可以减少数据碰撞发生的概率,其原理是如果两台需要通信的主机都在交换机的一侧,那么交换机就不会再将数据传输到另一侧;如果一侧发生了数据碰撞,交换机不会将碰撞的数据传输到另一侧。交换机实现了划分碰撞域的功能。

局域网的通信原理基于碰撞域和碰撞检测

(3)网卡工作模式和局域网

网卡有多种工作模式,其中普通模式即只接受MAC地址匹配的数据帧,其他帧一律丢弃。而混杂模式是网卡收到数据帧后即使MAC地址不匹配,也将帧向上层传递。

我们可以将局域网看作是连接到该局域网的所有主机所共享的资源,因此局域网也是临界资源。确保任何时刻内局域网中只有一台主机在发生数据帧的原因就是要保证主机对局域网的互斥访问

4.2.2 令牌环网

令牌环的原理就是获得特定令牌数据的主机才有资格向局域网中发送数据,类似局域网的锁

以太网有自己的协议,令牌环网也有自己的协议。得益于协议的分层,即使某个局域网替换了过去所使用的协议,也不会影响到其他层

4.2.3 认识IP地址和路由器

IP协议又分为IPv4版本和IPv6版本,本文中只介绍IPv4版本的IP协议

IP地址用于标识一台主机在全网内的唯一性,是一个4字节32位的整数,通常也使用“点分十进制”的字符串形式来表示IP地址,例如192.168.0.1。像这样用点分隔的每一个数字表示一个字节,范围为0~255。IP地址分为公网IP和私有IP,私有IP可能重复

IP地址也用于在网络中进行路径规划,数据帧在网络的传输中,源IP目的IP是不变的,这是数据帧最初的起点和最终的终点。就好比一个人从广州去北京旅游,他的起始出发点和最终目的地是不变的。但数据在路由器之间转发时,其源MAC地址和目的MAC地址会一直变动,MAC地址标识了数据上一次发出的路由器下一次要到达的路由器,以确保数据能够到达正确的路由器。所以MAC地址的使命只在于在某个局域网中进行路径定位

总结:IP地址标识起点和终点,MAC地址标识路径中的站点

通过判断数据帧的源IP和目的IP是否在同一子网也可以判断该数据帧是否需要被交给路由器跨网段传输

路由器也有自己的IP地址和MAC地址。一台主机在跨网段发送数据帧的过程中,首先要知道自己所在局域网中的路由器的MAC地址并填充到数据帧对应字段中,再将帧传入局域网交付给路由器。路由器在拿到帧后对其进行局部解包得到数据帧的目的IP

前面提到,路由器工作在网络层,因此路由器在对报文进行处理后不能直接发送给对应主机,而是需要将报文传输给下层,重新封装对应局域网链路层协议的报头后再自底向上穿过协议栈传输给目标用户。

因此即使不同局域网使用的链路层协议不同,对于路由器之上的协议层而言是没有差异的,路由器屏蔽了底层网络的差异化。

关于协议和网络传输等更多细节,在后续会慢慢提及

完.

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

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

相关文章

【力扣】3274. 检查棋盘方格颜色是否相同

一、题目 给你两个字符串 coordinate1 和 coordinate2,代表 8 x 8 国际象棋棋盘上的两个方格的坐标。以下是棋盘格的参考图: 如果这两个方格颜色相同,返回 true,否则返回 false。坐标总是表示有效的棋盘方格。坐标的格式总是先字…

JavaWeb12

登陆拦截 会话技术 会话:用户打开浏览器,访问web服务器的资源,会话建立,直到有一方断开连接,会话结束。在一次会话中可以包含多次请求和响应 会话跟踪:一种维护浏览器状态的方法,服务器需要识…

使用STM32CubeMX配置串口各种功能

使用STM32CubeMX配置串口各种功能 STM32CubeMX软件的安装接收空闲中断STM32CubeMX配置1.新建工程2. 选择芯片3. 选择时钟和下载方式4. 配置串口5.设置工程消息6.生成代码7.修改生成的代码 空闲中断DMA转运STM32CubeMX配置4.配置串口5.设置工程消息6.生成代码7.修改生成的代码 S…

Linux详解:文件权限

文章目录 前言Linux文件权限基础文件成员与三组权限字符 权限的修改修改文件所有者总结 前言 在浩瀚的操作系统世界中,Linux以其开源、灵活和强大的特性,成为了服务器、开发环境以及众多个人用户的首选。而在Linux的众多特性中,文件权限机制…

openEuler 22.03 使用cephadm安装部署ceph集群

目录 目的步骤规格步骤ceph部署前准备工作安装部署ceph集群ceph集群添加node与osdceph集群一些操作组件服务操作集群进程操作 目的 使用ceph官网的cephadm无法正常安装,会报错ERROR: Distro openeuler version 22.03 not supported 在openEuler上实现以cephadm安装部…

xiaolin coding 图解 MySQL笔记——事务篇

1. 事务隔离级别是怎么实现的? 数据库中的**事务(Transaction)**先开启,然后等所有数据库操作执行完成后,才提交事务,对于已经提交的事务来说,该事务对数据库所做的修改将永久生效,…

掌握 Spring Boot 中的缓存:技术和最佳实践

缓存是一种用于将经常访问的数据临时存储在更快的存储层(通常在内存中)中的技术,以便可以更快地满足未来对该数据的请求,从而提高应用程序的性能和效率。在 Spring Boot 中,缓存是一种简单而强大的方法,可以…

408——数据结构(持续更新)

文章目录 一、绪论1.1 相关概念1.2 数据结构三要素1.3 相关习题1.4 复杂度1.4.1 时间复杂度1.4.2 复杂度相关习题 二、线性表 一、绪论 1.1 相关概念 数据:数据是信息的载体,所有能被输入到计算机中,且能被计算机处理的符号的集合。如图片、…

深入浅出:开发者如何快速上手Web3生态系统

Web3作为互联网的未来发展方向,正在逐步改变传统互联网架构,推动去中心化技术的发展。对于开发者而言,Web3代表着一个充满机遇与挑战的新领域,学习和掌握Web3的基本技术和工具,将为未来的项目开发提供强大的支持。那么…

C++学习日记---第16天

笔记复习 1.C对象模型 在C中,类内的成员变量和成员函数分开存储 我们知道,C中的成员变量和成员函数均可分为两种,一种是普通的,一种是静态的,对于静态成员变量和静态成员函数,我们知道他们不属于类的对象…

Leetcode 每日一题 205.同构字符串

目录 问题描述 过题图片 示例 解决方案 代码实现 题目链接 总结 问题描述 给定两个字符串 s 和 t,判断它们是否是同构的。如果 s 中的字符可以按某种映射关系替换得到 t,那么这两个字符串是同构的。具体来说,每个出现的字符都应当映射…

C# 集合(Collection)

文章目录 前言一、动态数组(ArrayList)二、哈希表(Hashtable)三、排序列表(SortedList)四、堆栈(Stack)五、队列(Queue)六、点阵列(BitArray&…

2.5 特征降维(机器学习)

2.5 特征降维 2.5.1 降维 降维:是指在某些限定条件下,降低随机变量(特征)个数,得到一组“不相关”主变量的过程。 ndarray 维数 嵌套的层数 0维 标量 1维 向量 2维 矩阵 3维 n维 二维数组 降低的维度…

【小白学机器学习41】如何从正态分布的总体中去抽样?比较不同的取样方差的差别

目录 1 目标:使用2种方法,去从正态分布的总体中去抽样,获得样本 1.1 step1: 首先,逻辑上需要先有符合正态分布的总体population 1.2 从总体中取得样本,模拟抽样的过程 2 从正态分布抽样的方法1 3 从正态分布抽样…

框架5:SpringBoot 2 - 核心功能

SpringBoot2 - 基础入门【一 ~ 五】,详见: 六、配置文件 6.1 properties文件格式 同之前的用法。 6.2 yaml文件格式【推荐】 YAML本意:“YAML”不是一种标记语言。但在开发中,实际把它理解为:“Yet Another Markup Lan…

行为型设计模式之《责任链模式》实践

定义 责任链模式(Chain Of Responsibility Pattern)顾名思义,就是为请求创建一条处理链路,链路上的每个处理器都判断是否可以处理请求,如果不能处理则往后走,依次从链头走到链尾,直到有处理器可…

Vue前端开发-路由树配置

一个配置路由的文件由导入路由模块、创建路由对象和导出路由对象三个部分组成,在创建路由对象时,需要构建路由数组,路由数组中包括一级、二级和多级路由结构,因此,这种结构的路由配置,又称为路由树配置。 …

2.mysql 中一条更新语句的执行流程是怎样的呢?

前面我们系统了解了一个查询语句的执行流程,并介绍了执行过程中涉及的处理模块。 相信你还记得,一条查询语句的执行过程一般是经过连接器、分析器、优化器、执行器等功能模块,最后到达存储引擎。 那么,一条更新语句的执行流程又…

JavaScript根据数据生成柱形图

分析需求 // 定义一个数组来存储四个季度的数据 dataArray = []// 循环4次,获取用户输入的数据并存储到数组中 for i from 0 to 3// 获取用户输入的数据inputData = 获取用户输入的第(i + 1)季度的数据// 将数据存入数组dataArray[i] = inputData// 遍历数组,根据数据生成柱…

实验13 使用预训练resnet18实现CIFAR-10分类

1.数据预处理 首先利用函数transforms.Compose定义了一个预处理函数transform,里面定义了两种操作,一个是将图像转换为Tensor,一个是对图像进行标准化。然后利用函数torchvision.datasets.CIFAR10下载数据集,这个函数有四个常见的…