【计算机网络笔记】网络应用进程通信

系列文章目录

什么是计算机网络?
什么是网络协议?
计算机网络的结构
数据交换之电路交换
数据交换之报文交换和分组交换
分组交换 vs 电路交换
计算机网络性能(1)——速率、带宽、延迟
计算机网络性能(2)——时延带宽积、丢包率、吞吐量/率
计算机网络体系结构概念
OSI参考模型基本概念
OSI参考模型中非端-端层(物理层、数据链路层、网络层)功能介绍
OSI参考模型中端-端层(传输层、会话层、表示层、应用层)功能介绍
TCP/IP参考模型基本概念,包括五层参考模型
网络应用的体系结构


  • 系列文章目录
  • 网络应用进程通信
  • 如何寻址进程?
  • 应用层协议是什么?
  • 应用层协议的内容
  • 总结


网络应用进程通信

用户自己PC机上应用的进程与服务器端应用的进程进行通信。这就是网络应用的核心。

进程间通信构成了网络应用的基础

Q:进程?

A:主机上运行的程序。

Q:同一主机上运行的进程之间如何通信?

A:进程间通信机制、操作系统提供。

Q:不同主机上运行的进程间如何通信?

A:消息交换。

  • 客户机进程: 发起通信的 进程
  • 服务器进程: 等待通信请 求的进程
  • 采用P2P架构的应用也存在客户机进程/ 服务器进程之分。

不同主机间进程通信依靠套接字机制,是由操作系统提供的一种抽象,它把网络的硬件基础设施和网络协议栈抽象为Socket套接字。进程通过套接字这个抽象使用下层协议和硬件。

  • 进程间通信利用socket发送/接收消息实现

  • Socket像门一样,发送方将消息送到门外邮箱,发送方依赖(门外的)传输基础设施将消息传到接收方所在主机,并送到接收方的门外,接收方从门外获取消息。

  • 传输基础设施向进程提供API。如果要开发网络应用,就要调用这些API,就要使用Socket。所以网络应用开发经常也叫Socket编程。

如何寻址进程?

既然网络应用之间通信依靠消息交换,那这个消息发出去之后,底层的传输基础设施怎么正确地送到目的进程?那就有一个进程的标识问题,这就是寻址。寻址是网络中一个常用的概念,很多层都有寻址这个概念。

不同主机上的进程间通信,那么每个进程必须拥有标识符

  • 首先要标识主机。标识主机通过IP地址,IP地址能够唯一地标识Internet上的一台主机,就和我们的身份证号码一样。

  • 然后标识一台主机上的进程。

    主机有了IP地址后,是否足以定位进程?当然不是,因为一个主机上可能同时跑着很多应用,也就有很多进程。所以需要额外的机制区分这台主机上不同的进程。

    所以需要为主机上每一个需要通信的进程分配一个端口号。有一些端口号是大家约定的不能随便用的,比如HTTP Server运行在80端口,Mail Server运行在25端口。

  • 最终,IP地址+端口号就能唯一地标识网络上的进程。

如下图所示。

在这里插入图片描述

应用层协议是什么?

消息交换具体怎么做,比如消息的格式等等,以怎么的顺序来交换,这就依靠应用层协议。

网络应用需要遵循应用层协议。

  • 应用层协议有公开的协议,由 RFC(Request For Comments 来定义,由IETF组织来维护,应用遵循公开的协议可以实现互操作。

    如果我们想要了解关于某个协议的权威信息,就去读RFC文档。

  • 也有私有协议,比如多数P2P文件共享应用。

应用层协议的内容

  • 消息的类型(type)。比如请求消息和响应消息。
  • 消息的语法(syntax)/格式。比如消息中有哪些字段(field),每个字段如何描述。
  • 字段的语义(semantics)。比如字段中信息的含义。
  • 规则(rules)。比如进程何时或如何发送/响应消息。

总结

网络应用不同之间依靠进程之间的信息交换,那要对进程进行寻址,就用到IP地址+端口号,消息的具体交换遵循应用层协议。协议中会规定一些内容。

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

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

相关文章

BeanUtils.copyProperties使用分析

概述 在开发中,常使用 BeanUtils.copyProperties() 进行PO,VO,DTO等对象的复制和转换。 注意 使用 Spring 的 BeanUtils # CopyProperties 方法去拷贝对象属性时,需要对应的属性有 getter 和 setter 方法(内部实现时,使用反射拿到 set 和 get 方法,再去获取/设置属性…

allegro中shape的一些基本操作(三)——挖空铜皮(shape)、删除孤岛

挖空铜皮(shape) 去除孤岛shape 挖空铜皮(shape) 我们在有的时候需要考虑分布电容的对信号完整性的影响,所以需要在整个铜皮的中间挖掉一块铜皮。 这三个分别对应挖不规则铜皮、矩形铜皮、圆形铜皮 例如&#xff1a…

MySQL数据库(二)

文章目录 MySQL数据库一、字符编码与配置文件二、存储引擎1.如何查看存储引擎2.重要的存储引擎MyISAMInnoDBMEMORYBlackHole演示 三、创建表的完善语法四、字段类型之整型整型分类及存储范围 五、字段类型之浮点型六、字段类型之字符类型1.研究两者区别2.严格模式3.研究定长、不…

读高性能MySQL(第4版)笔记19_云端和合规性

1. 如何构建数据库环境 1.1. 托管MySQL 1.2. VM上构建 1.3. 天下没有免费的午餐,每一个选择都伴随着一系列的权衡 2. 托管MySQL 2.1. 服务商提供了一个可访问的数据库设置程序,而不需要用户深入了解MySQL的具体细节 2.2. 使用托管MySQL将缺乏很多的…

中国艺术孙溟㠭篆刻《绕绕》

孙溟展先生现在的这方篆刻作品,没有使用大篆和小篆文字来篆刻,彰显篆刻的金石魅力。一改以往的不同,以圆形组合设计,用篆刻的刀法刻出,即体现篆刻的美,又达到了作者想表达的感情。这方篆刻作品溟展先生起名…

2023/10/23 mysql学习

数据库修改 show databases; 展示所有数据库 create database 数据库名; 创建数据库 create database if not exists 数据库名; 如果未创建过当前数据库名则创建 drop database 数据库名; drop database if exists 数据库名;用法和创建类似 删除数据库 use 数据库名; 跳…

WPF十六(页面内嵌加载)

在WPF中进行页面内嵌的加载 当存在一定需求时,比如当前页面C左侧是一个A页面,右侧是一个B页面,A页面是一个公用页面时,此时只需要做内嵌A页面,然后B页面进行正常处理,既可以节省时间,又做到了WP…

nodejs+vue备忘记账系统-计算机毕业设计

本文首先介绍了备忘记账系统管理技术的发展背景与发展现状,然后遵循软件常规开发流程,首先针对系统选取适用的语言和开发平台,目 录 摘 要 I ABSTRACT II 目 录 II 第1章 绪论 1 1.1背景及意义 1 1.2 国内外研究概况 1 1.3 研究的内容 1 第2章…

【目标检测】非极大值抑制NMS的原理与实现

非极大值抑制(Non-Maximum Suppression,NMS)是目标检测中常用的一种技术,它的主要作用是去除冗余和重叠过高的框,并保留最佳的几个。 NMS计算的具体步骤如下: 首先根据目标检测模型输出结果,得…

Linux内核的基本工作原理和关键概念

Linux内核是操作系统的核心部分,负责管理系统的硬件资源、文件系统、进程管理、内存管理和设备驱动等功能。以下是有关Linux内核的基本工作原理和关键概念的概述: 1. 体系结构: - Linux内核支持多种硬件架构,包括x86、ARM、MI…

Plooks大型视频在线一起看网站源码

在前段时间,因为想和异地的朋友一起看电影,但是发现有电影的地方没有一起看功能,有一起看功能的视频网站没有电影,所以就想自己做一个一起看网站,于是就有了Plooks。 Plooks是一个完整的视频网站,其中包括…

SpringBoot Web请求响应

目录 前言请求PostmanPostman使用 简单参数原始方式接收普通参数SpringBoot方式接收普通参数参数名不一致问题 实体参数简单实体参数复杂实体对象 数组集合参数数组参数集合参数 日期参数JSON参数路径参数 响应ResponseBody统一响应结果请求响应案例案例需求与准备工作案例实现…

ubuntu实现自动挂载u盘和SD卡

编写shell脚本 vim /home/usb-mount.sh#!/bin/bashACTION$1 DEVBASE$2 DEVICE"/dev/${DEVBASE}"# See if this drive is already mounted MOUNT_POINT$(/bin/mount | /bin/grep ${DEVICE} | /usr/bin/awk { print $3 })do_mount() {if [[ -n ${MOUNT_POINT} ]]; the…

Rust所有权

文章目录 什么是所有权Stack vs Heap所有权规则变量作用域String类型内存与分配所有权与函数 引用与借用可变引用悬垂引用引用的规则 切片字符串切片其他类型的切片 什么是所有权 什么是所有权 所有程序在运行时都必须管理其使用计算机内存的方式: 一些语言中具有垃…

Mr.Alright---MTK安卓13 抬手亮屏功能的逻辑

该功能在系统设置-显示-拿起设备时唤醒 alps\vendor\mediatek\proprietary\packages\apps\MtkSettings\src\com\android\settings\display\LiftToWakePreferenceController.javapublic boolean isAvailable() {SensorManager sensors (SensorManager) mContext.getSystemServ…

分库分表-ShardingSphere 4.x(2)

❤️作者简介:2022新星计划第三季云原生与云计算赛道Top5🏅、华为云享专家🏅、云原生领域潜力新星🏅 💛博客首页:C站个人主页🌞 💗作者目的:如有错误请指正,将…

小知识(6) el-table表格选中行和回显行(vue3)

el-table表格选中行和回显行 官方文档说明 https://element-plus.org/zh-CN/component/table.html#table-%E6%96%B9%E6%B3%95 环境&#xff1a;vue3element-plus 选中行selection <el-table ref"baseTableRef" row-key"id" border :selection"tr…

SpringBoot整合XXL-JOB详解

❤️作者简介&#xff1a;2022新星计划第三季云原生与云计算赛道Top5&#x1f3c5;、华为云享专家&#x1f3c5;、云原生领域潜力新星&#x1f3c5; &#x1f49b;博客首页&#xff1a;C站个人主页&#x1f31e; &#x1f497;作者目的&#xff1a;如有错误请指正&#xff0c;将…

12.4 组播鼠标批量执行

组播模式相比单播模式可以提高网络的效率和带宽利用率&#xff0c;因为组播数据包只需要发送一次&#xff0c;就可以被多个接收者接收&#xff0c;而不需要每个接收者都单独发送一份数据包。这在需要同时向多个接收者发送相同数据的场景下特别有用&#xff0c;如视频会议、在线…

【zookeeper】zk的ZAB原子广播协议

zk的ZAB原子广播协议来源于paxos算法[1]。paxos算法是一种基于消息传递的消息一致性算法&#xff0c;其特点是在可靠的通信环境下&#xff0c;可以保证消息的最终一致性。paxos要求每台server都持有自己的一个事务id的记录&#xff0c;这个事务id会每通过一个提议就自增加一&am…