计算机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的父级。 编写一个查询,以查找按节点值排序的二进制树的节点类型。为每个节点输出以…

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

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

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

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

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

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

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

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

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

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

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

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

android studio修改字体大小

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

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

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

复习leetcode第二题:两数相加

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

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

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

基于Vue+Node.js的购物网站设计与实现-计算机毕业设计源码28500

摘 要 近年来,随着移动互联网的快速发展,电子商务越来越受到网民们的欢迎,电子商务对国家经济的发展也起着越来越重要的作用。简单的流程、便捷可靠的支付方式、快捷畅通的物流快递、安全的信息保护都使得电子商务越来越赢得网民们的青睐。现…

数据库系统概念(第七周 第一堂)(E-R模型)

目录 前言 基本概念 观点与模型 作用与要求 E-R模型元素 实体(entity) 实体集(entity set) 属性(attribute) 域(domain) 码 (key) 联系 &#x…

虚拟现实环境下的远程教育和智能评估系统(五)

查阅相关VR眼动注意力联合教育学相关论文 1.Exploring Eye Gaze Visualization Techniques for Identifying Distracted Students in Educational VR(IEEE VR 2020) 摘要:我们提出了一种架构,使VR教学代理能够响应眼动追踪监控…

Android HIDL接口添加

一.HIDL介绍 HIDL的全称是HAL interface definition language(硬件抽象层接口定义语言),是Android Framework 与Android HAL之间的接口。HIDL 旨在用于进程间通信 (IPC),进程之间的通信 采用 Binder 机制。 二.HIDL 与AIDL 的对…

JVM之【运行时数据区1】

JVM简图 运行时数据区简图 一、程序计数器(Program Counter Register) 1.程序计数器是什么? 程序计数器是JVM内存模型中的一部分,它可以看作是一个指针,指向当前线程所执行的字节码指令的地址。每个线程在执行过程中…

Python魔法之旅-魔法方法(04)

目录 一、概述 1、定义 2、作用 二、主要应用场景 1、构造和析构 2、操作符重载 3、字符串和表示 4、容器管理 5、可调用对象 6、上下文管理 7、属性访问和描述符 8、迭代器和生成器 9、数值类型 10、复制和序列化 11、自定义元类行为 12、自定义类行为 13、类…