计算机网络-网络应用
网络应用
网络应用的体系结构
客户机/服务器结构(Client-Server, C/S),点对点结构(Peer-to-peer, P2P),混合结构(Hybrid)5
客户机/服务器结构
- 服务器
- 7*24小时提供服务
- 永久性访问地址/域名
- 利用大量服务器实现可扩展性
- 客户机
- 与服务器通信,使用服务器提供的服务
- 间歇性接入网络
- 可能使用动态IP地址
- 不会与其他客户机直接通信
例子:Web
纯P2P结构
- 没有永远在线的服务器
- 任意端系统/节点之间可以直接通讯
- 节点间歇性接入网络
- 节点可能改变IP地址
- 优点:高度可伸缩
- 缺点:难于管理
混合结构
能否将两种结构混合在一起使用?混合能够利用两者的优点同时规避两者的缺点吗?
例如Napster:文件传输使用P2P结构,文件的搜索采用C/S结构——集中式,每个节点向中央服务器登记自己的内容,每个节点向中央服务器提交查询请求,查找感兴趣的内容
网络应用进程通信
进程:主机上运行的程序
客户机进程:发起通信的进程,服务器进程:等待通信请求的进程
同一主机上运行的进程之间如何通信?进程间通信机制,操作系统提供
不同主机上运行的进程间如何通信?消息交换
套接字: Socket
进程间通信利用socket发送/接收消息实现,类似于寄信,发送方将消息送到门外邮箱,发送方依赖(门外的)传输基础设施将消息传到接收方所在主机,并送到接收方的门外,接收方从门外获取消息,传输基础设施向进程提供API:传输协议的选择,参数的设置
如何寻址进程?
不同主机上的进程间通信,那么每个进程必须拥有标识符,寻址主机——IP地址,为主机上每个需要通信的进程分配一个端口号,进程的标识符:IP地址+端口号
应用层协议
网络应用需遵循应用层协议
- 公开协议
- 由RFC(Request For Comments)定义
- 允许互操作
- HTTP, SMTP, ......
- 私有协议
- 多数P2P文件共享应用6
应用层协议的内容
- 消息的类型(type)
- 请求消息
- 响应消息
- 消息的语法(syntax)/格式
- 消息中有哪些字段(field)?
- 每个字段如何描述
- 字段的语义(semantics)
- 字段中信息的含义
- 规则(rules)
- 进程何时发送/响应消息进程如何发送/响应消息
网络应用的需求与传输层服务
数据丢失(data loss)/可靠性(reliability):某些网络应用能够容忍一定的数据丢失:网络电话,某些网络应用要求100%可靠的数据传输:文件传输,telnet
时间(timing)/延迟(delay): 有些应用只有在延迟足够低时才“有效”,网络电话/网络游戏
带宽(bandwidth):某些应用只有在带宽达到最低要求时才“有效”:网络视频,某些应用能够适应任何带宽——弹性应用:email
典型网络应用对传输服务的需求
TCP服务
- 面向连接: 客户机/服务器进程间需要建立连接
- 可靠的传输
- 流量控制: 发送方不会发送速度过快,超过接收方的处理能力
- 拥塞控制: 当网络负载过重时能够限制发送方的发送速度
- 不提供时间/延迟保障
- 不提供最小带宽保障
UDP服务
- 无连接
- 不可靠的数据传输
- 不提供:
- 可靠性保障
- 流量控制
- 拥塞控制
- 延迟保障
- 带宽保障
典型网络应用所使用的传输层服务
Web应用
超文本传输协议:HyperText Transfer Protocol,C/S结构:客户—Browser:请求、接收、展示Web对象,服务器—Web Server:响应客户的请求,发送对象,HTTP版本:1.0:RFC 1945,1.1:RFC 2068
使用TCP传输服务,服务器在80端口等待客户的请求,浏览器发起到服务器的TCP连接(创建套接字Socket),服务器接受来自浏览器的TCP连接,浏览器(HTTP客户端)与Web服务器(HTTP服务器)交换HTTP消息,关闭TCP连接,服务器不维护任何有关客户端过去所发请求的信息,即无状态
状态的协议更复杂:需维护状态(历史信息),如果客户或服务器失效,会产生状态的不一致,解决这种不一致代价高
HTTP连接
- 非持久性连接(NonpersistentHTTP)
- 每个TCP连接最多允许传输一个对象
- HTTP 1.0版本使用非持久性连接
- 持久性连接(Persistent HTTP)
- 每个TCP连接允许传输多个对象
- HTTP 1.1版本默认使用持久性连接
非持久性连接
RTT(Round Trip Time):从客户端发送一个很小的数据包到服务器并返回所经历的时间
响应时间(Response time):发起、建立TCP连接:1个RTT,发送HTTP请求消息到HTTP响应消息的前几个字节到达:1个RTT,响应消息中所含的文件/对象传输时间,Total=2RTT +文件发送时间
持久性连接
非持久性连接的问题:每个对象需要2个RTT,操作系统需要为每个TCP连接开销资源(overhead),浏览器会怎么做?打开多个并行的TCP连接以获取网页所需对象,给服务器端造成什么影响?
持久性连接:发送响应后,服务器保持TCP连接的打开,后续的HTTP消息可以通过这个连接发送
无流水(pipelining)的持久性连接:客户端只有收到前一个响应后才发送新的请求,每个被引用的对象耗时1个RTT
带有流水机制的持久性连接:HTTP 1.1的默认选项,客户端只要遇到一个引用对象就尽快发出请求,理想情况下,收到所有的引用对象只需耗时约1个RTT
HTTP消息格式
HTTP协议有两类消息:请求消息(request),响应消息(response),请求消息:ASCII:人直接可读
TTP请求消息
HTTP请求消息的通用格式
上传输入的方法
POST方法:网页经常需要填写表格(form),在请求消息的消息体(entity body)中上传客户端的输入
URL方法:使用GET方法,输入信息通过request行的URL字段上传
HTTP响应消息
- HTTP响应状态代码
- 200 OK
- 301 Moved Permanently
- 400 Bad Request
- 404 Not Found
- 505 HTTP Version Not Supported
Cookie技术
为什么需要Cookie?
HTTP协议无状态很多应用需要服务器掌握客户端的状态,如网上购物,如何实现?
Cookie技术:某些网站为了辨别用户身份、进行session跟踪而储存在用户本地终端上的数据(通常经过加密)。RFC6265
Cookie的组件:HTTP响应消息的cookie头部行,HTTP请求消息的cookie头部行,保存在客户端主机上的cookie文件,由浏览器管理,Web服务器端的后台数据库
Cookie的原理
Cookie能够用于:身份认证,购物车,推荐,Web e-mail,.......
Web缓存/代理服务器技术
功能:在不访问服务器的前提下满足客户端的HTTP请求。
为什么要发明这种技术?
缩短客户请求的响应时间,减少机构/组织的流量,在大范围内(Internet)实现有效的内容分发(CDN)
Web缓存/代理服务器:用户设定浏览器通过缓存进行Web访问,浏览器向缓存/代理服务器发送所有的HTTP请求,如果所请求对象在缓存中,缓存返回对象,否则,缓存服务器向原始服务器发送HTTP请求,获取对象,然后返回给客户端并保存该对象,缓存既充当客户端,也充当服务器,一般由ISP(Internet服务提供商)架设
Web缓存示例
假定:对象的平均大小=100,000比特,机构网络中的浏览器平均每秒有15个到原始服务器的请求,从机构路由器到原始服务器的往返延迟=2秒
网络性能分析:局域网(LAN)的利用率=15%,接入互联网的链路的利用率=100%,总的延迟=互联网上的延迟+访问延迟+局域网延迟=2秒+几分钟+几微秒
解决方案1:提升互联网接入带宽=10Mbps;网络性能分析:局域网(LAN)的利用率=15%,接入互联网的链路的利用率=15%,总的延迟=互联网上的延迟+访问延迟+局域网延迟=2秒+几微秒+几微秒,但是成本太高
解决方案2:安装Web缓存,假定缓存命中率是0.4,网络性能分析:40%的请求立刻得到满足,60%的请求通过原始服务器满足,接入互联网的链路的利用率下降到60%,从而其延迟可以忽略不计,例如10微秒,总的平均延迟=互联网上的延迟+访问延迟+局域网延迟=0.6×2.01秒+0.4×n微秒<1.4秒
条件性GET方法
目标:如果缓存有最新的版本,则不需要发送请求对象
缓存:在HTTP请求消息中声明所持有版本的日期,If-modified-since:<date>
服务器:如果缓存的版本是最新的,则响应消息中不包含对象,HTTP/1.0 304 Not Modified
Email应用
Email应用的构成组件:邮件客户端(user agent),邮件服务器,SMTP协议(Simple Mail Transfer Protocol)
邮件客户端:读、写Email消息,与服务器交互,收、发Email消息,Outlook, Foxmail, Thunderbird,Web客户端
邮件服务器(Mail Server):邮箱:存储发给该用户的Email,消息队列(message queue):存储等待发送的Email
SMTP协议:邮件服务器之间传递消息所使用的协议,客户端:发送消息的服务器,服务器:接收消息的服务器
SMTP协议: RFC 2821
使用TCP进行email消息的可靠传输,端口25,传输过程的三个阶段:握手,消息的传输,关闭,命令/响应交互模式:命令(command): ASCII文本,响应(response): 状态代码和语句,Email消息只能包含7位ASCII码
SMTP交互示例
SMTP协议使用持久性连接,要求消息必须由7位ASCII码构成,SMTP服务器利用CRLF.CRLF确定消息的结束
与HTTP对比:
- HTTP: 拉式(pull)
- SMTP: 退式(push)
- 都使用命令/响应交互模式
- 命令和状态代码都是ASCII码
- HTTP: 每个对象封装在独立的响应消息中
- SMTP: 多个对象在由多个部分构成的消息中发送
Email消息格式与POP3协议
Email消息格式
SMTP:email消息的传输/交换协议,RFC 822:文本消息格式标准
- 头部行(header)
- To
- From
- Subject
- 消息体(body)
- 消息本身
- 只能是ASCII字符
Email消息格式:多媒体扩展
MIME:多媒体邮件扩展RFC 2045, 2056
过在邮件头部增加额外的行以声明MIME的内容类型
邮件访问协议
邮件访问协议:从服务器获取邮件
- POP: Post Office Protocol [RFC 1939]
- 认证/授权(客户端<-->服务器)和下载
- IMAP: Internet Mail Access Protocol [RFC 1730]
- 更多功能
- 更加复杂
- 能够操纵服务器上存储的消息
- HTTP:163, QQ Mail等。
POP协议
IMAP协议
所有消息统一保存在一个地方:服务器,允许用户利用文件夹组织消息,IMAP支持跨会话(Session)的用户状态:文件夹的名字,文件夹与消息ID之间的映射等
DNS概述
Internet上主机/路由器的识别问题,IP地址,域名:www.hit.edu.cn;问题:域名和IP地址之间如何映射?
域名解析系统DNS:多层命名服务器构成的分布式数据库,应用层协议:完成名字的解析,Internet核心功能,用应用层协议实现,网络边界复杂
- DNS服务
- 域名向IP地址的翻译
- 主机别名
- 邮件服务器别名
- 负载均衡:Web服务器
- 问题:为什么不使用集中式的DNS?
- 单点失败问题
- 流量问题
- 距离问题
- 维护性问题
分布式层次式数据库
DNS根域名服务器
本地域名解析服务器无法解析域名时,访问根域名服务器,根域名服务器:如果不知道映射,访问权威域名服务器,获得映射,向本地域名服务器返回映射
全球有13个根域名服务器b
TLD和权威域名解析服务器
顶级域名服务器(TLD, top-level domain): 负责com, org, net,edu等顶级域名和国家顶级域名,例如cn, uk, fr等;Network Solutions维护com顶级域名服务器,Educause维护edu顶级域名服务器
权威(Authoritative)域名服务器:组织的域名解析服务器,提供组织内部服务器的解析服务,组织负责维护,服务提供商负责维护
本地域名解析服务器
不严格属于层级体系,每个ISP有一个本地域名服务器(默认域名解析服务器),当主机进行DNS查询时,查询被发送到本地域名服务器,作为代理(proxy),将查询转发给(层级式)域名解析服务器系统8
DNS查询示例
迭代查询:被查询服务器返回域名解析服务器的名字,“我不认识这个域名,但是你可以问题这服务器”
递归查询:将域名解析的任务交给所联系的服务器
如果本地域名服务器无缓存,当采用递归方法解析另一网络某主机域名时,用户主机、本地域名服务器发送的域名请求消息数分别为:一条、一条
域名递归解析过程中,主机向本地域名服务器发送DNS查询,被查询的域名服务器代理后续的查询,然后返回结果。所以,递归查询时,如果本地域名服务器无缓存,则主机和本地域名服务器都仅需要发送一次查询
DNS记录缓存和更新
只要域名解析服务器获得域名—IP映射,即缓存这一映射,一段时间过后,缓存条目失效(删除),本地域名服务器一般会缓存顶级域名服务器的映射,因此根域名服务器不经常被访问
记录的更新/通知机制:RFC 2136,Dynamic Updates in the Domain Name System (DNS UPDATE)
DNS记录和消息格式
DNS记录
DNS协议与消息
总结
计算机网络-网络应用相关推荐
- 计算机网络-网络应用(下)
目录 专栏 网络应用(下) P2P应用 原理与文件分发 纯P2P架构 文件分发:客户机/服务器 vs. P2P 客户机/服务器 P2P 例子 BitTorrent技术 索引技术 搜索消息 集中式索引 ...
- 计算机网络-网络应用(上)
目录 专栏 网络应用(上) 网络应用(层)内容概述 网络应用的基本原理 网络应用体系结构 客户机/服务器结构 纯P2P结构 混合结构 网络应用进程通信 网络应用的基础:进程间通信 套接字:Socket ...
- 计算机网络网络应用专科自考科目,自考计算机网络难度大吗?计算机网络自考本科有哪些科目?...
自考计算机网络难度大吗? 计算机网络专业在自考专业中是属于有难度的一个专业,首先,这个专业的考试涉及到了计算机原理.数学.数据库.编程语言等方面知识,这些知识对考生的逻辑思维和数学能力有较高的要求,不 ...
- 计算机网络之网络应用--DNS应用
系列文章目录 第二章计算机网络网络应用之DNS应用 DNS应用 系列文章目录 一.DNS概述(域名系统) 二.分布式层次数据库 2.1DNS根域名服务器 2.2顶级域名服务器(TLD)和权威域名服务器 ...
- 计算机网络之网络应用--Email应用
系列文章目录 第二章计算机网络网络应用之Email应用 Email应用 系列文章目录 一.Email应用概述 1.Email应用的构成 1.2Email服务器的优点 二. SMTP协议(RFC 282 ...
- 【计算机网络】应用层 : 总结 ( 网络应用模型 C/S P2P | 域名解析 DNS | 文件传输协议 FTP | 电子邮件 | 万维网 与 HTTP ) ★★★
文章目录 一.网络应用模型 ★ 二.域名解析过程 ★ 三.FTP 文件传输协议 四.电子邮件★ 五.万维网 和 HTTP 协议★ 一.网络应用模型 ★ 网络应用模型 : ① 客户 / 服务器 模型 ( ...
- 计算机网络技术及应用 课程 英语,计算机网络应用—现代英语课堂中的第三种语言...
陶 兰 摘 要 众所周知,传统的课堂教学包括了教师教学语言及教师体态语言.前者指教师为了灌输知识用自己的声音所进行的表达和与学生的交流;后者指教师为了达到教学目的而有意做出的表情.动作和姿势的总和.随 ...
- 计算机网络早期结构图,第21讲 计算机网络应用基础(一).ppt
第21讲 计算机网络应用基础(一) 4.1.1 计算机网络的形成与发展 1.计算机网络的定义 4.1.1 计算机网络的形成与发展 4.1.2 计算机网络的分类 4.1.2 计算机网络的分类 4.1.2 ...
- 高一计算机网络技术应用计划,高一计算机网络应用基础教学计划
高一计算机网络应用基础教学计划 成都市工程职业技术学校 学期授课计划 授课学期 2015年上学期 课程名称 计算机网络应用基础 适用班级 2014级计算机 1 班 任课教师: 袁冬梅 2015 年 3 ...
最新文章
- 图卷积和消息传递理论的可视化详解
- 报名 | 贝叶斯计算方法在生物制药领域的应用(基于SAS)
- mysql登录密码特殊字符_mysql密码中有特殊字符在命令行下登录的操作
- linux下运行gnuplot,Gnuplot Linux版下载
- 理解新增贷款、M2、社会融资总量之间的关系
- 牛客小白月赛6 J 洋灰三角
- 一个 人 的 态度 决定 他 成功 的 高度
- ESXI6.5虚拟开机自启动设置
- CSS 布局经典问题初步整理
- 什么行业,只要付出辛苦就稳赚不赔,每天稳定纯利润300就知足?
- 为什么我会觉得SegmentFault做得越来越力不从心了?
- CentOS 8下 MySQL 8.0 安装部署(亲测)
- wordpress中直接执行mysql查询语句的常用方法
- 广度优先搜索nodeHDU/HDOJ 1242 Rescue 典型的迷宫广度优先搜索题
- 2022年全新UI聚合支付系统四方源码4月最新更新安全升级修复XSS漏洞和补单漏洞新增诸多实用功能完美版
- 数据库安全-数据库习题
- 小度独立融资,百度上演“大象跳舞”
- AI对项目管理的影响
- 【Vegas原创】HP惠普笔记本重装系统无法引导无法进操作系统的终极解决方法
- android主线程和子线程的区别