计算机网络之应用层_part -1
应用层协议原理
一、网络应用程序体系结构
网络应用程序体系结构是由程序研发者设计的,规定了如何在各种端系统中组织该应用程序,主要流行的有两种:
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的更多相关文章
- 计算机网络Web应用层与运输层(HTTP/TCP)
应用层协议原理 Web和HTTP DNS:英特网的目录服务 运输层 面向连接的运输:TCP及拥塞原理 一.应用层协议原理 DNS域名解析: (用例:www.baidu.com)域名解析是网络请求的第一 ...
- 计算机网络之应用层概述(C/S模型与p2p模型)
文章转自:https://blog.csdn.net/weixin_43914604/article/details/105582318 学习课程:<2019王道考研计算机网络> 学习目的 ...
- 【计算机网络】应用层(一) HTTP
HTTP报文 HTTP报文是HTTP应用程序间发送的数据块,它由三部分组成:起始行(start line),首部(header)和主体(body),如下图所示: 从分类上,报文又可以分为请求报 ...
- [Note] 计算机网络的应用层
应用层 原理 结构和模型 客户-服务器体系结构(client-server architecture ) 通信不是直接的,需要通过服务器转发 经常会在服务器积压大量的负载 服务器(server) 服务 ...
- 计算机基础:计算机网络-chapter6应用层
应用层为协议最顶部,为用户服务. 常见的服务:邮件,万维网,DNS等 DNS:使用UDP承载,部分使用TCP协议 作用 将域名映射为IP 域名格式:自己到上级域名的访问 DNS服务器提供域名的资源记录 ...
- <计算机网络>计算机网络和应用层
1.端系统通过通信链路和分组交换机连接在一起,构成网络.网络和网络之间通过路由器相连,组成了因特网. 2.ISP(Internet Service Provider)因特网服务提供商.端系统通过ISP ...
- Python模块探秘之smtplib,实现纯文本邮件的发送
今天学到了如何使用Python的smtplib库发送邮件,中间也是遇到了各种各样的错误和困难,还好都一一的解决了.下面来谈一谈我的这段经历. 配置你的邮箱 为什么要配置邮箱呢?具体要配置什么呢? 因为 ...
- page 页 分页 分段
小结: 1. 页:磁盘和内存间传输数据的最小单位: MySQL: What is a page? https://stackoverflow.com/questions/4401910/mysql-w ...
- 【原理、命令】Git基本原理、与Svn的区别、命令
一.Git是什么? Git是目前世界上最先进的分布式版本控制系统.工作原理 / 流程:Workspace:工作区Index / Stage:暂存区Repository:仓库区(或本地仓库)Remote ...
随机推荐
- grunt中常见的插件
/** * 需要用到的文件夹有 js(src) css image html */ gulp是一种自动化构建工具,可以增强我们的工作流程,他是基于 Node.js 构建的,与gruntjs相比,gul ...
- jQuery 插件 的this 指向问题(实战)
daterangepicker 是一个JavaScript组件,用来选择日期. 资源直接搜索 daterangepicker 即可,当然好看的样式可以基于Bootstrap. 官网:http://ww ...
- 代码管理器 TFS2013
多人开发代码管理器肯定是少不了的,出于项目需要在服务器上装了tfs2013用于代码管理,既然用vs进行开发自然选择微软自家的tfs.记录下安装和使用起来的过程. 安装 TFS2013(Team Fou ...
- ionic 项目中使用ngCordova插件$cordovaCamera筛选手机图库图片显示出来并上传
原文档请看http://www.ncloud.hk/%E6%8A%80%E6%9C%AF%E5%88%86%E4%BA%AB/ionic%E5%9B%BE%E7%89%87%E4%B8%8A%E4%B ...
- epoll的ET和LT模式比较 - 源码分析
eventpoll是一种文件,它实现了一种机制利用一条rdllist队列来避免阻塞地进行poll.eventpoll归根到底还是在使用poll.而ET比LT高效,并不在于是否使用了poll,更不能说是 ...
- Spring+SpringMVC+MyBatis深入学习及搭建(十四)——SpringMVC和MyBatis整合
转载请注明出处:http://www.cnblogs.com/Joanna-Yan/p/7010363.html 前面讲到:Spring+SpringMVC+MyBatis深入学习及搭建(十三)--S ...
- Ecshop去掉模版中随机出现Ecshop版权的方法
EC如果是免费用户用的话,模版里面会随机出现 powered by ecshop 的字样,看了一下原来是在COMMON.JS里面写的一段代码,删除掉就可以解决掉了,方法如下: 打开 js/commo ...
- Redis中的数据对象
redis对象 redis中有五种常用对象 我们所说的对象的类型大多是值的类型,键的类型大多是字符串对象,值得类型大概有以下几种,但是无论哪种都是基于redisObject实现的 redisObjec ...
- 在React中使用Redux
这是Webpack+React系列配置过程记录的第六篇.其他内容请参考: 第一篇:使用webpack.babel.react.antdesign配置单页面应用开发环境 第二篇:使用react-rout ...
- ExtJs异步无法向外传值和赋值的解决办法,亲测有效
1.Ext.data.Store.load();方法是异步的,下面的方式获得的reCount始终是0,因为还没等后台的方法执行完就赋值了,此时store的record还没获得值. var testSt ...