HW数通IA笔记2-网络参考模型

目录

零、本章主要内容

一、应用和数据

二、网络参考模型与标准协议

2.2 TCP/IP参考模型

2.3 TCP/IP常见协议

2.3.1 应用层

2.3.2 传输层

2.3.3 网络层

2.3.4 数据链路层

2.3.5 物理层

2.4 常见的协议标准化组织

三、数据的通信过程


零、本章主要内容

1、理解数据的定义及传递过程

2、网络参考模型概念及优势

3、常见的标准协议

4、数据封装与解封装过程

一、应用和数据

应用的存在,是为了满足人们的各种需求,比如访问网页,在线游戏,在线视频等。 伴随着应用会有信息的产生。比如文本,图片,视

频等都是信息的不同呈现方式。

在计算机领域,数据是各种信息的载体。 数据传输大部分应用程序所产生的数据需要在不同的设备之间传递。

计算机只能识别0和1的组成的电子数据(digital data)。它不具备读取各种信息的能力,所以信息需要通过一定的规则翻译成数据。

而对人来说,我们不具备读取电子数据的能力,所以在读取信息的时候,需要将数据转成人能理解的信息。

对于一名网络工程师来说,需要更关注数据的端到端传递的过程。

问题:一个应用程序是否需要完成数据的产生到传递的整个过程呢?

二、网络参考模型与标准协议

2.1 OSI参考模型

OSI 模型(Open Systems Interconnection Model),由国际化标准组织ISO (The International Organization for Standardization ) 收录在

ISO 7489标准中并于1984年发布。

OSI参考模型又被称为七层模型,由下至上依次为:

物理层:在设备之间传输比特流,规定了电平、速度和电缆针脚等物理特性。

数据链路层:将比特组合成字节,再将字节组合成帧,使用链路层地址(以太网使用MAC地址)来访问介质,并进行差错检测。

网络层:定义逻辑地址,供路由器确定路径,负责将数据从源网络传输到目的网络。

传输层:提供面向连接或非面向连接的数据传递以及进行重传前的差错检测。

会话层:负责建立、管理和终止表示层实体之间的通信会话。该层的通信由不同设备中的应用程序之间的服务请求和响应组成。

表示层:提供各种用于应用层数据的编码和转换功能,确保一个系统的应用层发送的数据能被另一个系统的应用层识别。

应用层:OSI参考模型中最靠近用户的一层,为应用程序提供网络服务。

2.2 TCP/IP参考模型

因为OSI协议栈比较复杂,且TCP和IP两大协议在业界被广泛使用,所以TCP/IP参考模型成为了互联网的主流参考模型。

TCP/IP模型在结构上与OSI模型类似,采用分层架构,同时层与层之间联系紧密。 TCP/IP标准参考模型将OSI中的数据链路层和物理层

合并为网络接入层,这种划分方式其实是有悖于现实协议制定情况的,故融合了TCP/IP标准模型和OSI模型的TCP/IP对等模型被提出,

后面的讲解也都将基于这种模型。

2.3 TCP/IP常见协议

2.3.1 应用层

        应用层为应用软件提供接口,使应用程序能够使用网络服务。应用层协议会指定使用相应的传输层协议,以及传输层所使用的端口等。

HTTP     80 (TCP) 超文本传输协议,提供浏览网页服务

Telnet     23 (TCP) 远程登陆协议,提供远程管理服务

FTP     20、21 (TCP) 文件传输协议,提供互联网文件资源共享服务

SMTP     25 (TCP) 简单邮件传输协议,提供互联网电子邮件服务

TFTP     69 (UDP) 简单文件传输协议,提供简单的文件传输服务

DNS  域名称解析服务,用于实现从主机域名到IP地址之间的转换。

2.3.2 传输层

        传输层协议接收来自应用层协议的数据,封装上相应的传输层头部,帮助其建立“端到端”(Port to Port)的连接。 传输层的PDU被称为Segment(段)。

TCP (Transmission Control Protocol,传输控制协议) :一种面向连接的、可靠的传输层通信协议,由IETF的RFC 793定义。为应用

程序提供可靠的面向连接的通信服务。目前,许多流行的应用程序都使用TCP。

UDP(User Datagram Protocol,用户数据报协议):一种简单的无连接的传输层协议,由IETF的RFC 768定义。提供了无连接通信,

且不对传送数据包进行可靠性的保证。

问题:TCP相对UDP的安全性体现在哪里

2.3.2.1 三次握手:任何基于TCP的应用,在发送数据之前,都需要由TCP进行“三次握手”建立连接。

TCP连接建立的详细过程如下: 由TCP连接发起方(图中PC1),发送第一个SYN位置1的TCP报文。初始序列号a为一个随机生成的数字,因为没收到过来自PC2的任何报文,所以确认序列号为0 ; 接收方(图中PC2)接收到合法的SYN报文之后,回复一个SYN和ACK置1的TCP报文。初始序列号b为一个随机生成的数字,同时因为此报文是回复给PC1的报文,所以确认序列号为a+1; PC1接收到PC2发送的SYN和ACK置位的TCP报文后,回复一个ACK置位的报文,此时序列号为a+1,确认序列号为b+1。PC2收到之后,TCP双向连接建立。

2.3.2.2 TCP的序列号与确认序列号:TCP使用序列号和确认序列号字段实现数据的可靠和有序传输。

假设PC1要给PC2发送一段数据,传输过程如下: 1. PC1将全部待TCP发送的数据按照字节为单位编上号。假设第一个字节的编号为“a+1”,第二个字节的序号为“a+2”,依次类推。 2. PC1会把每一段数据的第一个字节的编号作为序列号(Sequence  number),然后将TCP报文发送出去。 3. PC2在收到PC1发送来的TCP报文后,需要给予确认同时请求下一段数据,如何确定下一段数据呢?序列号( a+1 )+载荷长度=下一段数据的第一个字节的序号(a+1+12) 4. PC1在收到PC2发送的TCP报文之后,发现确认序列号为“a+1+12” ,说明“a+1”到“a+12”这一段的数据已经被接受,需要从“a+1+12”开始发送。 为了提升发送效率,也可以一次性发送多段数据,由接收方统一确认。

注意:

客户端使用的源端口一般随机分配,目标端口则由服务器的应用指定;

源端口号一般为系统中未使用的,且大于1023;

目的端口号为服务端开启的应用(服务)所侦听的端口,如HTTP缺省使用80。

2.3.2.3 窗口滑动机制:TCP通过滑动窗口机制来控制数据的传输速率。

2.3.2.4 四次挥手:当数据传输完成,TCP需要通过“四次挥手”机制断开TCP连接,释放系统资源。

TCP支持全双工模式传输数据,这意味着同一时刻两个方向都可以进行数据的传输。

在传输数据之前,TCP通过三次握手建立的实际上是两个方向的连接,因此在传输完毕后,两个方向的连接必须都关闭。

如图所示:

1. 由PC1发出一个FIN字段置”1 ”的不带数据的TCP段;

2. PC2收到PC1发来的FIN置位的TCP报文后,会回复一个ACK置位的TCP报文。

3. 若PC2也没有需要发送的数据,则直接发送FIN置位的TCP报文。假设此时PC2还有数据要发送,那么当PC2发送完这些数据之后会发送一个FIN置位的TCP报文去关闭连接。

4. PC1收到FIN置位的TCP报文,回复ACK报文,TCP双向连接断开。

2.3.3 网络层

网络层 IP(Internet Protocol,互联网协议): 将传输层的数据封装成数据包并完成源站点到目的站点的转发,提供无连接的、不可靠的服务。网络层的PDU被称为Packet(包)。

IGMP(Internet Group Management Protocol,因特网组管理协议):负责IP组播成员管理的协议。它用来在IP主机和与其直接相邻的组播路由器之间建立、维护组播组成员关系。

ICMP(Internet Control Message Protocol,网际报文控制协议):基于IP协议在网络中发送控制消息,提供可能发生在通信环境中的各种问题反馈。通过这些信息,使管理者可以对所发生的问题作出诊断,然后采取适当的措施解决。

当采用IP作为网络层协议时,通信的双方都会被分配到一个“独一无二”的IP地址来标识自己。

IP地址可被写成32位的二进制整数值形式,但为了方便人们阅读和分析,它通常被写成点分十进制的形式,即四个字节被分开用十进制表示,中间用点分隔,比如192.168.1.1。

IP数据包的封装与转发: 网络层收到上层(如传输层)协议传来的数据时候,会封装一个IP报文头部,并且把源和目的IP地址都添加到该头部中。

中间经过的网络设备(如路由器),会维护一张指导IP报文转发的“地图”——路由表,通过读取IP数据包的目的地址,查找本地路由表后转发IP数据包。

IP数据包最终到达目的主机,目的主机通过读取目的IP地址确定是否接受并做下一步处理。

除了IP协议外,网络层中还有如OSPF、IS-IS、BGP等各种路由协议帮助路由器建立路由表,ICMP帮忙进行网络的控制和状态诊断。

2.3.4 数据链路层

数据链路层位于网络层和物理层之间,可以向网络层的IP、IPv6等协议提供服务。数据链路层的PDU被称为Frame(帧)。以太网

(Ethernet)是最常见的数据链路层协议。

数据链路层向网络层提供“段内通信”。 负责组帧、物理编址、差错控制等功能。

常见的数据链路层协议有:以太网、PPPoE、PPP等。

以太网是一种广播式数据链路层协议,支持多点接入。 个人电脑的网络接口遵循的就是以太网标准。 一般情况下,一个广播域对应着一个IP网段。

MAC (Media Access Control)地址在网络中唯一标识一个网卡,每个网卡都需要且会有唯一的一个MAC地址。MAC地址由48比特(6个字节)长,12位的16进制数字组成。例如:48-A4-72-1C-8F-4F MAC用于在一个IP网段内,寻址找到具体的物理设备。 工作在数据链路层的设备。例如以太网交换机,会维护一张MAC地址表,用于指导数据帧转发。

ARP (Address Resolution Protocol)地址解析协议: 根据已知的IP地址解析获得其对应的MAC地址。ARP(Address Resolution

Protocol,地址解析协议)是根据IP地址获取数据链路层地址的一个TCP/IP协议。

ARP是IPv4中必不可少的一种协议,它的主要功能是:

将IP地址解析为MAC地址;

维护IP地址与MAC地址的映射关系的缓存,即ARP表项;

实现网段内重复IP地址的检测。

ARP工作原理

网络设备一般都有一个ARP缓存(ARP Cache)。ARP缓存用来存放IP地址和MAC地址的关联信息。

在发送数据前,设备会先查找ARP缓存表。如果缓存表中存在对方设备的ARP表项,则直接采用该表项中的MAC地址来封装帧,然后将

帧发送出去。如果缓存表中不存在相应信息,则通过发送ARP Request报文来获得它。

学习到的IP地址和MAC地址的映射关系会被放入ARP缓存表中存放一段时间。在有效期内(缺省:180s),设备可以直接从这个表中查

找目的MAC地址来进行数据封装,而无需进行ARP查询。过了这段有效期,ARP表项会被自动删除。

如果目标设备位于其他网络,则源设备会在ARP缓存表中查找网关的MAC地址。然后将数据发送给网关。最后网关再把数据转发给目的设备。如下图示例:

主机1的ARP缓存表中不存在主机2的MAC地址,所以主机1会发送ARP Request来获取目的MAC地址。

ARP Request报文封装在以太帧里。帧头中的源MAC地址为发送端主机1的MAC地址。

此时,由于主机1不知道主机2的MAC地址,所以目的MAC地址为广播地址FF-FF-FF-FF-FF-FF。 ARP Request报文中包含发送端MAC

地址、发送端IP地址、目的端MAC地址、目的端IP地址,其中目的端MAC地址的值为0。

ARP Request报文会在整个网络上传播,该网络中所有主机包括网关都会接收到此ARP Request报文。

所有的主机接收到该ARP Request报文后,都会检查它的目的端IP地址字段与自身的IP地址是否匹配。如果不匹配,则该主机将不会响

应该ARP Request报文。如果匹配,则该主机会将ARP请求报文中的发送端MAC地址和发送端IP地址信息记录到自己的ARP缓存表中,

然后通过ARP Reply报文进行响应。

主机2会向主机1回应ARP Reply报文。 ARP Reply报文中的发送端IP地址是主机2自己的IP地址,目的端IP地址是主机1的IP地址,目的

端MAC地址是主机1的MAC地址,发送端MAC地址是自己的MAC地址,同时操作类型被设置为Reply。 ARP Reply报文通过单播传

送。        

主机1收到ARP Reply以后,会检查ARP报文中目的端IP地址字段与自身的IP地址是否匹配。如果匹配,ARP报文中的发送端MAC地址和

发送端IP地址会被记录到主机1的ARP缓存表中。

2.3.5 物理层

数据到达物理层之后,物理层会根据物理介质的不同,将数字信号转换成光信号、电信号或者是电磁波信号。 物理层的PDU被称为比特流(Bitstream)。 

物理层位于模型的最底层: 负责比特流在介质上的传输。 规范了线缆、针脚、电压、接口等物理特性规范。 常见的传输介质有:双绞线、光纤、电磁波等。

物理层常见传输介质有

双绞线:当今以太网最常见的传输介质

按照抗电磁干扰能力还可以分为: STP-屏蔽双绞线 UTP-非屏蔽双绞线 光纤传输

按照功能部件可分为: 光纤:光传输介质,简单的说,就是一根玻璃纤维,用于约束光传输的通道。 光模块:将电信号与光信号互转的

器件,产生光信号。 串口电缆在WAN(Wide Area Network,广域网)中大规模使用

根据WAN线路类型不同,串口电缆在设备上连接的接口类型也不同:异/同步串口、ATM接口、POS接口、CE1/PRI接口等。

无线信号的传输可以通过电磁波进行,例如:无线路由器将数据通过调制以电磁波发送出去,移动终端的无线网卡将电磁波解调,得到

数据,完成从无线路由器到移动终端的数据传输。

2.4 常见的协议标准化组织

IETF(Internet Engineering Task Force) 负责开发和推广互联网协议(特别是构成TCP/IP协议族的协议)的志愿组织,通过RFC发布新的

或者取代老的协议标准。

IEEE(Institute of Electrical and Electronics Engineers) IEEE制定了全世界电子、电气和计算机科学领域30%左右的标准,比较知名的有

IEEE802.3(Ethernet)、IEEE802.11(WiFi)等。

ISO(International Organization for Standardization) 在制定计算机网络标准方面,ISO是起着重大作用的国际组织,如OSI模型,定义于

ISO/IEC 7498-1。

三、数据的通信过程

假设你正在通过网页浏览器访问华为官网,当你输入完网址,敲下回车后,计算机内部会发生下列事情:

1. IE浏览器(应用程序)调用HTTP(应用层协议),完成应用层数据的封装(图中DATA还应包括HTTP头部,此处省略) 。

2. HTTP依靠传输层的TCP进行数据的可靠性传输,将封装好的数据传递到TCP模块。

3. TCP模块给应用层传递下来的Data添加上相应的TCP头部信息(源端口、目的端口等)。此时的PDU被称作Segment(段)。

4. 在IPv4网络中,TCP模块会将封装好的Segment传递给网络层的IPv4模块(若在IPv6环境,会交给IPv6模块进行处理)。

5. IPv4模块在收到TCP模块传递来的Segment之后,完成IPv4头部的封装,此时的PDU被称为Packet(包)。

6. 由于使用了Ethernet作为数据链路层协议,故在IPv4模块完成封装之后,会将Packet交由数据链路层的Ethernet模块(例如以太网卡)处理。

7. Ethernet模块在收到IPv4模块传递来的Packet之后,添加上相应的Ethernet头部信息和FCS帧尾,此时的PDU被称为Frame(帧)。

8. 在Ethernet模块封装完毕之后,会将数据传递到物理层。

9. 根据物理介质的不同,物理层负责将数字信号转换成电信号,光信号,电磁波(无线)信号等。 10. 转换完成的信号在网络中开始传递。

一般情况下:

网络中的二层设备(如以太网交换机)只会解封装数据的二层头部,根据二层头部的信息进行相应的“交换”操作。

网络中的三层设备(如路由器)只会解封装到三层头部,并且根据三层头部的信息进行相应的“路由”操作。 

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

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

相关文章

SpringBoot集成kafka-生产者发送消息

springboot集成kafka发送消息 1、kafkaTemplate.send()方法1.1、springboot集成kafka发送消息Message对象消息1.2、springboot集成kafka发送ProducerRecord对象消息1.3、springboot集成kafka发送指定分区消息 2、kafkaTemplate.sendDefault()方法3、kafkaTemplate.send(...)和k…

关于elementui table组件 —— 竖向表格

前端模拟数据方式&#xff1a; html代码&#x1f447;&#xff1a; <template><el-table :data"tableData" style"width: 60%;margin-top:20px" stripe :show-header"false" border :row-style"rowStyle"><el-table…

MyBatis如何自定义项目中SQL日志

说明&#xff1a;用过MyBatis框架的同学们都知道&#xff0c;打印SQL日志&#xff0c;可以通过在application.yml配置文件中加入下面配置来设置&#xff1a; mybatis:configuration:log-impl: org.apache.ibatis.logging.stdout.StdOutImpl但打印出来的SQL如下&#xff0c;丑陋…

机器学习/数据分析--通俗语言带你入门决策树(结合分类和回归案例)

&#x1f368; 本文为&#x1f517;365天深度学习训练营 中的学习记录博客&#x1f356; 原作者&#xff1a;K同学啊 前言 机器学习是深度学习和数据分析的基础&#xff0c;接下来将更新常见的机器学习算法注意&#xff1a;在打数学建模比赛中&#xff0c;机器学习用的也很多&a…

NVIDIA将在Hot Chips 2024会议上展示Blackwell服务器装置

NVIDIA 将在 Hot Chips 2024 上展示其 Blackwell 技术堆栈&#xff0c;并在本周末和下周的主要活动中进行会前演示。对于 NVIDIA 发烧友来说&#xff0c;这是一个激动人心的时刻&#xff0c;他们将深入了解NVIDIA的一些最新技术。然而&#xff0c;Blackwell GPU 的潜在延迟可能…

企事业单位数据资料防外泄如何实现?这5个小技巧等你来掌握!

企事业单位的数据资料防外泄是一项重要的任务&#xff0c;它关乎企业的核心竞争力和信息安全。 以下是五个实用的小技巧&#xff0c;可以帮助企事业单位有效地防止数据外泄&#xff1a; 1. 数据加密 技巧说明&#xff1a;通过对敏感数据进行加密处理&#xff0c;即使数据被非…

外贸管理软件一般都有哪些功能

外贸管理软件通常被设计来帮助国际贸易企业高效管理其业务流程。这类软件的功能多样&#xff0c;这里以神卓外贸管理软件为例&#xff0c; 以下是一些常见的核心功能模块&#xff1a; 客户关系管理 (CRM) 客户信息管理询盘与报价管理销售机会跟踪 订单管理 订单生成与处理发货…

Sparse Kernel Canonical Correlation Analysis

论文链接&#xff1a;https://arxiv.org/pdf/1701.04207 看这篇论文终于看懂核函数了。。谢谢作者

Azure OpenAI citations with message correlation

题意&#xff1a;“Azure OpenAI 引用与消息关联” 问题背景&#xff1a; I am trying out Azure OpenAI with my own data. The data is uploaded to Azure Blob Storage and indexed for use with Azure AI search “我正在尝试使用自己的数据进行 Azure OpenAI。数据已上传…

中介者模式详解

中介者模式 简介通过引入一个中介者对象来封装和协调多个对象之间的交互&#xff0c;从而降低对象间的耦合度。 人话:就是两个类或者系统之间, 不要直接互相调用, 而是要中间的类来专门进行交互。 举个例子 比如两个国家之间(关系差, 没有大使馆), 需要联合国作为中介进行对话…

公园的客流统计意义何在,有哪些积极作用

随着城市化进程的加快&#xff0c;人们越来越重视休闲娱乐和亲近自然的机会。公园作为市民休闲放松的重要场所&#xff0c;其管理和维护的质量直接影响着市民的生活质量和城市的形象。客流统计在公园管理中扮演着重要角色&#xff0c;不仅可以帮助公园管理者更好地理解游客的行…

大模型网络安全能力和风险评估框架Cybench

大模型网络安全能力和风险评估框架Cybench 前言 语言模型在网络安全领域的双重应用&#xff0c;既可以用于攻击&#xff08;如识别并利用代码漏洞&#xff09;&#xff0c;也可以用于防御&#xff08;如渗透测试和漏洞检测&#xff09;。当前的研究包括对CTF挑战、代码片段中的…

LLM 培训

步骤 1 # 预训练 步骤 1 # 预训练 在预训练阶段,该模型被训练为互联网规模数据上的下一个单词预测器。 在预训练阶段 从互联网上收集大量多样化的数据集。此数据集包含来自各种来源的文本,以确保模型能够学习广泛的语言模式。清理和预处理数据以消除噪音、格式问题和不相关的…

CSS文本样式(一)

一、font-family 1、font-family属性 font-family​ &#xff1a;属性指定元素的​字体​&#xff0c;语法格式如下&#xff1a; ​font-family​: 字体1,字体2,...; 有两种字体系列名称&#xff1a; ​字体系列​&#xff1a;特定的字体系列&#xff08;如Times New Rom…

大型公司网络系统集成方案

一、前言 1.1.公司综合信息系统建设目标 -----------------------------------------------------3 1.2. 用户具体需求----------------------------------------------------------------------------4 1.3.公司综合信息系统建设原则 -------------------------------…

SpringBoot集成kafka接收对象消息

SpringBoot集成kafka接收对象消息 1、生产者2、消费者3、工具类4、消息实体对象5、配置文件6、启动类7、测试类8、测试结果 1、生产者 package com.power.producer;import com.power.model.User; import com.power.util.JSONUtils; import org.springframework.kafka.core.Kaf…

基于SSM的学生信息管理系统的设计与实现 (含源码+sql+视频导入教程+文档+VISIO图)

&#x1f449;文末查看项目功能视频演示获取源码sql脚本视频导入教程视频 1 、功能描述 基于SSM的学生信息管理系统12拥有三种角色&#xff1a;学生、教师、管理员 学生&#xff1a;选课、查看已选课程、查看成绩 教师&#xff1a;成绩管理 管理员&#xff1a;课程管理、学生…

两个实用的Python编程技巧

一、变量类型声明技巧 虽然在Python中可以不用声明变量的类型&#xff0c;但是为了加快程序的运算速度&#xff0c;减少不必要的bug&#xff0c;我们可以在定义变量之初就把它的类型确定&#xff0c;这样可以更好地传输变量值。如下面的例子。 我们定义了两个变量&#xff0c…

linux 系统备份与恢复方法及解决方案

&#x1f600;前言 本篇博文是关于 linux 系统备份与恢复&#xff0c;希望你能够喜欢 &#x1f3e0;个人主页&#xff1a;晨犀主页 &#x1f9d1;个人简介&#xff1a;大家好&#xff0c;我是晨犀&#xff0c;希望我的文章可以帮助到大家&#xff0c;您的满意是我的动力&#x…

Jmeter提取token并设置为全局变量

参考文章&#xff1a;Jmeter提取token并设置为全局变量&#xff08;最详细的步骤&#xff09;_jmeter提取token到全局变量-CSDN博客 一般来说&#xff0c;系统内大多数接口&#xff0c;都需要先获取登录后的token值&#xff0c;所以我们需要创建一个获取token的接口&#xff0c…