目录

1. 网络应用程序体系结构

2. 进程通信

3. 应用需求与传输层服务

4. Web与HTTP

5. Email应用

6. FTP

7. DNS

8. P2P应用


1. 网络应用程序体系结构

客户-服务器体系结构

服务器:总是打开,具有固定的、周知的地址(IP地址),可利用大量服务器实现可拓展性。接收到来自某客户对某对象的请求后,向客户发送所请求的对象作为响应。

客户端:与服务器通信,使用服务器提供的服务。间歇性地接入网络,可能使用动态IP。客户之间不直接通信。

P2P体系结构

对位于数据中心的专用服务器有最小的(或没有)依赖,应用程序在间断连接的主机对之间使用直接通信,主机对称为对等方。节点也有可能改变IP地址。拥有自拓展性。高度可伸缩,但难于管理。

混合结构

两种结构混合在一起使用,如Napster,文件传输使用P2P结构,文件搜索采用C/S结构。

2. 进程通信

多个端系统上的程序是如何相互通信的呢?

用操作系统的术语说,进行通信的是进程而不是程序。一个进程可以被认为是运行在端系统中的一个程序。多个进程在相同的端系统中通信时,使用由端系统上操作系统提供的进程间通信机制相互通信。

在两个不同的端系统上的进程,通过跨越计算机网络交换报文(消息)相互通信。发送进程生成并向网络中发送报文;接收进程接收报文并可能做出回应。

网络程序由成对的进程组成,这些进程通过网络相互传输报文。在每对通信进程中,一个进程标识为客户,一个标识为服务器。对Web而言,浏览器为客户进程,Web服务器为服务器进程。对P2P而言,下载文件的对等方为客户进程,上载的为服务器。而在P2P中,一个进程既能是客户也能是服务器。

定义服务器与客户进程如下:客户:发起通信的进程;服务器:会话开始时等待联系的进程

进程与网络的接口

进程通过套接字向网络发送报文和从网络接收报文。套接字是同一台主机内应用层与传输层之间的接口。该套接字是建立网络应用程序的可编程接口吧,因此套接字是应用程序与网络直接的应用程序编程接口。开发者可以控制套接字在应用层的一切,但对传输层几乎没有控制权,仅可以选择传输层协议与设定几个传输层参数。

进程寻址

为了进程间的信息交换,需要对进程进行标识。

使用IP地址寻址主机。而一台主机上可能由多个进程,给每个进程一个端口号进行标识。最后进程的标识符为IP地址+端口号。·

应用层协议

网络应用需遵循应用层协议(公开协议与私有协议)。消息类型有请求消息与响应消息。消息的语法为包括的字段与字段的形式,语义为字段中信息的含义。规则为进程何时与如何发送消息。

3. 应用需求与传输层服务

网络应用对传输服务具有一定要求。

1. 数据丢失/可靠性:容忍一定的丢失或要求100%正确

2. 时间/延迟:有些要求低延迟

3. 带宽:有些需要带宽达到最低要求时才有效——网络视频

而传输层提供的传输服务如下:

TCP服务:是面向连接的服务,客户与服务器进程间需要建立TCP连接,连接为全双工的。而且是可靠的数据传输,无差错与乱序问题。支持流量控制与拥塞控制,不提供时间/延迟保障与最小带宽保障。

UDP服务:无连接,是不可靠的数据传输。不提供流量控制、拥塞控制、延迟保障和带宽保障。但是相对地,提供自由度,有极大的发挥空间。

4. Web与HTTP

(1)HTTP协议

Web页面是由对象组成,一个对象是一个文件(HTML文件、JEPG图片、Java程序或视频片段等)。多数Web页面由一个HTML基础文件和几个引用对象组成。HTML基本文件通过对象的URL地址引用页面中的其他对象。URL的构成如下:Scheme://host:port/path,对应协议、主机、端口号和路径。

Web对应的应用层协议是HTTP协议。HTTP定义了Web客户向Web服务器请求Web页面的方式以及服务器向客户发送Web页面的方式。当用户请求Web界面是,浏览器向服务器发送对页面包含对象的HTTP请求报文,服务器收到请求与并用包含对象的响应报文进行响应。(客户:请求、接收、展示Web界面,Web服务器:响应请求,发送对象)

HTTP使用TCP作为传输协议。客户(浏览器)首先发起一个与服务器的TCP连接,服务器在80端口等待请求,接收到来自浏览器的TCP连接后,开始进行HTTP消息交换。最后关闭TCP连接。

HTTP是一个无状态协议,服务器不维护任何有关客户端过去所发的请求消息。

连接建立后,浏览器与服务器就可以通过套接字接口访问TCP。在客户端发起请求报文后,报文就完全进入TCP控制。HTTP协议也就不用担心数据丢失的问题。(分层体系的好处)

非持久性连接:HTTP1.0 ,每个TCP连接最多允许传输一个对象。

持久性连接:HTTP1.1 ,允许传输多个对象。

RTT:往返时间,一个小数据包从客户端到服务器然后返回客户端的时间

响应时间包括:

1. 发起、建立TCP连接:1个RTT

2. 发送HTTP请求消息与前几个字节到达:1个RTT

3. 文件传输时间

非持久性连接:1个对象需要2个RTT,操作系统为每个TCP连接开销资源。

持久性连接:TCP连接一直打开,后续的HTTP也可以通过这个TCP连接发送

无流水连接:收到前一个的响应才发送新的请求

流水机制:HTTP1.1的默认选项,遇到一个新的引用对象发出请求

(相关计算:计算RTT)

(2)HTTP报文

HTTP报文包括请求报文和响应报文。

a. HTTP请求报文

用ASCII文本书写。必须有请求行和空白行,不一定有头部行和body

第一行为请求行,包括请求命令、URL和HTTP版本之后几行为头部行,包含各种信息。之后用空白行标识头部行结束。body在方法为GET时为空,在POST时才使用。上传输入时使用POST方法,在请求消息的body部分上传客户端的输入。也可以使用URL方法,在输入较少时使用GET方法,输入信息通过请求行的URL字段上传。

HTTP1.0:GET、POST、HEAD(请服务器不要把对象放在请求消息中,即不返回请求对象)

HTTP1.1:GET、POST、HEAD、PUT(将消息体中的文件上传到URL字段所指定的路径中)、DELETE(删除Web服务器上URL指定的对象)

b. HTTP响应报文

第一行为状态行,有三个字段:协议版本、状态码和状态信息。之后为首部行,中间有一个空白行,最后为实体体。

状态码和相关状态信息包括:

200 OK

301 Moved Permanently

400 Bad Request

404 Not Found

505 HTTP Version Not Supported

(3)cookie技术

解决HTTP无状态的问题

某些网站为了辨别用户身份、进行session跟踪而储存在用户本地终端上的数据(通常经过加密)。

Cookie的组件

1. HTTP响应消息的cookie头部行

2. HTTP请求消息的cookie头部行

3. 保存在客户端主机上的cookie文件,由浏览器管理

4. Web服务器端的后台数据库

Cookie原理:

Cookie用于身份认证、购物车、推荐与Web e-mail等,但会设计隐私问题。

(4)Web缓存/代理

功能:在不访问服务器的前提下满足用户的HTTP请求

目的:缩短用户请求的响应时间,减少机构/组织的流量,在大范围内实现有效的内容转发。

用户设定浏览器通过缓存进行Web访问,浏览器向缓存/代理服务器发送所有的 HTTP请求。如果所请求对象在缓存中,缓存返回对象;否则,缓存服务器向原始服务器发送HTTP 请求,获取对象,然后返回给客户端并保存该对象。缓存既充当客户端,也充当服务器,一般由ISP架设

条件性GET方法

如果缓存有最新的版本,则不需要发送请求对象。在HTTP请求消息中声明所持有版本的日期。使用If-modified-since: 。在服务器端,如果缓存的版本是最新的,则响应消息中不包含对象。对应响应为HTTP/1.0 304 Not Modified

5. Email应用

电子邮件系统包括:用户代理、邮件服务器和简单邮件传输协议(SMTP)。

用户代理:·读写Email消息,与服务器交互,进行收发消息

邮件服务器(核心):用邮箱存储发给该用户的Email,用消息队列存储等待发送的Email

SMTP协议:同样发送的为客户,接收的为服务器,是基于TCP的

(1)SMTP协议

端口号25.。传输时会经过握手、信息传输和关闭三个阶段。如果服务器未开机,客户会在稍后继续尝试建立连接。采用命令/响应的交互模式,命令为ASCII码文本,响应对应状态代码和语句。

Email信息只能是7位ASCII码。使用持久性连接,允许在一个TCP连接下发送所有报文。SMTP服务器利用CRLF.CRLF确 定消息的结束。

与HTTP对比:

HTTP: 拉式(pull)  SMTP: 推式(push)

HTTP: 每个对象封装在独立的响应消息中 SMTP: 多个对象在由多个部分构成的消息中发送

(2)email消息格式

使用MIME进行多媒体拓展,在头部增加额外的行。

(3)邮件接收协议

邮件访问协议:POP(无状态)、IMAP(支持有状态)、HTTP

总的流程,其中access protocol就是上面的邮件访问协议。

6. FTP

❖ FTP客户端使用TCP,在端口21与FTP服务器联系

❖ 客户端授权控制连接

❖ 客户端浏览远程目录,通过控制连接发送命令

❖ 当服务器收到文件传输命令时,服务器打开到客户端的第二个TCP数据连接(用于文件)

❖ 传输一个文件后,服务器关闭数据连接

❖ 服务器打开另一个TCP数据连接以传输另一个文件

❖ 控制连接:“带外”

❖ FTP服务器维护“状态”:当前目录,早期身份验证

❖用ADCII码编写请求报文

相关返回状态码

❖ 331 Username OK, password required

❖ 125 data connection already open; transfer starting

❖ 425 Can’t open data connection

❖ 452 Error writing file

7. DNS

一个由分层的DNS服务器实现的分布式数据库和一个使得主机能够查询分布式数据库的应用层协议。

主要任务:进行主机名(www.facebook.com等)到IP地址转化的目录服务

其他服务:1. 主机别名 2. 邮件服务器别名 3, 负载均衡

集中式DNS的问题:1. 单点故障 2. 流量巨大 3. 距离问题(时延) 4. 维护性问题

域名层次结构

根域名服务器:提供TLD服务器的IP地址。

TLD(顶级域名服务器):负责com, org, net,edu等顶级域名和国家顶级域名,提供权威的IP地址

权威DNS服务器:组织的域名解析服务器,提供组织内部服务器的解析服务,由组织或服务商进行维护。

本地域名解析服务器:不严格属于层级体系。每个ISP有一个本地域名服务器,为默认域名解析服务器。当主机进行DNS查询时,查询被发送到本地域名服务器。作为代理(proxy),将查询转发给(层级式)域名解析服务器系统

DNS查询

递归:

迭代:

DNS缓存与更新

只要域名解析服务器获得域名—IP映射,即缓存这一映射。一段时间过后,缓存条目失效(删除)。本地域名服务器一般会缓存顶级域名服务器的映射,因此根域名服务器不经常被访问

DNS记录

资源记录为四元组——(name, value, type, ttl)

❖ Type=A ▪ Name: 主机域名 ▪ Value: IP地址

❖Type=NS ▪ Name: 域(edu.cn) ▪ Value: 该域权威域名解析服务器的主机域名

❖Type=CNAME ▪ Name: 某一真实域名的别名 • www.ibm.com – servereast.backup2.ibm.com ▪ Value: 真实域名

❖Type=MX ▪ Value是与name(别名)相对 应的邮件服务器

DNS协议

查询与回复,有相同的消息格式

8. P2P应用

文件分发时间:

C/S结构:

P2P结构:

BitTorrent

节点加入torrent,开始时没有chunk,但是会逐渐积累。向tracker注册以获得节点清单,与某些节点 (“邻居”)建立连接。下载的同时,节点需要向其他节点上传 chunk。节点可能加入或离开,一旦节点获得完整的文件,它可能离开或留下

获取chunk:

给定任一时刻,不同 的节点持有文件的不同chunk集合,节点(Alice)定期查询每个邻居所持有的chunk列表,节点发送请求,请求获取缺失的chunk,采用稀缺优先的原则

发送chunk: tit-for-tat

Alice向4个邻居发送chunk,选择正在向其发送Chunk中速率最快的4个。 每10秒重新评估top 4 ,每30秒随机选择一个其他节点,向其发送chunk。新选择节点可能加入top 4。

P2P信息查询

P2P系统的索引:信息到节点位置(IP地址+端口号)的映射

集中式索引:内容和文件传输是分布式的,但是内容定位是高度集中式的,面临问题1: 单点失效 2. 性能瓶颈 3. 版权问题

洪泛式查询:完全分布式架,每个节点对它共享的文件进行索引,且只对它共享的文件进行索引。查询消息通过已有的TCP连接发送,节点转发查询消息,如果查询命中,则利用反向路径发回查询节点

层次式覆盖网络:介于集中式索引和洪泛查询之间的方法。每个节点或者是一个超级节点,或者被 分配一个超级节点。节点和超级节点间维持TCP连接 。某些超级节点对之间维持TCP连接。超级节点负责跟踪子节点的内容

DHT

❖DHT:一种分布式P2P数据库

❖数据库有(key, value)对。对等方使用key查询DHT,DHT返回与key匹配的值。对等方还可以插入(key, value)对。将(key, value)对分发到(数百万个对等点)

❖中心问题:将(key, value)对分配给对等方。

❖基本思想:将每个key转换为整数,为每个对等点分配整数。将(key, value)对放入最靠近键的对等方

❖将整数标识符分配给[0,2^n-1]范围内的每一个对等方,用于某些n。每个标识符由n位表示。要求每个键都是同一范围内的整数。要获取整数key,对原始密钥进行哈希

❖规则:将key分配给具有最接近ID的对等方。

哈工大计算机网络第二章——应用层复习相关推荐

  1. [计算机网络]第二章——应用层

    文章目录 [计算机网络]第二章--应用层 概述 一.应用层协议原理 1.网络应用程序体系结构 客户-服务器体系结构C/S P2P(对等)体系结构 混合C/S加P2P的体系结构 2.进程通信 客户和服务 ...

  2. 计算机网络第二章 物理层练习题(中文带答案解析)

    前言 本习题是中文版习题,为便于复习. 知识点都在上一篇复习文章计算机网络第二章 物理层复习中 码分多址的计算在最后的问答题中,包括已知最后收到的码片序列求各站的数据发送情况和已知各站的数据发送情况求 ...

  3. 计算机网络总结:第二章 应用层

    第二章 应用层 2.1 应用层协议原理 2.1.1 网络应用程序体系结构 主流体系结构:客户-服务器体系结构,对等(P2P)体系结构 –客户-服务器体系结构:有一个总是打开的主机称为服务器,它服务于来 ...

  4. 计算机网络 自顶向下方法 第二章 应用层

    计算机网络 自顶向下方法 第二章 应用层  分类:计算机网络-笔记(2)  版权声明:本文为博主原创文章,未经博主允许不得转载. 目录(?)[+] 第二章 应用层 Tags: 计算机网络 2.1 应用 ...

  5. 《计算机网络 自顶向下方法》笔记 第二章 应用层

    第二章 应用层 2.1 应用层协议原理 网络应用是计算机网络存在的理由. 研发网络应用程序的核心是写出能够运行在不同端系统和通过网络彼此通信的程序,当研发新应用程序时,需要编写将在多台端系统上运行的软 ...

  6. 计算机网络第二章习题

    计算机网络第二章习题 习题对应课本:Computer Networks (Fifth Edition) - Andrew S. Tanenbaum 2.A noiseless 8-kHz channe ...

  7. 第二章计算机网络答案,计算机网络第二章作业参考答案

    计算机网络第二章作业参考答案 (8页) 本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就下载吧,查找使用更方便哦! 9.90 积分 2. A noiseless 8-kHz channel ...

  8. 王道考研2019版计算机网络第二章--物理层

    语雀笔记链接: 王道考研2019版计算机网络第二章--物理层 (yuque.com)https://www.yuque.com/xiaojinchunchun/bxuuke/guce8z#EjOI8 ...

  9. 【计算机网络】南航计算机网络第二章 物理层

    文章目录 计算机网络第二章 物理层 2.1 物理层的基本概念 2.2 数据通信的基础知识 (1)数据通信系统的模型 (2)通信双方信息交互的三种方式 (3)调制 (4)常见编码方式 (5)基本的带通调 ...

最新文章

  1. div渐变遮罩效果:纵向和水平反向渐变遮罩效果,让戛然而止的页面多一丝丝淡淡的过渡效果,温柔中透露着一缕缕优雅...
  2. 存款利息python题_python入门教程NO.8 用python写个存款利息计算器 已
  3. python语言自学-python自学难吗
  4. 利用学习率衰减找到最优结果(基于Iris数据集)
  5. 堆排序算法c语言筛选法,【排序】排序算法之选择排序
  6. 机器学习之数据预处理——归一化,标准化
  7. 计算机插件技术应用原理,计算机软件技术中插件技术的运用
  8. 《ArcGIS Runtime SDK for Android开发笔记》——(7)、示例代码arcgis-runtime-samples-android的使用...
  9. Spring-Jpa : @MappedSuperclass的作用
  10. 函数模板遇上函数重载
  11. 代码是写给人看的还是写给机器看的?
  12. weblogic8.1在myeclipse中启动正常,在单独的weblogic中无法正常启动的解决方案.
  13. vba判断文件编码格式_VBA编写Ribbon Custom UI编辑器07——写入xml
  14. css 点击效果_纯 CSS 实现吸附效果
  15. 令牌桶限流-java实现
  16. 欧拉回路和Hanmilton回路
  17. springboot不停机更新(配合Nginx优雅发版)
  18. 前端项目如何向一个后端项目传递数组?(批量删除如何传参)
  19. Nodejs 服务端MVC架构
  20. 电脑分区不小心格式化了文件恢复教程

热门文章

  1. 面向接口编程实施模块化/组件化解耦,以友盟、极光等统计分析为例
  2. 矩阵的QR分解(jama和emjl对比,UJMP锦上添花)
  3. 单片机基础编程——“流星雨”(keil4、proteus)
  4. 维护之夜,说点故事和经验
  5. Spring5 框架概述 、IOC 容器
  6. 水泵橡胶软连接的相关知识
  7. 豆瓣 9.6,这本书让你彻底摆脱重复繁琐工作!
  8. findBugs学习小结
  9. 乌克兰电网遭黑客攻击事件之Black Energy深入剖析,从技术角度看待这一事件。
  10. WebContainers简介:在浏览器中原生运行Node.js(译文)