术语
client-server architecture:用户-服务器结构;有一个永远开机的服务器,为用户的请求服务
P2P architecure:一群彼此连通的战绩(用户的电脑)进行交流
self-scalability:指P2P架构的扩展性
client/server process:用户/服务器进程;启动链接的进程是用户进程,等待连接的是服务器进程
socket:套接字;应用层通讯的接口
API(Application Programming Interface):编程接口
IP address:主机的编号
port number:端口号,主机上进程的编号
SSL(Secure Socket Layer):TCP传输中保证安全性的措施
UDP(User Datagram Protocol):轻量级,不保证数据送达的传输协议
HTTP(HyperText Transfer Protocol):应用层定义传递信息结构的协议,常用于网页
base HTML file:组成网页的一个文件
URL(Uniform Resource Locator):在互联网中一个文件的地址
stateless protocol:无记忆协议;不储存用户信息的协议
RTT(round-trip time):信息走过用户-服务器-用户这一路径的时间
cookies:网站储存用户信息的机制
proxy server:储存网页的缓存cache
CDN(Content Distribution Network):Google等公司储存网络文件的服务器组成的网络
SMTP(Simple Mail Transfer Protocol):电子邮件传递方式的协议
pull protocol:获得信息的协议(从用户的角度)
push protocol:送出信息的协议(从用户的角度)
POP3(Post Office Protocol-Version3):从邮件服务器收件的协议
IMAP(Internet Mail Access Protocol):作用同上
DNS(Domain Name System):将域名转换乘IP地址的系统
DNS server:提供DNS服务的服务器
Host aliasing:主机假名(混淆);多个域名对应一个真正的域名
Mail server aliasing:邮件地址的假名
Loading distribution:将对同一个域名的请求分配给不同IP地址分服务器
TLD(Top-Level Domain)运命的一部分,例如amazon.com
RR(Resource recover):域名-IP地址的映射记录
nslookup program:查询域名的软件
registrar:域名的登记信息
DHT(Distributed Hast Table):在P2P系统中文件分布情况的表格
DASH(Dynamic Adaptive Streaming over HTTP):动态选择视频清晰度的机制
manifest file:不同清晰度的视频的URL表
Enter Deep:将储存文件的服务器放在ISP(Internet Server Provider)旁边的策略
Bring Home:将储存文件的服务器放在IXPs旁边的策略
一、网络应用层概述
1.结构:用户-服务器结构;P2P结构
2.进程通讯
(1)区分用户进程和服务器进程
(2)进程之间的结构:套接字
(3)IP定位服务器;端口号定位服务器上具体哪一个进程
3.传输层服务
-
传输的可靠性:数据不会丢失;吞吐量;延迟;安全性
-
TCP提供的服务:连接驱动(connection-oriented service)、可靠
-
UDP提供的服务:无连接、不可靠
二、HTTP
1.网页概念:一个网页由几个文件(视频、html文件……)组成,这些文件都可以通过URL定位
2.HTTP基础:HTTP使用TCP协议;客户和服务器都要同意HTTP协议;服务器不储存客户信息,为无记忆协议
3.非持续连接HTTP(non-persistent connection):每传递一个文件都要重新开启一个TCP连接,具体过程如下:
(1)用户和服务器的HTTP进程(端口号80)建立TCP连接
(2)客户端向服务器发送请求文件,其中包含了需要的文件的地址
(3)服务器找到文件并发送给客户
(4)服务器进程准备关闭TCP连接
(5)客户端收到信息并且关闭连接
注:持续连接直到所有的文件传送完才关闭TCP连接
4.客户端发送信息格式
GET /somedir/page.html HTTP/1.1
Host: www.someschool.edu
Connection: close
User-agent: Mozilla/5.0
Accept-language: fr
第一行:请求信息(request message)
- 方法:GET, POST, HEAD, PUT, DELETE;表示请求的类别
- URL区:/somedir/page.html;请求文件的路径
- HTTP版本:HTTP/1.1
之后的行:头信息(header line)
- Host: www.someschool.edu 指定服务器的域名,在缓存机制中要用
- Connection: close 传送完文件就关闭TCP连接
- User-agent: Mozilla/5.0 浏览器版本
- Accept-language: fr 要求法语版本
5.服务器回复信息格式
HTTP/1.1 200 OK
Connection: close
Data: Sun 22 Mar 2020 20:12:24 GMT
Server: Apache/2.2.3 (CentOS)
Last-Modified: Tue, 18, Aug 2018 15:11:03 GMT
Content-length: 6821
Content-Type: text/html
(data data ....)
200 OK 状态码,还有400 Bad Request,404 Not Found……
6.cookies:就是你的电脑在访问一个服务器时会有一个ID,这个ID保存了客户端的行为,下次访问可以使用这次访问的记录
7.网页缓存/代理(Web caching/proxy server)
(1)思路:根据人们访问的局部性,可以在ISPs等地方拷贝最近访问过的网站。这样可以减少网页传输的延迟,而且成本低
(2)条件-GET(conditional-GET)
cache里的内容要和原本的服务器内容保持一致,为达到此目的,在每次HTTP回复的时候加一行
Last-Modified: Wed, 9 Sep 2019 09:23:24
因此每次cache只要和原本的服务器交流头文件即可,如果文件被更新再将整个文件传输
三、SMTP
思路:Alice给Bob发邮件,Alice和Bob的电脑不可能已知开机等待邮件到来,因此要有邮件服务器,SMTP就发生在服务器之间
SMTP交流步骤
(1)客户端和服务器建立TCP连接(端口号25)
(2)客户端和服务器传递信息来确认彼此身份(不是TCP的握手)
(3)客户端传递信息,完成后关闭TCP
3.传递信息格式
S表示server,站名为hamburger.edu
C表示client,站名为crepes.fr
S: 220 hamburger.edu
C: HELO crepes.fr
S: 250 Hello crepes.fr, pleased to meet you
C: MAIL FROM: <alice@crepes.fr>
S: 250 alice@crepes.fr ... Sender ok
C: RCPT TO: <bob@hamburger.edu>
S: 250 bob@hamburger.edu ... Recipient ok
C: DATA
S: 354 Enter mail, end with ”.” on a line by itself
C: Do you like ketchup?
C: How about pickles?
C: .
S: 250 Message accepted for delivery
C: QUIT
S: 221 hamburger.edu closing connection
其中服务器返回“回复码”(reply code)220, 250……
客户端发送指令HELO, MAIL FROM, RCPT TO……
4.从邮件服务器获取邮件的协议(POP3,IMAP)
(1)思路:Bob的电脑要从邮件服务器取回新建,因为SMTP时送出信息的协议,因此需要另外的协议
(2)POP3:协议很简单,但是取走邮件后邮件服务器会删除邮件,同一封邮件只能在一个终端上阅读
(3)IMAP:协议比较复杂,但是可以在多终端上读邮件
四、DNS
1.DNS作用:把站名(例如www.someschool.com)传递给DNS,就可以获得服务器的IP地址;HTTP等应用要使用DNS;
DNS应用使用UDP传输协议,端口号为53
2.基础DNS结构
(1)根DNS服务器(root DNS server),TLD服务器(Top-Level Domain Server),权限DNS服务器(authoritative DNS server),本地DNS服务器
3.DNS服务过程
(1)PC将请求给本第DNS服务器(www.amazon.com)
(2)本地DNS服务器,从根DNS服务器获得.com的TLD服务器的IP地址
(3)本地DNS服务器,从TLD服务器获得amazon.com的权限DNS服务器的IP地址
(4)本地DNS服务器从权限DNS服务器获得www.amazon.com的IP地址
(5)本地DNS服务器把IP地址给PC
4.DNS缓存:本地DNS会储存站名-IP地址对(2天),当由相同的请求到来时直接返回IP地址
5.DNS记录
DNS服务器内的记录(RR),有如下形式
(Name, Value, Type, TTL)
TTL(time to live):表示记录的有效时长
Type | Name | Value | 例 |
---|---|---|---|
A | 站名 | IP地址 | (relay1.bar.foo.com, 145.37.93.126, A) |
NS | 域名 | 站名 | (foo.com, dns.foo.com, NS) |
CNAME | 站名(假名) | 真站名 | (foo.com, relay1.bar.foo.com, MX) |
MX | 站名(假名) | 真正的邮件站名 | (foo.com, mail.bar.foo.com, MX) |
6.DNS消息:请求和回复消息格式一样
identification:这条消息的编号
Flags:请求/回复标志(为0请求,为1回复);权限标志(为1表示为权限DNS回复的消息)……
Question:(1)请求的Name(2)请求的记录的Type
Answer:回复消息中对应请求的DNS记录
权限信息:其他权限DNS服务器的信息
附加信息:如果回答中有假名,附加信息可能真正站名对应的IP地址
五、P2P文件传输
1.客户-服务器结构:所有的客户都从一个主机下载文件,延迟为
D
c
s
=
max
{
N
F
/
u
s
,
F
/
d
m
i
n
}
D_{cs} = \max \{NF / u_s, F / d_{min}\}
Dcs=max{NF/us,F/dmin}
其中F:一个文件的大小;N:客户数量;
u
s
u_s
us服务器上传速度;
d
m
i
n
d_{min}
dmin:最小客户下载速度
客户服务器结构的示意图如下,在上述计算公式中将Internet的传输速度理想化为无限快。
2.P2P结构:有一个服务器和N个已经开始下载文件的的电脑,新加入了Alice的电脑开始下载,则延迟为:
D
P
2
P
=
max
{
F
/
u
s
,
F
/
d
m
i
n
,
N
F
/
(
u
s
+
∑
i
=
1
N
u
i
)
}
D_{P2P} = \max \{F / u_s, F / d_{min}, NF / (u_s + \sum^N_{i = 1}u_i)\}
DP2P=max{F/us,F/dmin,NF/(us+i=1∑Nui)}
其中
u
i
u_i
ui:N个正在下载电脑的上传速度,其他符号和上面公式相同,下面是P2P结构的示意图
比较一下两种结构的延迟增长
六、视频流和CDN
1.DASH:视频已经被处理乘不同的大小和质量;使用DASH传视频时,会给不同网速的客户传递不同质量的视频
2.CDN的分布方式
(1)Enter Deep:在ISPs附近不知服务器,这样服务器的数量会比较大,Akamai采用这种方法
(2)Bring Home:在Internet Exchange Points(IXPs)布置服务器,这样服务器数量较少,Limelight等CDN公司采用这种方法
3.CDN的操作步骤:
例:客户要访问www.NetCinema.com上的http://video.netcinema.com/666视频,NetCinema使用KingCDN的服务
(1)客户访问了www.NetCinema.com的网站
(2)客户点击了http://video.netcinema.com/666,因此客户将信息传递给本地DNS服务器
(3)最终NetCinema的权限DNS服务器将KingCDN权限DNS服务器的IP地址返回给本地DNS服务器,而不是返回的视频的IP地址
(4)本地DNS服务器获得KingCDN提供的视频服务器IP地址
(5)本地DNS服务器将IP地址返回给客户
(6)客户从KingCND的服务器上获得视频
这一过程的示意图如下
4.选择CDN服务器方法:由于CDN服务器有很多,因此要选择具体的一个
(1)地理位置最近:简单有效,但有时地理位置近,不一定最快
(2)实时测速:选择实时测试速度最快的服务器,比较复杂