[豪の学习笔记] 计算机网络#003

3.1.1 - 网络应用(层)内容概述

网络应用体系结构

客户机/服务器

P2P

混合结构

网络应用的服务需求

可靠性

带宽

时延

Internet传输层服务模型

TCP

UDP

特定网络应用及协议

HTTP

SMTP,POP,IMAP

Socket编程

TCP

UDP

3.2.1 - 网络应用体系结构

客户机/服务器结构(Client-Server,C/S)

服务器

7*24小时提供服务

永久性访问地址/域名

利用大量服务器实现可扩展性

客户机

与服务器通信,使用服务器提供的服务

间歇性接入网络

可能使用动态IP地址

不会与其他客户机直接通信

点对点结构(Peer-to-peer,P2P)

没有永远在线的服务器

任意端系统/节点之间可以直接通讯

节点间歇性接入网络

节点可能改变IP地址

优点:高度可伸缩

缺点:难于管理

混合结构(Hybrid)

Napster

文件传输使用P2P结构

文件的搜索采用C/S结构——集中式

每个节点向中央服务器登记自己的内容

每个节点向中央服务器提交查询请求,查找感兴趣内容

3.2.2 - 网络应用进程通信

进程:主机上运行的程序

客户机进程:发起通信的进程

服务器进程:等待通信请求的进程

Q:同一主机上运行的进程之间如何通信?

进程间通信机制

操作系统提供

Q:不同主机上运行的进程间如何通信?

消息交换

套接字Socket

进程间通信利用socket发送/接收消息实现

类似于寄信:

发送方将消息送到门外邮箱

发送方依赖(门外的)传输基础设施将消息传到接收方所在主机,并送到接收方的门外

接收方从门外获取消息

传输基础设施向进程提供API

传输协议的选择

参数的设置

Q:如何寻址进程?

不同主机上的进程间通信,那么每个进程必须拥有标识符

如何寻址主机?——IP地址

Q:主机有了IP地址后,是否足以定位进程?

A:否。同一主机上可能同时有多个进程需要通信。

端口号/Port number

为主机上每个需要通信的进程分配一个端口号

HTTP Server:80

Mail Server:25

进程的标识符

IP地址+端口号

应用层协议

网络应用都需遵循应用层协议

公开协议

由RFC(Request For Comments)定义

允许互操作

HTTP,SMTP,......

私有协议

多数P2P文件共享应用

协议内容:

消息的类型(type)

请求消息

响应消息

消息的语法(syntax)/格式

消息中有哪些子段(field)?

每个字段如何描述?

字段的语义(semantics)

字段中信息的含义

规则(rules)

进程何时发送/响应消息

进程如何发送/响应消息

3.2.3 - 网络应用需求

数据丢失(data loss)/可靠性(reliability)

某些网络应用能够容忍一定的数据丢失:网络电话

某些网络应用要求100%可靠的数据传输:文件传输,telnet

时间(timing)/延迟(delay)

有些应用只有在延迟足够低时才“有效”

网络电话/网络游戏

带宽(bandwidth)

某些应用只有在带宽达到最低要求时才“有效”:网络视频

某些应用能够适应任何带宽——弹性应用email

Internet提供的传输服务

①TCP服务

面向连接

客户机/服务器进程间需要建立连接

可靠的传输

流量控制

发送方不会发送速度过快,超过接收方的处理能力

拥塞控制

当网络负载过重时能够限制发送方的发送速度

不提供:

时间/延迟保障

最小带宽保障

②UDP服务

无连接

不可靠的数据传输

不提供:

可靠性保障

流量控制

拥塞控制

延迟保障

带宽保障

3.3.1 - Web应用概述

World Wide Web:Tim Berners-Lee

网页(Web Page)包含多个对象(objects)

对象:HTML文件、JPEG图片、视频文件、动态脚本等

基本的HTML文件:包含对其他对象引用的链接

对象的寻址(addressing)

URL(Uniform Resource Locator):统一资源定位器

Scheme://host:port/path

HTTP协议概述

超文本传输协议 HyperText Transfer Protocol

C/S结构

客户 Browser:请求、接收、展示Web对象

服务器 Web Server:响应客户的请求,发送对象

使用TCP传输服务

服务器在80端口等待客户的请求

浏览器发起到服务器的TCP连接(创建套接字Socket)

服务器接收来自浏览器的TCP连接

浏览器(HTTP客户端)与Web服务器(HTTP服务器)交换HTTP消息

关闭TCP连接

无状态(stateless)

服务器不维护任何有关客户端过去所发请求的信息

PS:有状态的协议更加复杂:

需维护状态(历史信息)

如果客户端或服务器失效,会产生状态的不一致,解决这种不一致的代价高

3.3.2 - HTTP连接类型

①非持久性连接(Nonpersistent HTTP)

每个TCP连接最多允许传输一个对象

HTTP 1.0版本使用非持久性连接

响应时间分析与建模

RTT(Round Trip Time)

从客户端发送一个很小的数据包到服务器并返回所经历的时间

响应时间(Response time)

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

发送HTTP请求消息到HTTP响应消息的前几个字节到达:1个RTT

响应消息中所含的文件/对象传输时间

Total = 2RTT + 文件发送时间

非持久性连接的问题

每个对象需要2个RTT

操作系统需要为每个TCP连接开销资源(overhead)

浏览器会怎么做?

打开多个并行的TCP连接以获取网页所需对象

给服务器端造成什么影响?很大的TCP资源开销

②持久性连接(Persistent HTTP)

每个TCP连接允许传输多个对象

HTTP 1.1版本默认使用持久性连接

发送响应后,服务器保持TCP连接的打开

后续的HTTP消息可以通过这个连接发送

无流水(pipelining)的持久性连接

客户端只有收到前一个响应后才发送新的请求

每个被引用的对象耗时1个RTT

带有流水机制的持久性连接

HTTP 1.1的默认选项

客户端只要遇到一个引用对象就尽快发出请求

理想情况下,收到所有的引用对象只需耗时约1个RTT

3.3.3 - HTTP消息格式

HTTP协议有两类消息

请求消息(request)

响应消息(response)

请求消息

ASCII:人直接可读

POST方法

网页经常需要填写表格(form)

在请求消息的消息体(entity body)中上传客户端的输入

URL方法

使用GET方法

输入信息通过request行的URL字段上传

HTTP/1.0

GET,POST

HEAD(请Server不要将所请求的对象放入响应消息中)

HTTP/1.1

GET,POST,HEAD

PUT(将消息体中的文件上传到URL字段所指定的路径)

DELETE(删除URL字段所指定的文件)

3.3.4 - Cookie技术

Q:为什么需要Cookie?

HTTP协议无状态,但很多应用需要服务器掌握客户端的状态,如网上购物,如何实现?引用Cookie技术

Cookie技术

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

RFC6265

Cookie的组件

HTTP响应消息的cookie头部行

HTTP请求消息的cookie头部行

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

Web服务器端的后台数据库

Cookie原理

Cookie作用

Cookie能够用于:身份认证、购物车、推荐、Web email

3.3.5 - Web缓存/代理服务器技术

在不访问服务器的前提下满足客户端的HTTP请求

缩短客户请求的响应时间

减少机构/组织的流量

在大范围内(Internet)实现有效的内容分发

Web缓存/代理服务器

用户设定浏览器通过缓存进行Web访问

浏览器向缓存/代理服务器发送所有的HTTP请求

如果所请求对象在缓存中,缓存返回对象

否则,缓存服务器向原始服务器发送HTTP请求,获取对象,然后返回给客户端并保存该对象

缓存既充当客户端,也充当服务器

一般由ISP(Internet服务提供商)架设

Web缓存示例



条件性GET方法

目标:

如果缓存有最新的版本,则不需要发送请求对象

缓存:

在HTTP请求消息中声明所持有版本的日期

if-modified-since:

服务器:

如果缓存的版本是最新的,则响应消息中不包含对象

HTTP/1.0 304 Not Modified

3.4.1 - Email应用概述

Email应用的构成组件

①邮件客户端(user agent)

读写Email消息

与服务器交互,收、发Email消息

Outlook、Foxmail、Thunderbird

Web客户端

②邮件服务器

邮箱:存储发给该用户的Email

消息队列(message queue):存储等待发送的Email

③SMTP协议(Simple Mail Transfer Protocol)

邮件服务器之间传递消息所使用的协议

客户端:发送消息的服务器

服务器:接收消息的服务器

RFC 2821

使用TCP进行email的可靠传输,端口25

传输过程的三个阶段

握手、消息的传输、关闭

命令/响应交互模式

命令(command):ASCII文本

响应(response):状态代码和语句

使用持久性连接

要求消息必须由7位ASCII码构成

SMTP服务器利用CRLF.CRLF确定消息的结束

与HTTP对比

HTTP:拉式(pull)

SMTP:推式(push)

都使用命令/响应交互模式

命令和状态代码都是ASCII码

HTTP:每个对象封装在独立的响应消息中

SMTP:多个对象在由多个部分构成的消息中发送

SMTP交互示例

3.4.2 - Email消息格式与POP协议

SMTP:email消息的传输/交换协议

RFC 822:文本消息格式标准

头部行(header)

To

From

Subject

消息体(body)

消息本身

只能是ASCII字符

MIME:多媒体邮件扩展 RFC 2045,2056

通过在邮件头部增加额外的行以声明MIME的内容类型

邮件访问协议

从服务器获取邮件

POP:Post Office Protocol [RFC 1939]

认证/授权(客户机<--->服务器)和下载

①认证过程

客户端命令

User:声明用户名

Pass:声明密码

服务器响应

+OK

-ERR

②事务阶段

List:列出消息数量

Retr:用编号获取消息

Dele:删除消息

Quit

“下载并删除”模式

用户如果换了客户端软件,无法重读该邮件

“下载并保存”模式

不同客户端都可以保留消息的拷贝

POP3是无状态的

IMAP:Internet Mail Access Protocol [RFC 1730]

更多功能、更加复杂、能够操纵服务器上存储的消息

所有消息统一保存在一个地方:服务器

允许用户利用文件夹组织消息

IMAP支持跨会话(Session)的用户状态

文件夹的名字

文件夹与消息ID之间的映射等

HTTP:163、QQ等

3.5.1 - DNS概述

DNS:Domain Name System

解决Internet上主机/路由器的识别问题

IP地址、域名

Q:域名和IP地址之间如何映射?

域名解析系统DNS

多层命名服务器构成的分布式数据库

应用层协议:完成名字的解析

Internet核心功能,用应用层协议实现

网络边界复杂

DNS服务

域名向IP地址的翻译

主机别名

邮件服务器别名

负载均衡:Web服务器

Q:为什么不使用集中式的DNS?

单点失败问题

流量问题

距离问题

维护性问题

分布式层次式数据库

客户端想要查询www.amazon.com的IP

客户端查询根服务器,找到com域名解析服务器

客户端查询com域名解析服务器,找到amazon.com域名解析服务器

客户端查询amazon.com域名解析服务器,获得www.amazon.com的IP地址

DNS根域名服务器

本地域名解析服务器无法解析域名时,访问根域名服务器

根域名服务器

如果不知道映射,访问权威域名服务器

获得映射

向本地域名服务器返回映射

TLD和权威域名解析服务器

顶级域名服务器(TLD,top-level domain)

负责com,org,net,edu等顶级域名和国家顶级域名,例如cn,uk,fr等

Network Solutions维护com顶级域名服务器

Educause维护edu顶级域名服务器

权威(Authoritative)域名服务器

组织的域名解析服务器,提供组织内部服务器的解析服务

组织负责维护

服务提供商负责维护

本地域名解析服务器

不严格属于层级体系

每个ISP有一个本地域名服务器

默认域名解析服务器

当主机进行DNS查询时,查询被发送到本地域名服务器

作为代理(proxy),将查询转发给(层级式)域名解析服务器系统

DNS查询示例

Cis.poly.edu的主机想获得gaia.cs.umass.edu的IP地址

迭代查询

被查询服务器返回域名解析服务器的名字

“我不认识这个域名,但你可以问这个服务器”

递归查询

将域名解析的任务交给所联系的服务器

DNS记录缓存和更新

只要域名解析服务器获得域名——IP映射,即缓存这一映射

一段时间后,缓存条目失效(删除)

本地域名服务器一般会缓存顶级域名服务器的映射,因此根域名服务器不经常被访问

记录的更新/通知机制

RFC 2136

Dynamic Updates in the Domain Name System(DNS UPDATE)

3.5.2 - DNS记录和消息

DNS记录

资源记录(RR,resource,records)

RR format:(name,value,type,ttl)

Type=A

Name:主机域名

Value:IP地址

Type=NS

Name:域(edu.cn)

Value:该域权威域名解析服务器的主机域名

Type=CNAME

Name:某一真实域名的别名

Value:真实域名

Type=MX

Value是与name相对应的邮件服务器

DNS协议与消息

DNS协议

查询(query)和回复(reply)消息

消息格式相同

消息头部

Identification:16位查询编号,回复使用相同的编号

flags:查询或回复、期望递归、递归可用、权威回答

Q:如何注册域名?

在域名管理机构注册域名

向域名管理机构提供你的权威域名解析服务器的名字和IP地址

域名管理机构向com顶级域名解析服务器中插入两条记录

在权威域名解析服务器中为www.networkuptopia.com加入TypeA记录,为networkutopia.com加入TypeMX记录

posted @ 2024-12-09 16:01  SchwarzShu  阅读(5)  评论(0编辑  收藏  举报