应用层协议原理

一、网络应用程序体系结构

  网络应用程序体系结构是由程序研发者设计的,规定了如何在各种端系统中组织该应用程序,主要流行的有两种:

1.客户--服务器体系结构:

  有一个总是打开的主机(称为服务器),他服务于来自许多的其他的称为客户的主机的请求,客户--服务器体系结构德 一个典型的例子是:Web应用程序,其中总是打开的Web服务器接收到来自其他客户的对某对象的请求时,它会向该客户发送所请求的对象作为响应。值得注意的是客户--服务器体系结构有两个重要特征:

  a.客户之间不直接通信

  b.服务器具有固定的、周知的地址(IP地址)

当然现实中 ,在一个客户--服务器体系结构中,常常会出现一台单独的服务器跟不上他的客户请求的情况。为此,配备大量主机的数据中心常常被用于创建强大的虚拟服务器 。如谷歌就有分布在全世界的30-50个数据中心,这些数据中心共同处理搜索、Gmail和其他服务。

2.对等(P2P)体系结构:

  在一个P2P体系结构中,对于数据中心的专用服务器有最小的(或没有)依赖,相反,应用程序在间断连接的主机之间使用直接通信,这些主机对称为对等方。许多目前流行的、流量密集型的应用都是P2P体系结构,如这些应用包括文件共享(BitTorrent)、对等方协助下载器(迅雷)、因特网电话(Skype)和IPTV(迅雷看看)。

需要提及的是某些应用具有混合的体系结构,结合了客户--服务器和P2P的元素。

二、进程通信

在操作系统的主术语中,进行通信的实际上是进程而不是程序,进程间的通信可以分为两种,一种为运行在同一端系统上的,一种是运行在不同端系统上的。在这里我们只关注后者。

1.客户与服务器进程

  我们定义客户与服务器进程如下:

  在给定的一对进程之间的通信会话场景中,发起通信的(即在该会话开始时发起与其他进程的联系)的进程被标识为客户,在会话开始时等待联系的进程被标识为服务器。

2.进程与计算机网络之间的接口

  多数应用程序是由通信进程对组成的,每对中的两个进程相互发送报文。从一个进程向另一个进程发送报文必须通过下面的网络。进程通过一个称为套接字(Socket)的软件接口向网络中发送报文或从网络中接收报文。我们用一个类比来理解进程与套接字。进程可以类比于一座房子,而他的套接字可以类比于它的门。当一个进程想向位于另外一台主机上的另外一个进程发送报文时,它把报文推出该门(套接字)。该发送进程假定该门到另外一侧之间有运输的基础设施,该设施将把报文传送到目的进程的门,一旦该报文抵达目的主机,它通过接受进程的门(套接字)传送,然后接收进程对该报文进行处理。

  由于该套接字是建立网络应用程序的可编程接口,所以套接字也称为应用程序与网络之间的应用程序编程接口(API)。应用程序开发者可以控制套接字在网络层端的一切,而对套接字在运输层端几乎没有控制权。

3.进程寻址

  为了向特定目的地发送邮政邮件,目的地需要有一个地址。类似地,在一台主机上运行的进程为了向另外一台主机上的运行的进程发送分组,接受进程需要有一个地址。为了表示该接受进程,需要定义两种信息:a.主机地址 (IP地址)b.定义在目的主机中的接受进程的标识符(端口号)。

三、可供应用程序使用的运输服务

1.可靠数据传输

2.吞吐量

3.定时

4.安全性

四、因特网提供的运输服务

1.TCP服务

当某个应用程序选择TCP作为其运输层协议是,该应用程序就能获得来自于TCP的这两种服务:

(1)面向连接的服务:在应用层数据报文开始流动之前,TCP让客户和服务器互相交换运输层控制信息,也就是握手过程。在握手过程后,一个TCP连接就在两个进程的套接字之间建立了。

(2)可靠的数据传输服务:通信进程能依靠TCP,无差错、按适当顺序交付所有发送的数据报文,并且没有字节的丢失和冗余。

TCP协议还基友拥塞控制机制,当发送方和接收方之间的网络出现拥塞是,TCP的拥塞控制机制会抑制发送进程发送数据。

2.UDP服务

UDP是一种不提供不必要的服务的轻量级运输协议,仅提供最小服务。UDP是无连接的,即在两个进程通信之前没有握手过程。UDP协议也只是提供一种不可靠的数据传输服务,也就是说,当进程发送一个报文进UDP套接字时,UDP协议不保证这个报文一定能到达接收进城。不仅如此,到达接受进程的报文也可能是乱序到达的。

3.因特网运输协议所不提供的服务

运输协议服务主要有四个方面:可靠地数据传输,吞吐量,定时,安全性。

我们可以注意到TCP提供了端到端的可靠地数据传输服务,并且我们可以在应用层用SSL来加强以提供安全性服务。显然,TCP和UDP缺少了定时和吞吐量的服务,这也是因特网运输服务协议并没有提供的。

计算机网络之应用层_part -1的更多相关文章

  1. 计算机网络Web应用层与运输层(HTTP/TCP)

    应用层协议原理 Web和HTTP DNS:英特网的目录服务 运输层 面向连接的运输:TCP及拥塞原理 一.应用层协议原理 DNS域名解析: (用例:www.baidu.com)域名解析是网络请求的第一 ...

  2. 计算机网络之应用层概述(C/S模型与p2p模型)

    文章转自:https://blog.csdn.net/weixin_43914604/article/details/105582318 学习课程:<2019王道考研计算机网络> 学习目的 ...

  3. 【计算机网络】应用层(一) HTTP

      HTTP报文 HTTP报文是HTTP应用程序间发送的数据块,它由三部分组成:起始行(start line),首部(header)和主体(body),如下图所示:   从分类上,报文又可以分为请求报 ...

  4. [Note] 计算机网络的应用层

    应用层 原理 结构和模型 客户-服务器体系结构(client-server architecture ) 通信不是直接的,需要通过服务器转发 经常会在服务器积压大量的负载 服务器(server) 服务 ...

  5. 计算机基础:计算机网络-chapter6应用层

    应用层为协议最顶部,为用户服务. 常见的服务:邮件,万维网,DNS等 DNS:使用UDP承载,部分使用TCP协议 作用 将域名映射为IP 域名格式:自己到上级域名的访问 DNS服务器提供域名的资源记录 ...

  6. <计算机网络>计算机网络和应用层

    1.端系统通过通信链路和分组交换机连接在一起,构成网络.网络和网络之间通过路由器相连,组成了因特网. 2.ISP(Internet Service Provider)因特网服务提供商.端系统通过ISP ...

  7. Python模块探秘之smtplib,实现纯文本邮件的发送

    今天学到了如何使用Python的smtplib库发送邮件,中间也是遇到了各种各样的错误和困难,还好都一一的解决了.下面来谈一谈我的这段经历. 配置你的邮箱 为什么要配置邮箱呢?具体要配置什么呢? 因为 ...

  8. page 页 分页 分段

    小结: 1. 页:磁盘和内存间传输数据的最小单位: MySQL: What is a page? https://stackoverflow.com/questions/4401910/mysql-w ...

  9. 【原理、命令】Git基本原理、与Svn的区别、命令

    一.Git是什么? Git是目前世界上最先进的分布式版本控制系统.工作原理 / 流程:Workspace:工作区Index / Stage:暂存区Repository:仓库区(或本地仓库)Remote ...

随机推荐

  1. 第二章完结,包含exam练习

    正则方程(Normal Equation) 梯度下降是最小化代价函数\(J(\theta)\)的一种方式,这里提出了另一种方式即正则方式不使用迭代方式:\(\theta = (X^TX)^{-1}X^ ...

  2. Perl格式化输出

    Perl格式化输出 问题阐述 有时我们需要大量的重复数据,使用手工易于出错及比较繁琐.抓取特征,可以使用Perl脚本轻松搞定. 输出数据格式 主要特点 随机数生成 格式化输出 序列递增 Perl脚本 ...

  3. DB2简介和安装部署

    一.DB2相关概念 1.DB2体系结构: DB2体系结构中的最高一层是系统,一个系统表示DB2的一个安装.在由很多机器组成 的网络环境中,我们有时=也称系统为数据库分区,一个系统可以包含多个DB2实例 ...

  4. ELK-Kibana-01

      1.Kibana介绍   Kibana 是一个设计使用和Elasticsearch配置工作的开源分析和可视化平台.可以用它进行搜索.查看.集成Elasticsearch中的数据索引.可以利用各种图 ...

  5. Kubernetes 设计概要

    英文原文:Kubernetes Design Overview Overview Kubernetes builds on top of Docker to construct a clustered ...

  6. schema 对象的简单介绍

    官方文档链接地址 http://docs.oracle.com/cd/E11882_01/server.112/e40540/tablecls.htm#CNCPT010 Introduction to ...

  7. C#实现手机发送验证码

    之前不怎么了解这个,一直以为做起来很复杂. 直到前两天公司要求要做这个功能. 做了之后才发现 这不过就是一个POST请求就能实现的东西.现在给大家分享一下,有不足之处还请多多指教. 废话不多说 直接上 ...

  8. SyntaxError: Unexpected token < in JSON at position 0 错误

    当你使用AJAX时有设定dataType : 'json' 所以在接回传值的时候会以json格式来解析但回传的资料非json格式就会出现这个错误讯息

  9. Windows7下pip源配置修改

    以下列举三种方式的pip源配置: 1. 设置环境变量PIP_CONFIG_FILE指向pip.ini源配置文件,pip.ini文件内容如下: [global] index-url = http://m ...

  10. phpExcel读取excel文件数据

    require_once $_SERVER['DOCUMENT_ROOT'].'/Classes/PHPExcel.php';require_once $_SERVER['DOCUMENT_ROOT' ...