计算机网络 (47)应用进程跨越网络的通信

server/2025/1/21 10:42:02/

前言

       计算机网络应用进程跨越网络的通信是一个复杂而关键的过程,它涉及多个层面和组件的协同工作。

一、通信概述

        计算机网络中的通信,本质上是不同主机中的应用进程之间的数据交换。为了实现这种通信,需要借助网络协议栈中的各层协议,特别是运输层协议(如TCP/IP)来提供可靠的通信服务。

二、系统调用与API

  1. 系统调用:系统调用是应用程序与操作系统之间的桥梁,它允许程序请求操作系统的服务。在应用进程需要进行网络通信时,会发出系统调用,请求操作系统为其创建套接字等必要的网络资源。
  2. API:应用编程接口(API)是一组标准的系统调用函数,它简化了应用程序与操作系统之间的交互。通过API,应用程序可以更方便地获取操作系统提供的服务,如网络通信、文件操作等。套接字接口(如Berkeley UNIX的套接字接口和Windows Socket)是应用进程与网络协议之间的一个重要接口,它隐藏了底层网络通信的复杂性,使得开发人员可以更专注于应用逻辑的实现。

三、套接字与端口

  1. 套接字:套接字是网络通信的端点,它充当了应用层与传输层之间的桥梁。套接字既被应用程序控制(如创建套接字、发起连接请求等),又受操作系统管理(如数据的传输、网络资源的分配等)。通过套接字,应用进程可以进行建立连接、发送数据、接收数据等网络操作。
  2. 端口:端口是运输层协议用于区分不同应用进程的一种标识。在互联网环境下,由于存在多种操作系统和进程标识符格式,因此需要使用统一的端口号来标志TCP/IP体系中的应用进程。端口号分为服务器端使用的端口号和客户端使用的端口号,其中服务器端使用的端口号包括熟知端口号和登记端口号,而客户端使用的端口号则是短暂端口号。

四、TCP/IP协议栈

        TCP/IP协议栈是实现计算机网络通信的基础。它包含多个层次,每个层次都负责不同的功能。在应用进程跨越网络的通信中,主要涉及到运输层和网络层的功能。

  1. 运输层:运输层负责提供端到端的通信服务。它使用协议端口号来标识不同的应用进程,并通过套接字接口与应用进程进行交互。TCP是运输层的一种重要协议,它提供了面向连接的、可靠的、基于字节流的通信服务。UDP则是另一种常用的运输层协议,它提供了无连接的、不可靠的通信服务。
  2. 网络层:网络层负责将数据包从源主机传输到目的主机。它使用IP地址来标识不同的主机,并通过路由选择和转发机制来实现数据包在网络中的传输。

五、通信过程

  1. 连接建立阶段:在应用进程需要进行网络通信时,首先会创建套接字并绑定到指定的端口号和IP地址上。然后,服务器进程会调用listen系统调用来设置套接字为被动模式,准备接受客户端的连接请求。客户端进程则会调用connect系统调用来发起连接请求。在TCP连接中,还需要经过三次握手过程来建立可靠的连接。
  2. 数据传送阶段:一旦连接建立成功,应用进程就可以通过套接字进行数据的发送和接收。在TCP连接中,数据是按照顺序传输的,并且每个数据包都会得到确认和重传保证。而在UDP连接中,数据则是无连接的、不可靠的传输方式。
  3. 连接释放阶段:当应用进程完成通信后,会调用close系统调用来释放连接并撤销套接字。在TCP连接中,还需要经过四次挥手过程来确保连接的可靠释放。

六、并发服务器模型

       在处理多个客户端连接请求时,服务器通常会采用并发服务器模型。这种模型允许服务器同时处理多个连接请求,提高了通信效率和吞吐量。并发服务器模型包括迭代服务器模型和并发服务器进程模型等不同的实现方式。

总结

       综上所述,计算机网络应用进程跨越网络的通信是一个涉及多个层面和组件的复杂过程。通过系统调用、API、套接字与端口以及TCP/IP协议栈的协同工作,实现了不同主机中的应用进程之间的可靠通信。

 结语    

放下过去的遗憾与痛苦

与自己达成和解

!!!


http://www.ppmy.cn/server/160154.html

相关文章

算法(蓝桥杯)贪心算法7——过河的最短时间问题解析

一、题目描述 在漆黑的夜里,N位旅行者来到了一座狭窄且没有护栏的桥边。他们只带了一只手电筒,且桥窄得只够让两个人同时过。如果各自单独过桥,N人所需的时间已知;若两人同时过桥,则所需时间是走得较慢的那个人单独行动…

w-form-select 组件中 分析 自定义属性 和 el-select 自带属性 的对比表格

以下是该组件中 自定义属性 和 el-select 自带属性 的对比表格: 属性/功能自定义el-select 自带说明label✔️❌自定义属性,用于设置表单项的标签。prop✔️❌自定义属性,用于表单验证时的字段名。labelWidth✔️❌自定义属性,用…

Taro+Vue实现图片裁剪组件

cropper-image-taro-vue3 组件库 介绍 cropper-image-taro-vue3 是一个基于 Vue 3 和 Taro 开发的裁剪工具组件,支持图片裁剪、裁剪框拖动、缩放和输出裁剪后的图片。该组件适用于 Vue 3 和 Taro 环境,可以在网页、小程序等平台中使用。 源码 https:…

IDEA导入Maven工程不识别pom.xml

0 现象 把阿里 sentinel 项目下载本地后,IDEA 中却没显示 maven 工具栏。 1 右键Maven Projects 点击IDEA右侧边栏的Maven Projects,再点击: 在出现的选择框中选择指定的未被识别的pom.xml即可: 2 Add as maven project 右键p…

嵌入式硬件篇---PID控制

文章目录 前言第一部分:连续PID1.比例(Proportional,P)控制2.积分(Integral,I)控制3.微分(Derivative,D)控制4.PID的工作原理5..实质6.分析7.各种PID控制器P控…

vue3 el-table 根据id合并指定列单元格

参考文章:https://www.cnblogs.com/gggggggxin/p/14311726.html 在mounted方法中调用 onMergeLines() const onMergeLines () > {// 先给所有的数据都加一个v.rowspan 1tableData.value.forEach((item) > {item.rowspan 1})// 双层循环for (let i 0; i…

Vue3中ref和reactive的区别

在 Vue 3 中,ref 和 reactive 都是用于响应式编程的 API,但它们有不同的使用场景和行为。以下是它们之间的区别: 1. ref 用途:用于创建基本数据类型(如字符串、数字、布尔值)或对象的响应式引用。数据类型…

ios文件管理,沙盒机制以及如何操作“文件”APP,把文件共享到文件app

首先,系统是一个整体,那每个app是相互独立的,系统为每个app分配了一定的存储空间,也就是我们说的沙盒,每个app有自己独立的沙盒,文件存储在沙盒中,正常情况下app相互之间数据是不可以共享以及访…