计算机tcp/ip网络通信过程

目录

(1)同一网段两台计算机通信过程

(2)不同网段的两台计算机通信过程

(3)目的主机收到数据包后的解包过程


(1)同一网段两台计算机通信过程

如果两台计算机在同一个局域网中的同一网段中,它们之间的通信链路大致如下:

1.源主机

  • 应用层生成数据。
  • 传输层将数据封装成段(TCP)或数据报(UDP)。
  • 网络层将段或数据报封装成IP数据包,并设置目标IP地址(即目标主机的IP地址)。
  • 数据链路层将IP数据包封装成帧,并添加MAC地址信息(源MAC地址和目标MAC地址)。

2.本地网络

  • 源主机将帧发送到本地网络。图中以太网驱动程序在链路层,以太网驱动程序是软件,它使操作系统能够与网卡进行通信和控制。网卡是硬件,它提供了与网络连接的物理接口。当操作系统需要发送数据时,它会将数据发送给以太网驱动程序,驱动程序再将数据封装成帧传递给网卡进行传输。同样地,当网卡接收到数据时,它会将数据传递给驱动程序,驱动程序再将数据传递给操作系统进行处理。以太网驱动程序与网卡之间通过特定的接口和协议进行通信,以确保数据的正确传输和接收。
  • 如果有交换机的话(一般路由器会兼有交换机的功能),网卡将帧发送到交换机中后,交换机会根据帧中的目标MAC地址查找对应的端口,并将帧转发到该端口。如果交换机不知道目标MAC地址在哪个端口,它可能会发送ARP请求来查询目标MAC地址。
  • 在没有交换机的情况下,如果局域网是一个简单的点对点或总线型网络(这在现代网络中很少见,但在某些老旧的网络架构或特定应用中可能仍然存在):
    • 点对点连接:如果局域网中只有两个主机,并且它们之间是通过点对点连接(如直接连接的两根网线或一个点对点设备)进行通信的,那么源主机发送的帧将直接到达目的主机,无需经过任何中间设备。
    • 在总线型网络中,所有的主机都连接在同一条通信电缆(称为总线)上。源主机将帧发送到本地网络后,这个帧就会在整个本地网络上进行传播。总线上的所有主机都会接收到这个帧,但是只有目标MAC地址与帧中指定的目标MAC地址相匹配的主机才会处理这个帧。其他主机则会忽略这个帧。

3.目标主机

  • 当帧到达目标主机时,数据链路层会解封装帧,提取IP数据包,并将其传递给网络层。
  • 网络层解封装IP数据包,提取传输层的数据段或数据报,并将其传递给传输层。
  • 传输层解封装数据段或数据报,提取应用层的数据,并将其传递给应用层。

在同一网段时,两台主机通信不需要经过路由器,直接网卡到网卡。因为当两台主机在同一网段时,它们之间的通信是直接的,它们之间的通信通常不会经过路由器(Router)。路由器主要用于连接不同的网络,如局域网与广域网(WAN)或两个不同的局域网,并基于IP地址中的网络部分(网络号或子网号)来决定数据包的转发路径。

(2)不同网段的两台计算机通信过程

如果两台计算机在不同的网段中,那么数据从一台计算机到另一台计算机传输过程中要经过一个或多个路由器,如下图所示:

  • 链路层有以太网、令牌环网等标准,链路层负责网卡设备的驱动、帧同步(即从网线上检测到什么信号算作新帧的开始)、冲突检测(如果检测到冲突就自动重发)、数据差错校验等工作。交换机是工作在链路层的网络设备,可以在不同的链路层网络之间转发数据帧(比如十兆以太网和百兆以太网之间、以太网和令牌环网之间),由于不同链路层的帧格式不同,交换机要将进来的数据包拆掉链路层首部重新封装之后再转发。
  • 网络层的IP协议是构成Internet的基础。Internet上的主机通过IP地址来标识,Internet上有大量路由器负责根据IP地址选择合适的路径转发数据包,数据包从Internet上的源主机到目的主机往往要经过十多个路由器。路由器是工作在第三层(网络层)的网络设备,同时兼有交换机的功能,可以在不同的链路层接口之间转发数据包,因此路由器需要将进来的数据包拆掉链路层和网络层两层首部并重新封装。IP协议不保证传输的可靠性,数据包在传输过程中可能丢失,可靠性可以在上层协议或应用程序中提供支持。
  • 数据包通常是通过网卡先发送到交换机,再从交换机发送路由器(通常路由器一般具备交换机的功能,所以很多也是直接发送到路由器),然后路由器根据路由表决定下一个发送的路由。
  • 网络层负责点到点(ptop,point-to-point)的传输(这里的“点”指路由器,不过在同一网段时两台主机不需要经过路由器,直接网卡到网卡),而传输层负责端到端(etoe,end-to-end)的传输(这里的“端”通常指的是源主机上的应用进程和目的主机上的应用进程),传输层可选择TCP或UDP协议。

(3)目的主机收到数据包后的解包过程

目的主机收到数据包后,如何经过各层协议栈最后到达应用程序呢?其过程如下:

  1. 以太网驱动程序首先根据以太网首部中的“上层协议”字段确定该数据帧的有效载荷(payload,指除去协议首部之外实际传输的数据)是IP、ARP还是RARP协议的数据报,然后交给相应的协议处理。
  2. 假如是IP数据报,IP协议再根据IP首部中的“上层协议”字段确定该数据报的有效载荷是TCP、UDP、ICMP还是IGMP,然后交给相应的协议处理。
  3. 假如是TCP段或UDP段,TCP或UDP协议再根据TCP首部或UDP首部的“端口号”字段确定应该将应用层数据交给哪个用户进程。IP地址是标识网络中不同主机的地址,而端口号就是同一台主机上标识不同进程的地址,IP地址和端口号合起来标识网络中唯一的进程。

虽然IP、ARP和RARP数据报都需要以太网驱动程序来封装成帧,但是从功能上划分,ARP和RARP属于链路层,IP属于网络层。虽然ICMP、IGMP、TCP、UDP的数据都需要IP协议来封装成数据报,但是从功能上划分,ICMP、IGMP与IP同属于网络层,TCP和UDP属于传输层。


end

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

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

相关文章

算法(九)希尔排序

文章目录 希尔排序简介代码实现 希尔排序简介 希尔排序(shell sort)选定一个小于N(数列长度)的整数gap作为第一增量,然后将所有距离为gap的元素分成一组,然后对每一组的元素进行插入排序。然后再取一个比前…

(1+X)Java程序设计高级(一)

Throwable:异常的基类,所有异常都继承自 java.lang.Throwable 类,Throwable 类有两个直接子类:Error 类和 Exception 类。Error:是 Java 应用程序本身无法恢复的严重错误,应用程序不需要捕获、处理这些严重…

7.1 Go 错误的概念

💝💝💝欢迎莅临我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:「stormsha的主页」…

【SQL每日一练】查询二进制树节点

文章目录 题目一、题析二、题解1.MySQL/SqlServer2.Oracle 题目 有一个表BST,其中包含两列:N和P,其中N表示二进制树中节点的值,P是N的父级。 编写一个查询,以查找按节点值排序的二进制树的节点类型。为每个节点输出以…

迅狐跨境电商系统源码:技术栈与多端集成

随着全球化贸易的不断深入,跨境电商系统源码成为了连接不同国家和地区消费者与商家的重要桥梁。本文将探讨跨境电商系统源码的技术栈以及如何通过多端集成来提升用户体验。 技术栈概览 跨境电商系统源码的技术栈是构建高效、稳定平台的基础。以下是构建跨境电商系…

IP65 IP45 IP68等等数字防护等级

第一个数字的代表意义 : 0 表示无防护 ,对外界的人或物无特殊之防护 1. 表示防止大于50mm的固体物体侵入 ,防止人体(如手掌)因意外而接触,内部之零件。防止较大尺寸(直径大于50mm)的…

Oracle数据块如何存储真实数据

上周休假了几天,颓废了,没有输出。今天写一点内容。 先抛出一个问题。表中的数据在Oracle数据块中是如何存储的呢?今天简单说一下这个问题。通常数据库中的表会存储字符,数字,日期 这3种常见的数据类型。下面的例子就用这3种数据类型作说明 首先,Oracle数据块底层存储这…

Github 2024-05-31开源项目日报 Top10

根据Github Trendings的统计,今日(2024-05-31统计)共有10个项目上榜。根据开发语言中项目的数量,汇总情况如下: 开发语言项目数量Python项目4TypeScript项目3Jupyter Notebook项目2Vue项目1Cuda项目1Elixir项目1简单、纯净的C/CUDA中的LLM培训 创建周期:3 天开发语言:Cuda…

OpenCV中的圆形标靶检测——背景概述

圆形标靶 如下图所示,相机标定中我们使用带有固定间距图案阵列的平板,来得到高精度的标靶像素坐标,进而计算得到相机的内参、畸变系数,相机之间的变换关系,和相机与世界坐标系的变换关系(即外参)。 不过标靶的形式多样,从图案类型来看常见的有棋盘格、圆形标靶…

自然语言处理(NLP)神经网络的数据预处理步骤

1. 文本清理(Text Cleaning) 目的:去除文本中的噪音和无关内容,确保输入数据的质量和一致性。 方法: 去除标点符号:删除文本中的标点符号(视任务需求,某些标点符号可能保留&#…

音视频开发13 FFmpeg 音频 相关格式分析 -- AAC ADTS格式分析

这一节,我们学习常用的音频的格式 AAC,重点是掌握 AAC的传输格式 ADTS 头部的信息,目的是 : 当音频数据有问题的时候,如果是AAC的编码,在分析 头部信息的时候能够根据头部信息 判断问题是否出现在 头部。 A…

今天来讲讲,抖音小店商品的上架流程以及优化细节~

大家好,我是喷火龙。 做抖音小店选品选好之后,优化上架商品也是很重要的,也有很多需要注意的细节,今天就来给大家讲讲。 首先,软件采集,大致分为七步。 1. 以抖精灵为例,注册账号登录&#x…

到无穷大和更远,用分形更好

文章目录 一、说明二、分形到底是什么?三、更多更深刻的四、引进无穷小会产生什么样的怪事?五、希尔伯特曲线六、还有什么有趣的要补充的吗? 一、说明 ​​​​​​​数学领域有太多有趣的领域,领域我特别感兴趣。这是一个奇妙的…

orm 查询

问题 rayon,city 地区和市 地区不会空 市可能会空 job_name 工作名称 可能会空 envalid_date 有效期间 一天 一个星期 一个月 不限 四种 offset 分页的每次获取20条数据 在ORM(对象关系映射)查询中,您需要根据提…

代码随想录算法训练营day41 | 509. 斐波那契数、70. 爬楼梯、746. 使用最小花费爬楼梯

理论基础 动态规划中每一个状态一定是由上一个状态推导出来的,这一点就区分于贪心,贪心没有状态推导,而是从局部直接选最优的 动态规划的解题步骤 确定dp数组(dp table)以及下标的含义确定递推公式dp数组如何初始化确定…

怎么看自己电脑的配置?提升电脑的使用效率

了解自己电脑的配置是非常重要的,它可以帮助您了解电脑的性能水平,从而更好地选择适合的软件和游戏,或者进行系统升级和维护。然而,许多用户可能不知道怎么看自己电脑的配置信息。本文将介绍三种简单的方法,帮助您轻松…

android studio修改字体大小

android studio修改菜单栏、工具栏字体大小 android studio修改编辑框字体大小

常见制氮机的规格的及其特点介绍

制氮机根据其产气量、应用领域和设计特点,可以分为多种规格,满足不同行业的具体需求。以下是一些常见制氮机的规格的及其特点介绍: 制氮机的规格通常以其每小时制氮量进行分类。常见的规格有10L制氮机、50L制氮机、100L制氮机、500L制氮机以及…

复习leetcode第二题:两数相加

本文会给出笔者自己的解答(代码较为冗余,其实就是屎山代码)以及优秀代码的解析 下图是题目 解法1(笔者所使用的办法): 解题思路: 以下思路是基于示例1(上图)思考的 步骤…

2024年终端安全管理系统最新排名(2024终端安全管理软件TOP5)

在2024年,随着企业数字化转型的加速和网络安全威胁的日益严峻,终端安全管理系统的重要性愈发凸显。终端作为企业数据交互的关键节点,其安全性直接关系到企业的运营和数据的完整性。因此,各大终端安全管理系统厂商纷纷推出新的产品…