缩写:
HTTP:超文本传输协议
HTML:超文本标记语言
URL:统一资源定位符
RTT:往返时间
FTP:文件传输协议
SMTP:简单邮件传输协议
MIME:多媒体邮件扩展
POP:邮局协议
IMAP:因特网邮件访问协议
DNS:域名系统
TLD:顶级域
DHT:分布式散列表
API:应用程序编程接口
RR:资源记录
术语:
socket:套接字
non-persisitent connection:非持续连接
persistent connection:持续连接
in-band:带内
out-of-band:带外
web cache: WEB缓存器
proxy server: 代理服务器
conditional GET:条件获取
user agent:用户代理
host alias name:主机别名
canonical host name:规范主机名
load distribution:负载分配
TLD server : 顶级域服务器
Authoritative DNS server:权威DNS服务器
local DNS server: 本地DNS服务器
recursive query:递归查询
iterative query:迭代查询
file distribution time: 文件分发时间
rarest first:稀缺优先
torrent:洪流
overlay network:覆盖网络
计算机网络第二章之应用层:
1. 应用层协议原理
2. Web和HTTP(重点)
3. FTP(重点)
4. 电子邮件(重点)
5. DNS(重点)
6. P2P应用
7. TCP的套接字编程
8. UDP的套接字编程
1.应用层协议原理
研发网络应用程序的核心是写出能够运行在不同的端系统和通过网络能够彼此通信的程序。
因此,当研发新的应用程序的时候,你需要编写的是将在多台端系统运行的软件,而不需要写在网络核心设备上运行的软件。
应用程序体系结构(Application architecture)是由应用程序研发者设计,规定了如何在各种端系统上组织该应用程序。当前主流的三种体系结构是:
客户—服务器体系结构(C-S),peer-to-peer(P2P)结构,hybrid of client-server and P2P(C-S和P2P的混合)结构。
C-S:
在上一节已经提到过了,这里再次归纳依一下。
服务器是:一直在线的主机,有固定的IP地址,有时会配备大量主机构成的数据中心用以创建强大的虚拟主机。
客户是:向服务器发起请求,可能会有动态的IP地址,客户之间不会相互交流
Concurrent Server(并发服务器)
Iterative Server(重复服务器)
纯P2P结构:
特点是:没有一直在线的服务器,应用程序在间断连接的主机之间使用直接通信,主机称为对等方。流量密集但是难于管理,应用有BitTorrent,迅雷等。
D-S和P2P的混合结构:
服务器用于跟踪用户的IP地址,但是用户到用户的报文可以直接交换而不用通过服务器。
进程通信:
进程是运行在端系统上的一个程序。同一个端系统上进程的通信是操作系统所定义的,我们关心的是不同的端系统上的进程如何进行通信。
在两个不同的端系统上的进程,通过跨越计算机网络交换报文而相互通信。
客户进程:发起通信的进程。
服务器进程:在会话开始时等待联系的进程。
套接字(Sockets):
进程通过套接字软件接口向网络发送报文和从网络接收报文,类似于门。
套接字也称为应用程序和网络之间的应用程序编程接口(Application Programming Interface API)。应用程序开发者对于运输层的控制权仅限于:(1)选择运输层协议(2)设定几个运输层参数,如最大缓存和最大报文长度
进程寻址:
为了表示进程,需要两种信息:(1)主机的地址(2)定义在目的主机中的接收进程的标识符。
标识符一般包括IP地址和端口号,IP地址即标识了主机的地址,端口号即标识了接收套接字或者说是指定的接收进程。
HTTP端口号:80
SMTP端口号:25
可供应用程序使用的运输服务:
不同的运输层协议提供的服务也会有所不同,就像不同的交通方式一样,汽车便宜但慢,飞机贵但快。而运输层协议对应用提供的服务也有四个方面来考量:可靠数据传输(Data loss),时延,吞吐量,安全。
例如:(再复习一次TCP和UDP)
TCP service:
1. connection-oriented: setup required between client and server processes
2.reliable transport between sending and receiving process
3.flow control: sender won’t overwhelm receiver
4.congestion control: throttle sender when network overloaded
5.does not provide: timing, minimum throughput guarantees, security
UDP service:
1.unreliable data transfer between sending and receiving process
2.does not provide: connection setup, reliability, flow control, congestion control, timing, throughput guarantee, or security
应用层协议:
应用层协议定义了在不同端系统上的应用程序进程如何相互传递报文,特别是应用层协议定义了:
1交换的报文类型,例如请求报文和响应报文
2各种报文类型的语法,如报文中的各个字段及这些字段是怎么描述的。
3字段的语义,即这些字段中包含的信息的含义。
4一个进程何时以及如何发送报文,对报文进行响应的规则。
2. Web和HTTP
WWW:万维网
HTML:Hyper Text Markup Language超文本标记语言
HTTP:超文本传输协议
URL:统一资源定位器
RTT:往返时间
CDN:内容分发网络
Web包含了许多对象,对象可以是HTML文件,JEPG图片和JAVA小程序等
多数web页面包括一个HTML基本文件和多个引用文件。每个对象都可通过URL寻址。
每个URL都由两部分组成,存放对象的服务器主机名和对象的路径名。
格式是protocol://server[:port number]/path/file
一个例子:http://www.scu.edu.cn:8080/cs/index.html
HTTP概览:
是web的应用层协议,使用客户—服务器模型,HTTP使用TCP作为他的支撑运输协议,客户通过HTTP向服务器请求数据,服务器返回后TCP连接就关闭了。因为HTTP不保存任何关于客户的信息,所以说HTTP是一个无状态协议。
HTTP内容常考的是对象的问题和非持续性连接和持续连接。
非持续性连接和持续连接
每个请求/响应对是经一个单独的TCP连接发送,为非持续性连接。
所有的请求/响应对是经相同的TCP连接发送的,为持续连接。
HTTP1.0是非持续性连接,而HTTP1.1是持续性连接的。
举个例子,即书上(第六版中文书)的P67的例子,就不写了。
重点就是每一次的请求/响应对都是需要TCP重新握手和关闭的。
往返时间指的是一个短分组从客户到服务器然后再返回客户所花费的时间。对于非持续性连接(现在只考虑最初的那个HTML文件的接收,不考虑引用对象,也就不考虑串行与并行的问题了),那TCP握手的前两部分花费一个RTT,最后一次TCP握手和请求文件和返回又花费一个RTT,所以总时间为2*RTT+T(文件传输时间)。
关于流水和非流水的持续性连接和非持续性连接总结如下:
如果请求的对象为一个HTML文件和3个图片,则RTT的结果如下表:
|
非持久串行 |
2*RTT+2*RTT*3 |
8RTT |
|
非持久并行 |
2*RTT+2*RTT |
4RTT |
|
持久非流水 |
2RTT+RTT*3 |
5RTT |
|
持久流水 |
2RTT+RTT |
3RTT |
HTTP报文格式:
HTTP的报文有两种:请求报文和响应报文。
1. HTTP请求报文
其他具体的内容可以参照书上的。
2. HTTP响应报文
详细内容也是看书就好,不再赘述。
用户与服务器的交互:cookies
HTTP使用cookies,达到站点用户进行跟踪的效果。Cookies的组成有四个部分:(1)HTTP响应报文中的一个cookies首部行(2)在HTTP请求报文中的一个Cookie首部行(3)在用户端系统保留一个cookie文件,并由用户的浏览器管理(4)位于Web站点的一个后端数据库。
Web缓存:Web cache也叫做Web缓存器,代理服务器。
客户先将请求提交到代理服务器,如果代理服务器没有保存这个副本,则代理服务器向初始服务器发起请求,初始服务器返回后,代理服务器保存一份副本,然后再返回给客户。
在因特网上部署代理服务器的原因是:
1. Web缓存器可以大大较少对客户请求的响应时间,特别是当客户与初始服务器之间的瓶颈宽带远低于客户与Web缓存器之间的瓶颈宽带时更是如此。
2. Web缓存器能够大大减少一个机构接入到因特网的通信量。通过减少通信量,该机构不必急于增加带宽,因此降低了费用。此外,这样减少了因特网上的流量,也可以改善所有应用的性能。
但是另一个问题是:代理服务器上的数据是否就是最新的呢?
条件GET解决了这个问题。
在请求报文中使用GET方法,并包含一个IF-Modified-Since首部行。缓存器通过条件GET方法向初始服务器发送一个请求,执行最新检查。如果更改了,则重新发送这个内容,如果没有,服务器返回304 Not Modified。则代理服务器将确认无修改的副本转发给客户。
3. FTP
FTP:文件传输协议
HTTP和FTP都是文件传输协议,有着许多的共同点,他们最显著的区别是FTP使用了两个并行的TCP连接来传输文件,一个是控制连接,一个是数据连接。控制连接用于传输控制消息,数据连接用于实际传输一个文件,因为FTP的控制连接是独立的,所以我们也称FTP的控制信息是带外(out-of-band)传送的,HTTP的控制信息是带内传送的。
过程:
FTP客户首先通过21号端口发起一个用于控制的TCP连接,用于传输用户的标识符和口令,发送改变远程目录的命令。当FTP服务器端从该连接上收到一个文件传输的命令后,就发起一个到客户端的TCP数据连接。FTP在该数据连接上准确的传送一个文件后,就关闭该通道。
如果需要另外传送文件就重新打开一个数据通道,即数据通道是非持续的。FTP服务器必须在整个会话期间保留用户的状态,因为服务器需要实时追踪客户在远程目录树上的位置,所以大大限制了FTP同时维持的会话总数。
FTP的常见命令和回答:
4. 电子邮件
电子邮件系统由三部分组成:用户代理,邮件服务器,SMTP。
简述过程:从发送方的用户代理开始,传输到发送方的邮件服务器,再传输到接收方的邮件服务器,然后在这里被分发到接收方的邮箱中。SMTP使用TCP协议。
端口号为25。
特点:SMTP不使用中间邮件服务器发送邮件,是一个持续连接。
邮件的messages 必须是7比特ASCII码。命令时ASCII码文本,响应是状态码和短语。
SMTP与HTTP的对比:
HTTP是一个拉协议,而SMTP是一个推协议。
SMTP的报文有限制,必须是7个字符以内的ASCII码,而HTTP没有。
HTTP的每一个对象封装在他自己的响应报文中,而SMTP将所有报文对象放在一个报文中。
其他协议:
MIME:多功能Internet邮件扩展
POP3:邮局协议-版本3
IMAP4:Internet 邮件访问协议-版本4
电子邮件的报文格式:
SMTP格式:
Emmm,这个MIME下次再写吧。
先来看看一个邮件发送的通用过程:因为SMTP是一个推协议,所以在最后一步,接收方想要接收发给自己的邮件时,就要使用其他的协议了。如图所示:
5. DNS
DNS:域名系统,DNS是一个由分层的DNS服务器实现的分布式数据库,一个使得主机能够查询分布式数据库的应用层协议。DNS运行在UDP协议之上,使用53号端口。DNS是由其他应用层协议所使用的,主要服务是将用户提供的住进名解析为IP地址。DNS还提供了其他服务,如主机别名,邮件服务器别名,负荷分配。
DNS工作原理概述
如果只有一个DNS服务器将带来很多问题,比如单点故障,通信容量,远距离的集中式数据库,维护困难。
所以其实DNS是一个在因特网上实现分布式数据库的精彩范例。
DNS服务器的层次有3种类型的服务器:根DNS服务器,顶级域(TLD)DNS服务器和权威DNS服务器。当DNS客户要去解析一个主机名的IP地址时,它将先查找根服务器,接着是顶级域服务器,最后是权威服务器。可以通过递归查询和迭代查询两种方法。
实际情况中还有一种DNS服务器,叫做本地DNS服务器,不属于DNS的层次结构,但是是一个相当重要的作用。
DNS缓存相当于Web Cache的作用,广泛的用于DNS服务器中,可以有效的改善时延。由于主机和IP地址间的映射不是永久的,所以DNS服务器在一段时间后将丢弃缓存的信息。这里应该注意到本地DNS服务器缓存的不仅仅是主机名和IP地址,也可以是TLD服务器的IP地址。
DNS记录和报文
共同实现DNS分布式数据库的所有DNS服务器存储了资源记录RR,RR提供了主机名到IP地址的映射,每个DNS回答报文包含了一条或多条资源记录。
RR 格式:(name,value,type,TTL)
TTL是该记录的生存时间,决定了资源记录应当从缓存中删除的时间。Name和value的值取决于Type。
DNS报文格式:
DNS报文有查询报文和回答报文。
以及如何向DNS数据库中插入一条数据,emmm下次再说吧。
6. P2P 应用
这一章的内容呢,要考,但是不想写了。
然后编程不考,看寒假有空再写吧。