概述
加油!寒假偷博人
一、网络应用层内容概述。
1本篇内容:(原理、实例、编程)
网络应用体系结构 客户机/服务器 P2P 混合结构
网络应用的服务需求 可靠性 带宽 时延
Internet传输层服务模型 TCP UDP
特定网络应用及协议 HTTP SMTP, POP, IMAP DNS P2P应用
Socket编程 TCP UDP
2课后讨论
假如你要创业,你会开发什么互联网应用/服务?
互联网/Internet为全世界无数人提供了创造财富、实现梦想的机会,也成就了Google、阿里巴巴、腾讯等许多企业和扎克伯格、马云、马化腾等英雄式的人物.
今天仍然是互联网创业的繁荣阶段,每天都有很多个创业公司冒出来,通过众筹平台、天使投资等获得支持,研发新的互联网应用和服务。
那么,假如你现在要创业,你打算研发什么互联网应用和/或服务?服务于哪些用户?为用户带来/创造什么价值?如何实现盈利和可持续发展?
二、网络应用基本原理
一些网络应用的例子
这些都叫Internet Application
1.创建一个新的网络应用
- 编程
在不同的端系统上运行
通过网络基础设施提供的服务,应用进程彼此通信
如Web: Web 服务器软件与浏览器软件通信 - 网络核心中没有应用层软件
网络核心没有应用层功能
网络应用只在端系统上存在,快速网络应用开发和部署
2.网络应用的体系结构.(如下有3点)
2.1 客户机/服务器结构(Client-Server, C/S)
该结构扩展性差。
当所有人都访问一台服务器,性能(服务能力、数据输入输出)断崖式下降(就像抢课的时候,抢课网站必然崩了)
- 服务器
7*24小时提供服务
永久性访问地址/域名
利用大量服务器实现可扩展性 - 客户机
主动与服务器通信,使用服务器提供的服务
间歇性接入网络
可能使用动态IP地址
不与其他客户机直接通信 - 例如Web应用:
2.2 点对点结构(Peer-to-peer, P2P)
缺点:难于管理
优点:自扩展性-新peer节点带来新的服务能力,当然也带来新的服务请求
- 没有永远在线的服务器
- 任意端系统/节点之间可以直接通讯
- 节点间歇性接入网络
- 每一个节点既是客户端又是服务器
- 参与的主机间歇性连接且可以改变IP 地址- 优点:高度可伸缩
- 例子: Gnutella,迅雷
P2P应用:
P2P已经统治了当今的互联网总流量的70-90%。网络的各种技术围绕在我们周围,每天在互联网中进行的活动几乎没有不沾P2P技术的。如QQ、YY、Skype、MSN都的是P2P应用。P2P允许用户之间互相沟通、交换信息、交换文件。用户之间的信息交流不是直接的,需要服务器来协调转发。直接将人们联系了起来,让人们通过互联网直接交流。它使得网络上的沟通变得更容易、更直接,真正地消除中间环节。
----来自
2.2.3混合结构(Hybrid)
- 如Napster应用
- 文件传输使用——P2P结构
- 文件的搜索采用C/S结构——集中式
每个节点向中央服务器登记自己的内容
每个节点向中央服务器提交查询请求,
查找感兴趣的内容
即时通信
在线检测:集中
当用户上线时,向中心服务器注册其IP地址
用户与中心服务器联系,以找到其在线好友的位置
两个用户之间聊天:P2P
3.网络应用进程通信
进程: 在主机上运行的应用程序
3.1网络应用的基础:进程间通信
-
进程:
主机上运行的程序 -
同一主机上运行的进程之间通信
进程间通信机制
操作系统提供 -
不同主机上运的进程间通信
消息交换
通过交换报文(Message)来通信
使用OS提供的通信服务
按照应用协议交换报文
借助传输层提供的服务
3.2分布式进程通信需要解决的问题
p2p型结构的网络应用也有客户端进程和服务器进程之分
3.3如何寻址进程(对进程进行编址(addressing))
- 不同主机上的进程间通信,那么每个进程必须拥有标识符 。 即:SAP(发送也需要标示)
- 如何寻址主机?——唯一的 32位IP地址
Q: 主机有了IP地址后,是否足以定位进程?
A: 否。仅仅有IP地址不能够唯一标示一个进程;在一台端系统上有很多应用进程在运行 - 端口号/Port number
为主机上每个需要通信的进程分配一个端口号
HTTP: TCP 80; Mail: TCP 25 ;ftp:TCP 2 - 进程的标识符
用IP+port标示 端节点
本质上,一对主机进程之间的通信由2个端节点构成(一个快递,寄件人和收件人) - 例如
3.2.1传输层提供的服务-需要穿过层间的信息
- 层间接口必须要携带的信息
要传输的报文(对于本层来说:SDU)
谁传的:对方的应用进程的标示:IP+TCP(UDP) 端口
传给谁:对方的应用进程的标示:对方的IP+TCP(UDP)端口号 - 传输层实体(tcp或者udp实体)根据这些信息进行TCP报文段(UDP数据报)的封装
源端口号,目标端口号,数据等
将IP地址往下交IP实体,用于封装IP数据报:源IP,目标IP
3.2.2传输层提供的服务-层间信息的代表
- 如果Socket API 每次传输报文,都携带如此多的信息,太繁琐易错,不便于管理
- 用个代号标示通信的双方或者单方:socket
- 就像OS打开文件返回的句柄一样
对句柄的操作,就是对文件的操作 - TCP socket:
TCP服务,两个进程之间的通信需要之前要建立连接
两个进程通信会持续一段时间,通信关系稳定
可以用一个整数表示两个应用实体之间的通信关系,本地标示
穿过层间接口的信息量最小
TCP socket:源IP,源端口,目标IP,目标IP,目标端口
3.3.1 套接字:SOCKET
- 进程间通信利用socket发送/接收消息实现
- 类似于寄信
发送方将消息送到门外邮箱
发送方依赖(门外的)传输基础设施将消息传到接收方所在主机,并送到接收方的门外
接收方从门外获取消息 - 传输基础设施向进程提供API
传输协议的选择
参数的设置
3.3.1TCP之上的套接字(socket)
对于使用面向连接服务(TCP)的应用而言,套接字是4元组的一个具有本地意义的标示
4元组:(源IP,源port,目标IP,目标port)
唯一的指定了一个会话(2个进程之间的会话关系)
应用使用这个标示,与远程的应用进程通信
不必在每一个报文的发送都要指定这4元组
就像使用操作系统打开一个文件,OS返回一个文件句柄一样,以后使用这个文件句柄,而不是使用这个文件的目录名、文件名
简单,便于管理
s:socket p:port
3.3.3UDP之上的套接字(socket)
- 对于使用无连接服务(UDP)的应用而言,套接字是2元组的一个具有本地意义的标示
2元组:IP,port (源端指定)
UDP套接字指定了应用所在的一个端节点(end point)
在发送数据报时,采用创建好的本地套接字(标示ID),就不必在发送每个报文中指明自己所采用的ip和port
但是在发送报文时,必须要指定对方的ip和udp port(另外一个段节点)
3.4如何使用传输层提供的服务实现应用
定义应用层协议: 报文格式,解释,时序等
编制程序, 通过API调用网络基础设施提供通信服务传报文,解析报文,实现应用时序等
4. 应用层协议
定义了运行在不同端系统上的应用程序进程如何相互传递报文
- 交换的报文类型:请求和应答报文
- 各种报文类型的语法:报文中的各个字段及其描述
- 字段的语义:即字段取值的含义
- 进程何时、如何发送报文及对报文进行响应的规则
应用协议仅仅是应用的一个组成部分
- Web应用:HTTP协议,web客
户端,web服务器,HTML
- 公开协议
由RFC(Request For Comments)定义
允许互操作
HTTP, SMTP, …… - 私有协议
多数P2P文件共享应用
协议不公开
如:Skype
4.1应用需要传输层提供什么样的服务?
Internet 传输层提供的服务
Internet应用及其应用层协议和传输协议
如何描述/衡量传输层的服务
常见应用对传输服务的要求
4.2应用层协议的内容
-
消息的类型(type)
请求消息
响应消息 -
消息的语法(syntax)/格式
消息中有哪些字段(field)?
每个字段如何描述 -
字段的语义(semantics)
字段中信息的含义 -
规则(rules)
进程何时发送/响应消息
进程如何发送/响应消息
-
常见协议(这里总结了三种常见的应用层协议:HTTP、FTP、SMTP
- HTTP
—超文本传输协议(Hypertext transfer protocol)。是一种详细规定了浏览器和万维网(WWW = World Wide Web)服务器之间互相通信的规则,通过因特网传送万维网文档的数据传送协议。 - FTP协议
文件传输协议FTP(File Transfer Protocol)是因特网中使用最广泛的文件传输协议。FTP使用交互式的访问,允许客户指定文件的类型和格式(如指明是否使用ASCII码),并允许文件具有存取权限(如访问文件的用户必须经过授权,并输入有效的口令)
- SMTP(Simple Mail Transfer Protocol)
即简单邮件传输协议。它是一组用于由源地址到目的地址传送邮件
的规则,由它来控制信件的中转方式。SMTP协议属于TCP/IP协议簇,它帮助每台计算机在发送或中转信件
时找到下一个目的地。通过SMTP协议所指定的服务器,就可以把E-mail寄到收信人的服务器上了,整个过程
只要几分钟。SMTP服务器则是遵循SMTP协议的发送邮件服务器,用来发送或中转发出的电子邮件。SMTP
是一种TCP协议支持的提供可靠且有效电子邮件传输的应用层协议。
- HTTP
三、Web应用
1.Web与HTTP
- World Wide Web: Tim Berners-Lee(蒂姆·伯纳斯·李 [1] (Tim Berners-Lee),OM,KBE,FRS,FREng,FRSA,(Sir Timothy John “Tim” Berners-Lee,1955年6月8日-),英国计算机科学家。
他是万维网的发明者,南安普顿大学与麻省理工学院教授。)
网页
网页互相链接 - 网页(Web Page)包含多个对象(objects)
对象:HTML文件、JPEG图片、视频文件、动态脚本等
基本HTML文件:包含对其他对象引用的链接 - 对象的寻址(addressing) (上面讲到的是寻址进程)
URL(Uniform Resoure Locator):统一资源定位器 RFC1738
Scheme://host:port/path
2.HTTP超文本传输协议
Web的应用层协议
HyperText Transfer Protocol
- 采用C/S结构
客户—Browser:请求、接收、展示Web对象
服务器—Web Server:响应客户的请求,发送对象 - HTTP版本:
1.0: RFC 1945
1.1: RFC 2068
2.1使用TCP传输服务
使用TCP:
- 服务器在80端口等待客户的请求
浏览器发起到服务器的TCP连接(创建套接字Socket)
服务器接受来自浏览器的TCP连接
浏览器(HTTP客户端)与Web服务器(HTTP服务器)交 换HTTP消息(应用层协议报文)
关闭TCP连接
无状态(stateless)
- 服务器不维护任何有关客户端过去所发请求的信息
2.2HTTP连接
HTTP连接的两种类型:
- 非持久性连接(NonpersistentHTTP)
每个TCP连接最多允许传输一个对象
HTTP 1.0版本使用非持久性连接
下载多个对象需要多个TCP连接 - 持久性连接(Persistent HTTP)
每个TCP连接允许传输多个对象
HTTP 1.1版本默认使用持久性连接
2.2.1非持久性连接
假定用户在浏览器中输入URL
www.someSchool.edu/someDepartment/home.index
包含文本和指向10个jpeg图片的链接
- 响应时间分析与建模
- RTT(Round Trip Time)
从客户端发送一个很小的数据包(一个小的分组)到服务器并返回所经历的时间- 响应时间(Response time)
发起、建立TCP连接:1个RTT
发送HTTP请求消息到HTTP响应消息的前几个字节到达:1个RTT
响应消息中所含的文件/对象传输时间
Total=2RTT +文件发送时间
非持久性连接的问题- 每个对象需要2个RTT
- 操作系统需要为每个TCP连接开销资源(overhead)
- 浏览器会怎么做?
• 打开多个并行的TCP连接以获取网页所需对象
• 给服务器端造成什么影响?
2.2.2持久性HTTP
持久性连接
- Server发送响应后,服务器保持TCP连接的打开
- 后续的HTTP消息可以通过这个连接发送
- 客户端在遇到一个引用对象的时候,就可以尽快发送该对象的请求
无流水(pipelining)的持久性连接(One by one 的 Request)
- 客户端只有收到前一个响应后才发送新的请求
- 每个被引用的对象耗时1个RTT
带有流水机制的持久性连接
- HTTP 1.1的默认选项
- 客户端只要遇到一个引用对象就尽快发出请求
- 理想情况下,收到所有的引用对象只需耗时约1个RTT
3.HTTP报文
HTTP协议有两类消息(报文)
- 请求消息(报文)(request)
- 响应消息(报文)(response)
3.1HTTP请求消息(报文)
- 请求消息
ASCII:人直接可读
- HTTP请求消息的通用格式
- 上传输入的方法
- POST方法
网页经常需要填写表格(表单)(form)
在请求消息的消息体(实体主体entity body)中上传客户端的输入 - URL方法
使用GET方法
输入信息通过request行的URL字段上传
- POST方法
- 方法的类型
- HTTP/1.0
GET
POST
HEAD
• 要求Server不要将所请求的对象放入响应消息中→故障跟踪 - HTTP/1.1
GET, POST, HEAD
PUT
• 将消息体中的文件上传到URL字段所指定的路径
DELETE
• 删除URL字段所指定的文件
- HTTP/1.0
3.2 HTTP响应消息(报文)
- HTTP响应状态代码
响应消息的第一行 - 示例
200 OK(请求成功,请求对象包含在响应报文的后续部分)
301 Moved Permanently(请求的对象已经被永久转移了;新的URL在响应报文的Location:
首部行中指定)
400 Bad Request(一个通用的差错代码,表示该请求不能被服务器解读)
404 Not Found(请求的文档在该服务上没有找到)
505 HTTP Version Not Supported
3.3体验一下HTTP
- 利用telnet登录到某个Web服务器 (Telnet的简单使用
telnet www.hit.edu.cn 80 - 输入一个HTTP请求
GET /about/profile.htm HTTP/1.1
Host: www.hit.edu.cn - 查看HTTP服务器所返回的响应消息
然而我到了现在还在链接
后来到了这个页面
我一动键盘就…
还有一个郑老师的ppt的Trying out HTTP (client side) for yourself
3.4Cookie技术 (扩展网络应用的功能)
Cookie技术
- 某些网站为了辨别用户身份、进行session跟踪而储存在用户本地终端上的数据(通常经过加密)。
RFC6265Cookie的组件
- HTTP响应消息的cookie头部行
HTTP请求消息的cookie头部行
保存在客户端主机上的cookie文件,由浏览器管理
Web服务器端的后台数据库
3.4.1为什么需要Cookie?
HTTP协议无状态 很多应用需要服务器掌握客户端的 状态,如网上购物,如何实现?
3.4.2Cookie的原理
3.4.3Cookie的作用
- Cookie能够用于:
身份认证
购物车
推荐
Web e-mail
……. - 隐私问题
3.5Web缓存/代理服务器技术 (提升网络应用的性能)
功能
- 在不访问原始服务器的前提下,满足客户端的HTTP请求。
为什么要发明这种技术?
- 缩短客户请求的响应时间
减少机构/组织的流量
在大范围内(Internet)实现有效的内容分发
- Web缓存/代理服务器
- 用户设定浏览器,通过缓存进行Web访问
- 浏览器向缓存/代理服务器发送所有的HTTP请求
- 如果所请求对象在缓存中,缓存返回对象
- 否则,缓存服务器向原始服务器发送HTTP请求,获取对象,然后返回给客户端并保存该对象
- 缓存既充当客户端,也充当服务器
- 一般由ISP(Internet服务提供商)架设
使用缓存可以~~~~
3.5.1Web缓存示例
来看郑老师将示例,第64min处
以上是郑老师的ppt例子内容。
3.5.2条件性GET方法 (对Web缓存/代理服务器技术的功能完善
目标:
- 如果缓存有最新的版本,则不需要发送请求对象
缓存:
- 在HTTP请求消息中声明所持有版本的日期 If-modified-since: <date >
服务器:
- 如果缓存的版本是最新的,则响应消息中不包含对象
HTTP/1.0 304 Not Modified
本篇结束
最后
以上就是忧心冬日为你收集整理的Day4:应用层——网络应用层内容概述、网络应用基本原理(体系结构、进程通信、套接字socket、应用层协议)、Web应用与HTTP一、网络应用层内容概述。二、网络应用基本原理三、Web应用的全部内容,希望文章能够帮你解决Day4:应用层——网络应用层内容概述、网络应用基本原理(体系结构、进程通信、套接字socket、应用层协议)、Web应用与HTTP一、网络应用层内容概述。二、网络应用基本原理三、Web应用所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复