应用进程跨越网络的通信

目录

1 系统调用和应用编程接口

应用编程接口 API

几种应用编程接口 API

套接字的作用

几种常用的系统调用

1. 连接建立阶段

2. 传送阶段

 3. 连接释放阶段


1 系统调用和应用编程接口

·大多数操作系统使用系统调用 (system call ) 的机制在应用程序和操作系统之间传递控制权。

·对程序员来说,每一个系统调用和一般程序设计中的函数调用非常相似,只是系统调用是将控制权传递给了操作系统。

多个应用进程使用系统调用的机制

应用编程接口 API

·系统调用接口实际上就是应用进程的控制权和操作系统的控制权进行转换的一个接口。

·使用系统调用之前要编写一些程序,特别是需要设置系统调用中的许多参数,因此这种系统调用接口又称为应用编程接口 API (Application Programming Interface) 。

几种应用编程接口 API

·Berkeley UNIX 操作系统定义了一种 API,它又称为套接字接口 (socket interface)。

·微软公司在其操作系统中采用了套接字接口  API,形成了一个稍有不同的 API,并称之为  Windows Socket

·AT&T 为其 UNIX 系统 V 定义了一种 API,简写为 TLI (Transport Layer Interface)。

应用进程通过套接字接入到网络

套接字的作用

·当应用进程需要使用网络进行通信时就发出系统调用,请求操作系统为其创建套接字,以便把网络通信所需要的系统资源分配给该应用进程。

·操作系统为这些资源的总和用一个套接字描述符的号码来表示。

·应用进程所进行的网络操作都必须使用这个套接字描述符。

·通信完毕后,应用进程通过一个关闭套接字的系统调用通知操作系统回收与该套接字描述符相关的所有资源。

几种常用的系统调用

1. 连接建立阶段

·当套接字被创建后,它的端口号和 IP 地址都是空的,因此应用进程要调用 bind(绑定)来指明套接字的本地地址。在服务器端调用 bind 时就是把熟知端口号和本地IP地址填写到已创建的套接字中。这就叫做把本地地址绑定到套接字。

·服务器在调用 bind 后,还必须调用 listen(收听)把套接字设置为被动方式,以便随时接受客户的服务请求。UDP 服务器由于只提供无连接服务,不使用 listen 系统调用。

·服务器紧接着就调用 accept(接受),以便把远地客户进程发来的连接请求提取出来。系统调用 accept 的一个变量就是要指明从哪一个套接字发起的连接。

并发方式工作的服务器

调用 accept 要完成的动作较多。这是因为一个服务器必须能够同时处理多个连接。这样的服务器常称为并发方式 (concurrent) 工作的服务器。

2. 传送阶段

·客户和服务器都在 TCP 连接上使用 send 系统调用传送数据,使用 recv 系统调用接收数据。

·通常客户使用 send 发送请求,而服务器使用 send 发送回答。

·服务器使用 recv 接收客户用 send 调用发送的请求。客户在发完请求后用 recv 接收回答。

 3. 连接释放阶段

·一旦客户或服务器结束使用套接字,就把套接字撤消。这时就调用 close 释放连接和撤销套接字。

欢迎一起学习~

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

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

相关文章

Java基于SpringBoot+vue的租房网站,附源码

博主介绍:✌程序员徐师兄、7年大厂程序员经历。全网粉丝12w、csdn博客专家、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ 🍅文末获取源码联系🍅 👇🏻 精彩专栏推荐订阅👇…

[BIZ] - 1.金融交易系统数据特点

1.1 数据量极大 交易系统的数据量特大,主要来自以下几种类型的数据。 1.1.1 行情 行情是交易系统最为重要的数据,交易就是在不断变化的行情中寻找时机来实现盈利的。海量的行情主要分成两种,一种是tick数据(也叫逐笔行情&#…

【学网攻】 第(27)节 -- HSRP(热备份路由器协议)

系列文章目录 目录 系列文章目录 文章目录 前言 一、HSRP(热备份路由器协议)是什么? 二、实验 1.引入 实验目标 实验背景 技术原理 实验步骤 实验设备 实验拓扑图 实验配置 实验验证 文章目录 【学网攻】 第(1)节 -- 认识网络【学网攻】 第(2)节 -- 交…

day 31贪心

day31 贪心 分发饼干 题目链接: 分发饼干 题目描述 假设你是一位很棒的家长,想要给你的孩子们一些小饼干。但是,每个孩子最多只能给一块饼干。 对每个孩子 i,都有一个胃口值 g[i],这是能让孩子们满足胃口的饼干的最…

MySQL性能调优篇(4)-查询语句的优化与重构

MySQL数据库查询语句的优化与重构 MySQL是一种常用的关系型数据库管理系统,广泛应用于Web开发中。在实际应用中,对数据库查询语句的优化和重构是提高应用性能和响应速度的重要手段。本文将介绍一些常见的优化技巧和重构方法,帮助开发者提高数…

sqlserver2012 解决日志大的问题

当SQL Server 2012的事务日志变得过大时,这通常意味着日志备份没有被定期执行,或者日志文件的自动增长设置被设置得太高,导致它不断增长以容纳所有未备份的事务。解决日志大的问题通常涉及以下几个步骤: 备份事务日志:…

OpenAI ChatGPT 记忆功能怎么实现?

你的聊天助手现在能“记住”你的对话了! 2月14日凌晨,OpenAI宣布正在测试ChatGPT的新功能——记住用户提问内容,并自由控制内存。这意味着,ChatGPT能帮你记住那些重要的聊天内容,让你的对话更流畅、更自然。 想象一下…

HMI(人机界面设计)大扫盲了,UI设计的重要领域,附案例。

Hello,我是大千UI工场,开始分享HMI设计了,这个可是除了手机和电脑外的,最重要的设计领域哦,可能你觉的它很陌生,其实生活中处处可见。关注我们,学习N多UI干货,有设计需求&#xff0c…

Android 12.0 Camera 分辨率从高到低排列功能实现

1.前言 在12.0的系统ROM定制化开发功能中,在对Camera2的产品进行定制化的时候,在camera2的设置页面,总是会发现在预览 分辨率的列表中,有的产品不是按照分辨率的大小来进行排序显示的,所以就需要了解显示流程,然后按顺序排序来实现 功能,接下来实现相关功能 2.Camer…

C++中类和结构体的区别(代码说明)

C中的类和结构体都是用于定义自定义数据类型的关键字。它们之间有很多相似之处,但也有一些关键的区别。 1 主要区别 区别类结构体默认访问权限私有公有是否支持多态支持不支持是否支持继承支持支持是否可以定义构造函数和析构函数可以可以常用场景封装数据和行为&…

Python算法探索:从经典到现代(二)

一、引言 Python作为一种高级编程语言,其简洁明了的语法和丰富的库资源,使得它成为算法实现的理想选择。本文将带您从经典算法出发,逐步探索到现代算法,感受Python在算法领域的魅力。 二、经典算法:贪心算法 贪心算法…

[日常使用] Shell常用命令

Shell是什么? Shell简介 Shell是操作系统的外壳,是用户与操作系统内核之间的主要接口。它接收用户的命令并将其传递给内核执行,然后将执行结果返回给用户。Shell不仅是一个命令解释器,也是一种强大的编程语言。常见的Shell分为图…

【MySQL】-16 MySQL综合-2(MySQL的优点+MySQL5.7新特性+MySQL客户端和服务器端工具集)

MySQL的优点MySQL5.7新特性MySQL客户端和服务器端工具集 MySQL的优势(优点)MySQL 5.7的新特性1) 随机 root 密码2) 自定义 test 数据库3) 默认 SSL 加密4) 密码过期策略5) 用户锁6) 全面支持JSON7) 支持两类生成列(generated column&#xff…

Web基础01-HTML+CSS

目录 一、HTML 1.概述 2.html结构解析 3.HTML标签分类 4.HTML标签关系 5.HTML空元素 6.HTML属性 7.常用标签 (1)HTML标签 (2)标题标签 (3)换/折行标签 (4)段落标签 &am…

开源软件:推动技术繁荣

目录 开源软件的影响力 开源软件的优点 开源软件如何推动技术创新 开源软件的商业模式 开源软件的安全风险 开源软件的未来发展趋势 开源软件的影响力 随着信息技术的快速发展,开源软件已经成为软件开发的趋势,并产生了深远的影响。开源软件的低成…

平常开发java项目时也没用序列化,没感觉到有啥影响呢,这是为什么?

平常开发java项目时也没用序列化,没感觉到有啥影响呢,这是为什么? 在日常的Java开发中,可能不会直接感受到序列化的存在,特别是在使用现代框架和技术栈时。这主要是因为很多底层细节已经由框架或库隐藏起来&#xff0…

<网络安全>《31 网络信息安全基础(2)中英术语整理》

A 01 高级持久威胁(APT) 一种网络攻击,使用复杂的技术持续对目标政府和公司进行网络间谍活动或其他恶意活动。通常由具有丰富专业知识和大量资源的对手进行-通常与民族国家参与者相关。 这些攻击往往来自多个入口点,并且可能使…

Django学习全纪录:Django视图和路由的配置,应用的创建以及注册

导言 在之前的文章中,我们已经将Django的环境部署完成,包括一些注意事项以及前期工作,都已经完成。这篇文章,我们就可以正式开始干活了。 学习目标 1、学习创建应用以及注册APP 2、初步认识视图和路由,以及编写简单的代码 3、启动应用观察变化 创建第一个应用(APP) …

发掘GPT-4商业创新的潜力

GPT-4在商业创新方面的应用潜力巨大,它能够基于庞大的训练数据集和强大的语言生成能力,协助企业或个人用户在多个商业场景中推动创新: 市场分析与战略规划:GPT-4可以对历史数据、行业趋势、竞争对手信息进行深度分析,并…

华为机考入门python3--(14)牛客14-字符串排序

分类:列表、排序 知识点: 字典序排序 sorted(my_list) 题目来自【牛客】 def sort_strings_by_lex_order(strings): # 使用内置的sorted函数进行排序,默认是按照字典序排序 sorted_strings sorted(strings) # 返回排序后的字符串列…