计算机网络之应用层_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 ...
随机推荐
- eclipse 好用的插件总结
改变eclipse的背景色,各种关键词颜色的插件. color theme. 在mac下最好是通过手动复制粘贴jar文件到, eclipse的plugins下面. 通过Install new soft ...
- 通过PHP前端后台交互/通过ajax前端后台交互/php基础传输数据应用/简单的留言版/简单的注册账户/简单的登录页/
前 言 PHP 通过上一篇博客,注册账号与登录页面--前后台数据交互 跳转转到index主页,接下来进入主页留言板功能,通过ajax向后台传输数据,同时发表留言. 具体的内容分析如下 ...
- AutoMapper5.0创建对象方法更新
/// <summary> /// 单个对象映射 /// </summary> public static TDestination MapTo<TSource, TDe ...
- 你不知道的 flex 技巧
一.使用 Auto Margins 对齐 不需要给图片使用任何的 flex,也不需要给父容器设置 space-between,只需要给 ' BUY-BUY-BUY' 按钮设置 margin-left: ...
- SevenZipSharp的入门教程(包含如何加密压缩,解密压缩)
(一)为什么选择7z 7z 是一种主流高效的压缩格式,它拥有极高的压缩比.在计算机科学中,7z是一种可以使用多种压缩算法进行数据压缩的档案格式.该格式最初被7-Zip实现并采 ...
- MacTex XeLaTex xdvipdfmx:fatal: pdf_ref_obj(): passed invalid object. 报错的解决方法
在使用MacTex配合TexStudio编译beamer的时候,爆出如下错误, xdvipdfmx:fatal: pdf_ref_obj(): passed invalid object. 结果尝试其 ...
- div自身高度、屏幕高度
获取元素高度 scrollWidth //显示当前元素的宽度 scrollHeight //显示当前元素的高度 scrollLeft //显示当前元素的左边距左侧的距离 scroll ...
- C# 校验帮助类-正则表达式
一.简介 很多时候我们都需要用到一些验证的方法,有时候需要用正则表达式校验数据时,往往需要到网上找很久,结果找到的还不是很符合自己想要的.所以我把自己整理的校验帮助类分享处理,在这里分享一下,给自己留 ...
- Struts2之初识篇(一)——与struts的区别和基本配置
Struts2资源下载地址: Struts官方地址:http://struts.apache.org/ 我这里下载了struts2的最新版本struts2-2.5.10.1-all.所有内容如下图: ...
- 一次C++调试记录
之前开发用Linux C比较多,C++中的STL 容器基本没有接触过.最近在学习C++,平时用到c++ 17中的部分新特性,下面就简单分享下自己C++的学习流程. 一.环境搭建 本 ...