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

news2024/11/25 22:47:25

目录

(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.coloradmin.cn/o/1711982.html

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

相关文章

AlexNet神经网络训练

导包 import tensorflow as tffrom tensorflow.keras import datasets, layers, models 加载Fashion-MNIST数据集 (train_images, train_labels), (test_images, test_labels) datasets.fashion_mnist.load_data() 归一化像素值到[0, 1]区间 train_images, test_images t…

校园周边美食探索及分享平台,基于 SpringBoot+Vue+MySQL 开发的前后端分离的校园周边美食探索及分享平台设计实现

目录 一. 前言 二. 功能模块 2.1. 前台首页功能模块 2.2. 用户功能模块 2.3. 管理员功能模块 三. 部分代码实现 四. 源码下载 一. 前言 美食一直是与人们日常生活息息相关的产业。传统的电话订餐或者到店消费已经不能适应市场发展的需求。随着网络的迅速崛起&#xff0…

Aria2下载安装使用

这里写目录标题 下载Aria2 配置创建 aria2.conf 文件创建 aria2.session 文件 Aria2的使用基础使用多源下载多线程下载后台下载配置文件启动 AriaNg下载安装AriaNg配置AriaNg使用 Tracker 列表 aria2 是一款免费开源跨平台且不限速的多线程下载软件,其优点是速度快、…

CentOS配置DNS

1.打开/etc/resolv.conf文件 sudo vi /etc/resolv.conf2.添加配置 nameserver 114.114.114.1143.保存并关闭文件。 4.为了确保配置生效,重启网络服务或重启系统。例如: 重启网络: sudo systemctl restart network重启系统: …

【C++题解】1321. 时钟旋转(2)

问题:1321. 时钟旋转(2) 类型:字符串 题目描述: 时钟从时间:xx:xx(xx时xx分),走到时间:xx:xx(xx时xx分),时针共旋转了多…

ESXI8.0虚拟机和主机之间进行粘贴复制

1:默认情况下新建一个虚拟机是无法和主机之间进行粘贴复制操作的,主要是为了安全。 2:可以参考下面的文档进行操作,操作成功也只能复制粘贴数据,而无法复制粘贴文件或文件夹 https://knowledge.broadcom.com/externa…

[C#]使用C#部署yolov8的目标检测tensorrt模型

【测试通过环境】 win10 x64 vs2019 cuda11.7cudnn8.8.0 TensorRT-8.6.1.6 opencvsharp4.9.0 .NET Framework4.7.2 NVIDIA GeForce RTX 2070 Super 版本和上述环境版本不一样的需要重新编译TensorRtExtern.dll,TensorRtExtern源码地址:TensorRT-CShar…

华为WLAN无线组网技术与解决方案

WLAN无线组网技术与解决方案 网络拓扑采用AP和AC旁挂式无线组网 配置思路: 1.让AP上线 1.1,使得AP能够获得IP地址 配置步骤: 1.把AC当作一个一个有管理功能的三层交换机 sys Enter system view, return user view with CtrlZ. [AC6605]vlan …

玩转STM32-I2C通信协议(详细-慢工出细活)

文章目录 一、I2C总线原理(掌握)1.1 硬件构成1.2 传输位1.3数据传输格式 二、STM32的I2C特性和结构三、STM32的I2C通信实现(硬件实现方式)3.1 I2C主模式 四、应用实例 一、I2C总线原理(掌握) 1.1 硬件构成…

【C++ QT项目实战-02】---- C++ QT系统实现基于QT调用RESTful接口访问JSON文件中数据

🎩 欢迎来到技术探索的奇幻世界👨‍💻 📜 个人主页:一伦明悦-CSDN博客 ✍🏻 作者简介:C软件开发、Python机器学习爱好者 🗣️ 互动与支持:💬评论 &#…

股票交易vip快速通道有什么门槛?vip交易通道的开通流程!

证券公司的VIP通道通常是为了满足高端客户或高频交易客户的需求而设立的,提供更快速、更便捷的交易服务。证券公司VIP通道适用于有追涨停板需求的投资者,以及一些喜爱高频交易的投资者,总的来说就是快速,在交易主机排队靠前。 VI…

视频集中存储LntonCVS视频监控汇聚平台智慧园区应用方案

智慧园区,作为现代化城市发展的重要组成部分,承载着产业升级的使命,是智慧城市建设的重要体现。在当前产业园区竞争日益激烈的情况下,越来越多的用户关注如何将项目打造成完善的智慧园区。 在智慧园区的建设过程中,各类…

离线deb安装下载及安装实例

1、使用apt download下载deb安装包(不包括依赖包) 1.1仅下载deb安装包 sudo apt download lrzsz 1.2安装载deb安装包 sudo dpkg -i lrzsz_0.12.21-10kylin0k2_arm64.deb 注:dpkg安装deb包,部分存在depends关系,需要使用apt-get -f instal…

【赠书第25期】C#项目开发实战(微视频版)

文章目录 前言 1 项目构思与需求分析 1.1 项目构思 1.2 需求分析 2 系统设计 2.1 系统架构设计 2.2 数据库设计 2.3 接口设计 3 编码实现 3.1 环境搭建 3.2 编码规范 3.3 编码实现 4 测试与部署 4.1 单元测试 4.2 系统测试 4.3 部署与上线 5 总结与展望 6 推…

信息安全法规和标准

《全国人民代表大会常务委员会关于维护互联网安全的决定》规定,威胁互联网运行安全的行为:(1)侵入国家事务、国防建设、尖端科学技术领域的计算机信息系统,(2)故意制作、传播计算机病毒等破坏性…

气膜建筑的运行保障:应对停电的解决方案—轻空间

气膜建筑作为一种现代化的建筑形式,以其独特的结构和多样的应用赢得了广泛关注。这种建筑依靠风机不断往内部吹气来维持其结构形态,那么如果遇到停电的情况,该如何确保其正常运行呢? 气膜建筑的供风系统 气膜建筑内部的气压维持依…

使用`War`包部署`Jenkins`(超级详细)

使用War包部署Jenkins(超级详细) 别着急,你看这年复一年,春光不必趁早,冬霜不会迟到。过去的都会过去,该来的都在路上,一切都是刚刚好。 网站说明 https://get.jenkins.io/war-stable/ war包下载地址 https://www.jenk…

Metasploit渗透测试工具使用

Metasploit Framework(MSF) 是一款开源安全漏洞检测工具,附带数千个已知的软件漏洞,并保持持 续更新。Metasploit可以用来信息收集、漏洞探测、漏洞利用等渗透测试的全流程,被安全社区冠以“可 以黑掉整个宇宙”之名。刚开始的Metasploit是采…

Steamdeck使用Windows系统游玩雪地奔驰时闪退问题解决方法

我非常喜欢雪地奔驰这款游戏,买sd的一部分也是为了它。可在我打开这个游戏时,游戏发生闪退问题。查阅了网络各个途径,基本没有解决方法。因此我自己分析终于解决该问题。以下是我解决问题的思路,仅供记录参考: 游戏在崩…

uniapp - 填充页面

在上一篇文章中,创建了一个空白的文章模块页面。在这一篇文章,让我们来向页面中填充内容。 目录 页面效果涉及uniapp组件1.view2.swiper3.scroll-view4.属性解读1) class"style1 style2 .."2) circular单属性无赋值3) :autoplay"autoplay…