计算机网络(Ⅵ)应用层原理

ops/2024/10/31 8:29:57/

一些网络应用的例子:

E-mail         Internaet电话

Web            电子支付

文本信息      搜索

P2P文件共享 流媒体

即时通讯      实时电视会议

.... ....

 

创建一个网络应用:

1.编程

2.在不同的端系统上运行。

网络应用的体系架构

可能的应用架构

1.客户-服务器模式(C/S:client/server)

2.对等模式(P2P:Peer To Peer)

2.混合体:客户-服务器模式+对等体系结构

C/S模式

服务器

1.一直在运行

2.固定的IP和周知的端口号

3.扩展性:服务器场

数据中心进行扩展

扩展性差

客户端

1.主动与服务器通讯

2.与互联网有间歇性连接

3.可能是动态的IP地址

4.不直接与其他客户端通信

注意:C/S模式随着用户数量的增加,性能断崖式下降!!!!(原因:以服务器为核心,服务器压力变大)

P2P模式

1.(几乎)没有一直运行的服务器

2.任意系统之间可以进行通信

3.每一个节点既是客户端,又是服务器

自扩展性-新peer节点带来新的服务能力,当然也带来新的服务需求

4.参与的主机间接性连接且可以改变IP地址

难以管理

混合体

 

进程通信

进程:在主机上运行的应用程序

1.在同一个主机内,使用进程间通信机制通信

2.不同主机,通过交换报文(Message)来通讯

        使用OS提供的通信服务

        按照应用同协议交换报文

        借助传输层提供的服务

注意:P2P架构的应用也有客户端进程和服务器进程之分

客户端进程:发起通讯的进程

服务器进程:等待连接的进程

 分布式进程的通讯需要解决的问题

 1.进程的标示和寻址问题(服务用户)

 

2.传输层-应用层提供服务是如何(服务)

位置:层间界面的SAP(TCP/IP:socket)
形式:应用程序接口API(TCP/IP:socket API)

 

 

 注:SDU(service data unit)服务数据单元。

3.如何使用传输层提供的服务,实现应用进程之间的报文交换,实现应用(用户使用服务)

定义应用层协议:报文格式,解释,时序等
编制程序,使用OS提供的API。调用网络基础设施提供通信服务传报文,实现应用时序等。

TCP之上的套字编程

对于使用面向连接服务(TCP)的应用而言,套接字是4元组的一个具有本地意义的标识

        4元组:(源IP,源port,目标IP,目标port

        唯一的指定了一个会话(2个进程之间的会话关系)

        应用使用这个标示,与远程的应用进程通信

        就像使用操作系统打开一个文件,OS返回一个文件句柄一样,以后使用这个文件句柄,而不是使用这个文件的目录名,文件名

        简单,便于管理

UDP之上的套字编程

UDP服务,两个进程之间的通讯之前无需建立连接

        每一个报文都是独立传输的

        前后报文可能给不同的分布式进程

因此,只能用一个整数表示本应用实体的表示

        因为这个报文可能传给另外一个分布式进程

穿过层间接口的信息大小最小

UDP socket:本IP,本端口

但是传输报文时:必须呀提供对方IP,port

        接收报文时:传输层需要上传对方的IP,port

对于使用无连接服务(UDP)的应用而言,套接字是二元组的一个具有本地意义的标示

2元组:IP,port(源端指定)

UDP套接字制定了应用所在的一个端节点(end point)

在发送数据报时,采用创建好的本地套接字(标示ID),就不必在发送每个报文中指明自己的ip和port

但是在发送报文时,必须要指定对方的ip和udp port(另外一个端节点)

Internet传输层提供的服务

TCP服务

可靠的通信服务

流量控制:发送放不会淹没接收方

拥塞控制:当网络出现拥塞时,能够抑制发送方

不能提供的服务:时间保证,最小吞吐量和安全

面向连接:要求客户端进程和服务器之间建立连接

UDP服务

不可靠数据传输

不提供的服务:可靠,流量控制,拥塞控制,时间,带宽保证,建立连接

UDP存在的理由

UDP通过增加端口号,实现进程到进程之间的连接

安全TCP


http://www.ppmy.cn/ops/129813.html

相关文章

一种小型固定翼无人机弹射着陆系统的设计

摘要: 为了快速切实的解决目前小型固定翼无人机经常出现的在各种地形复杂多变的复杂地面状况飞机上起降或在快艇跑道上起飞等无法快速自动地完成滑动跑位或起飞等的复杂动作场景中面临的飞机如何能够快速的安全地起飞着陆等一系列的各种复杂操作问题,本文将首次尝试使用基于So…

使用 MMDetection 实现 Pascal VOC 数据集的目标检测项目练习(二) ubuntu的下载安装

首先,Linux系统是人工智能和深度学习首选系统。原因如下: 开放性和自由度:Linux 是一个开源操作系统,允许开发者自由修改和分发代码。这在开发和研究阶段非常有用,因为开发者可以轻松地访问和修改底层代码。社区支持:…

java游戏第六天——总结

开始 我们先在这里创建五个java文件,后面创建一个文件夹存储图片,我就按照这几个文件作用展开描述 bg.java package common; import common.game_pic;import java.awt.Color; import java.awt.Graphics; public class bg {public void paintself(Graph…

测试自动化工具的横向对比

MicroAgent:这个AI智能体一键写代码并且自动测试!它比 Aider 更好吗? 待研究:https://blog.csdn.net/gitblog_00054/article/details/139541862 playright:这是一个python驱动的自动化框架,部署简单&#…

相关矩阵图——Python实现

import matplotlib.pyplot as plt import numpy as np# 创建一些正常分布的数据 mean [0, 0] cov [[1, 1], [1, 2]] x, y np.random.multivariate_normal(mean, cov, 3000).T# Set up the axes with gridspec fig plt.figure(figsize(6, 6)) grid plt.GridSpec(4, 4, hspa…

LeetCode 热题 100 回顾28

干货分享,感谢您的阅读!原文见:LeetCode 热题 100 回顾_力code热题100-CSDN博客 一、哈希部分 1.两数之和 (简单) 题目描述 给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标…

获得淘宝app商品详情原数据 API 券后价获取API

item_get_app_pro-获得淘宝app商品详情原数据 通过此API可以实现通过商品id获取商品详情页数据,包括券后价、主图、详情等等。 公共参数 名称类型必须描述keyString是调用key(必须以GET方式拼接在URL中)secretString是调用密钥api_nameStr…

[数据结构]插入排序(全)

插入排序分为直接插入排序和希尔排序&#xff0c;希尔排序是在直接插入排序的基础上做出的优化版本(原因后面解释)。 代码如下: //直接插入排序 void InsertSort(int arr[], int sz) {for (int i 0; i < sz - 1; i){int mark i;int tmp arr[mark 1];while (mark > …