《CCNA学习指南:Cisco网络设备互连(ICND1)(第4版)》——2.4节数据通信流程

简介:

本节书摘来自异步社区《CCNA学习指南:Cisco网络设备互连(ICND1)(第4版)》一书中的第2章,第2.4节数据通信流程,作者【美】Anthony Sequeira,更多章节内容可以访问云栖社区“异步社区”公众号查看

2.4 数据通信流程
CCNA学习指南:Cisco网络设备互连(ICND1)(第4版)
网络上的所有通信均来自源位置,并将被发送到目标位置。使用OSI参考模型中列出的全部或部分层的网络协议在设备间传输数据。您应该还记得,第7层是应用程序通信协议的一部分,而第1层则是媒体通信协议的一部分。由于协议的各层结构,数据帧能够游走于整个计算机网络。我们通过以下方法从网络中的一台设备传送数据:将信息从应用向下传送到协议栈,在模型各层分别添加适当的报头。这种将数据传送到协议栈并添加报头和报尾的方法称为封装。封装数据并通过网络传送数据后,接收设备将删除添加的信息,并以报头中的信息作为指引将数据传送到上至协议栈下至适当应用。

数据封装是一个重要的网络概念。其功能在于,促进设备上的类似的层(称为对等层)交流寻址等关键参数和控制信息。

虽然封装看起来似乎是一个抽象概念,但其实相当简单。想象一下,您要将咖啡杯寄给另外一个城市的某位好友。比方说我本人,希望将一个波士顿红袜队纪念版咖啡杯寄给纽约洋基队球迷朋友。如何将这个咖啡杯寄到那里呢?主要通过陆路或航空运输。肯定不能出去直接将咖啡杯丢在公路上或者扔上飞机,这样根本无法送达。需要通过一项服务取件并负责送达。因此,需要致电亲睐的物流公司,将咖啡杯交给他们运送。但是,这还不是全部,下面是完整的流程。

步骤1 将咖啡杯包装到盒子中。

步骤2 在盒子上贴上地址标签,以便物流公司查看送货地址。

步骤3 将盒子交给物流公司。

步骤4 物流公司负责将它运输到最终目的地。

该流程与协议栈用来跨网络发送数据的封装方法类似。包裹抵达后,您的好友必须反向执行这项流程。从物流公司取回包裹,查阅地址标签确定寄件人,最终打开盒子拿出咖啡杯。反向封装过程称为解封。下一节将使用网络数据(而非球队纪念版咖啡杯)更加详细地介绍封装过程和解封过程。

2.4.1 封装
如上一节中所示,数据网络封装与寄送咖啡杯的过程类似。但是,不是将咖啡杯寄送给好友,而是将信息从一台设备的应用程序发送到另一台设备的应用程序。通过网络发送的信息称为数据或数据包。

封装技术会在网络传输之前利用必要的协议信息将数据包装起来。因此,随着沿OSI参考模型的各层向下传送数据,各OSI层会先向数据添加报头(如果需要会添加报尾),然后将其传送到下一层。报头和报尾包含网络设备和接收方控制信息,从而确保妥善发送交付数据,并且确保接收方能够正确解读数据。 图2-2阐释了封装的工作原理,它显示了数据通过各层的方式。


0ce2c0abfb48b2953aece91e3a0a118eadd59cfa

数据封装的步骤如下。

步骤1 用户数据从应用程序发送至应用层。

步骤2
应用层向用户数据添加应用层报头(第7层报头)。第7层报头和原始用户数据变成向下传送到表示层的数据。

步骤3 表示层向数据添加表示层报头(第6层报头)。该数据随即变成向下传送到会话层的数据。

步骤4 会话层向数据添加会话层报头(第5层报头)。该数据随即变成向下传送到传输层的数据。

步骤5 传输层向数据添加传输层报头(第4层报头)。该数据随即变成向下传送到网络层的数据。

步骤6 网络层向数据添加网络层报头(第3层报头)。该数据随即变成向下传送到数据链路层的数据。

步骤7
数据链路层向数据添加数据链路层报头和报尾(第2层报头和报尾)。第2层报尾通常是帧校验序列(FCS)。接收方使用FCS来检测数据是否出错。该数据随即变成向下传送到物理层的数据。

步骤8 接着物理层依据介质类型定义将以位(bit)为单位的数据传送到网络介质。

2.4.2 解封
当远程设备接收到位序列时,远程设备物理层会将以位为单位的数据传送到数据链路层进行操作。数据链路层将执行以下流程,人们将其称为解封。

步骤1 检查数据链路报尾(即FCS),以查看数据是否出错。

步骤2 如果数据出错,则予以丢弃。

步骤3 如果数据没有出错,则数据链路层会读取并解释数据链路报头中的控制信息。

步骤4
剥离数据链路层的报头和报尾,然后根据数据链路层报头中的控制信息将其余的数据向上传送到网络层。 随后的每个层都会执行类似的解封过程,如图2-3所示。


200facf8eef63cf9d2d5909cea3c763585f1cc2d

将解封想象为读取包裹上的地址以确定是否寄送给您。如果确实是寄送给您,则打开并取出包裹物品。

相关文章
|
4月前
|
存储 算法 内存技术
计算机网络概论和数据通信基础(下)
计算机网络概论和数据通信基础
60 0
|
4月前
|
存储 机器学习/深度学习 监控
【网络工程师】<软考中级>数据通信基础
【1月更文挑战第27天】【网络工程师】<软考中级>数据通信基础
|
4月前
|
Java
【Netty 网络通信】Netty 工作流程分析
【1月更文挑战第9天】Netty 工作流程分析
|
4月前
状态码对于理解HTTP请求和响应的流程,以及调试网络问题非常重要
【5月更文挑战第15天】HTTP状态码由三位数字表示,分为1xx-5xx五类。1xx为信息响应,2xx表示成功,如200(请求成功)、201(创建成功)。3xx是重定向,如301(永久移动)、302(临时重定向)。4xx表示客户端错误,如400(坏请求)、404(未找到)。5xx是服务器错误,包括500(内部服务器错误)和503(服务不可用)。这些状态码用于理解请求响应流程和调试网络问题。
44 1
|
8天前
|
网络协议 C语言
C语言 网络编程(十一)TCP通信创建流程---服务端
在服务器流程中,新增了绑定IP地址与端口号、建立监听队列及接受连接并创建新文件描述符等步骤。`bind`函数用于绑定IP地址与端口,`listen`函数建立监听队列并设置监听状态,`accept`函数则接受连接请求并创建新的文件描述符用于数据传输。套接字状态包括关闭(CLOSED)、同步发送(SYN-SENT)、同步接收(SYN-RECEIVE)和已建立连接(ESTABLISHED)。示例代码展示了TCP服务端程序如何初始化socket、绑定地址、监听连接请求以及接收和发送数据。
|
8天前
|
C语言
C语言 网络编程(七)UDP通信创建流程
本文档详细介绍了使用 UDP 协议进行通信的过程,包括创建套接字、发送与接收消息等关键步骤。首先,通过 `socket()` 函数创建套接字,并设置相应的参数。接着,使用 `sendto()` 函数向指定地址发送数据。为了绑定地址,需要调用 `bind()` 函数。接收端则通过 `recvfrom()` 函数接收数据并获取发送方的地址信息。文档还提供了完整的代码示例,展示了如何实现 UDP 的发送端和服务端功能。
|
8天前
|
网络协议 C语言
C语言 网络编程(十)TCP通信创建流程---客户端
在TCP通信中,客户端需通过一系列步骤与服务器建立连接并进行数据传输。首先使用 `socket()` 函数创建一个流式套接字,然后通过 `connect()` 函数连接服务器。连接成功后,可以使用 `send()` 和 `recv()` 函数进行数据发送和接收。最后展示了一个完整的客户端示例代码,实现了与服务器的通信过程。
|
4月前
|
安全 测试技术 网络架构
【专栏】编写网络设备割接方案的七个步骤,包括明确割接目标、收集信息、制定计划、设计流程、风险评估、准备测试环境和编写文档。
【4月更文挑战第28天】本文介绍了编写网络设备割接方案的七个步骤,包括明确割接目标、收集信息、制定计划、设计流程、风险评估、准备测试环境和编写文档。通过实际案例分析,展示了如何成功完成割接,确保业务连续性和稳定性。遵循这些步骤,可提高割接成功率,为公司的网络性能和安全提供保障。
563 0
|
11天前
|
测试技术 持续交付 开发者
Xamarin 高效移动应用测试最佳实践大揭秘,从框架选择到持续集成,让你的应用质量无敌!
【8月更文挑战第31天】竞争激烈的移动应用市场,Xamarin 作为一款优秀的跨平台开发工具,提供了包括单元测试、集成测试及 UI 测试在内的全面测试方案。借助 Xamarin.UITest 框架,开发者能便捷地用 C# 编写测试案例,如登录功能测试;通过 Xamarin 模拟框架,则可在无需真实设备的情况下模拟各种环境测试应用表现;Xamarin.TestCloud 则支持在真实设备上执行自动化测试,确保应用兼容性。结合持续集成与部署策略,进一步提升测试效率与应用质量。掌握 Xamarin 的测试最佳实践,对确保应用稳定性和优化用户体验至关重要。
24 0
|
3月前
|
安全 网络协议 算法
Android网络基础面试题之HTTPS的工作流程和原理
HTTPS简述 HTTPS基于TCP 443端口,通过CA证书确保服务器身份,使用DH算法协商对称密钥进行加密通信。流程包括TCP握手、证书验证(公钥解密,哈希对比)和数据加密传输(随机数加密,预主密钥,对称加密)。特点是安全但慢,易受特定攻击,且依赖可信的CA。每次请求可能复用Session ID以减少握手。
45 2