计算机网络原理 精讲三 第二章 网络应用1
第一节 计算机网络体系结构
1.1. 客户/服务器(C/S)结构网络应用
客户/服务器(C/S)结构是最典型、 最基本的网络应用。 www 应用, 文件传输, 电子邮件等。
特点:
- 网络通信双方分为客户程序和服务器程序,用户与用户之间不进行直接通信。
- 客户主动发起
, 服务器被动接受
- 服务器
为了能被动接受通信, 必须先运行, 做好通信准备。
1.2. 纯P2P 结构网络应用
P2P (Peer to Peer): 通信双方没有传统意义上的客户服务器之分,“地位”对等, 通信双方都具备客户与服务器的特征。
1.3. 混合结构网络应用
将 C/S 应用和 P2P 应用相结合。
1.4. 网络应用的基本通信过程
网络应用的基本通信过程就是运行在不同主机上的 应用进程 间以 C/S 方式进行的通信。
- 典型的网络应用编程接口是套接字( Socket)。
- 对于一个传输层协议, 需要为其接口的每个套接字分配特定的编号, 标识该套接字, 该编 号称为端口号。
第二节 域名系统
2.1. 域名系统(Domain Name System, DNS)
一、 域名系统
域名系统将域名映射为 IP 地址。 实现映射的过程, 称为域名解析。
二、 域名解析的原理:
为了实现域名解析, 域名系统会建立分布式数据库, 存储域名与 IP 地址的映射关系数据。
2.2. 层次化域名空间
一、 域名的命名方式:
层次树状结构命名方式。
每个域名由不同级别的域名构成, 各个层级域名之间用点分隔。 例如:
二、 顶级域名分类:
- 国家顶级域名: cn,us,uk。
- 通用顶级域名: com,org,gov,edu。
- 基础结构域名: 只有一个( arpa ,反向域名解析)。
2.3. 域名服务器
根据其主要保存的域名信息以及在域名解析过程的作用, 可以分为根域名服务器、 顶级 域名服务器、 权威域名服务器、 中间域名服务器。
- 根域名服务器: 根域名服务器是最重要的服务器, 全球有 13 个, 保存所有 ***顶级*** 域名服务器的域名和 IP 地址。
- 顶级域名服务器: 负责管理在该顶级域名服务器注册的所有 ***二级*** 域名。
- 权威域名服务器: 负责一个区的域名服务器, 保存该区中的所有主机域名和 IP 地址。
- 中间域名服务器: 不是以上三种的域名服务器。
- 本地(默认)域名服务器: 是主机进行域名查询时首先被查询的域名服务器。
区
区(zone):一个服务器所负责管辖的范围。
DNS服务器:管辖范围不以“域”为单位,而以“区”为单位。
2.4. 域名解析
一、 递归解析:
主机进行域名查询时,本地域名服务器没有被查询域名信息。本地域名服务器代理主机查询根域名服务器。根域名服务器代理本地域名服务器查询下一个域名服务,以此类推。直到得到被查询域名的IP地址,最后将解析结果发送给主机。
二、 迭代解析:
主机进行域名查询时,本地域名服务器没有被查询域名信息。先求助于根域名服务器。根域名服务器只是将下一步要查询的服务器告知查询主机的本地域名服务器,本地域名服务器继续查询下一个域名服务器,直到查询到被查询的域名的IP地址。
第四节 万维网应用
4.1. 万维网应用结构
一、 万维网应用
主要包括浏览器、 web 服务器、 HTTP 协议。
- Web 服务器: Web 应用的服务器软件, 存储并管理供用户请求浏览的 Web 页面(Web文档)。
- 浏览器: Web 应用客户端软件, 即 Web 应用的客户代理。
- 超文本传输协议(HTTP): 客户和服务器间的交互基于应用层的协议 HTTP。
二、URL: 统一资源定位符
- URL 地址主要两个部分组成: 存放对象的主机域名( 或 IP 地址) 和 对象的路径名称。 例:
http://www.abc.edu.cn/cs/index.html
- URL 的寻址方式确保万维网上的每个 Web 页面或对象都有一个唯一的标识符
4.2. HTTP 概述
一、 超文本传输协议(Hyper Text Transfer Protocol, HTTP )
是 Web 应用的应用层协议, 定义浏览器如何向 Web 服务器发送请求以及 Web 服务器如何向浏览器进行响应。
目前主要使用的 HTTP/1.0 和 HTTP/1.1, 尤其以 HTTP/1.1 为主流。
二、TCP 连接
HTTP基于传输层的TCP传输报文。浏览器在向服务器发送请求之前,首先建立TCP连接,然后才发送HTTP请求报文,接收HTTP响应报文。
传输控制协议(Transmission Control Protocol,TCP)
三、RTT:作为一个时间单位来使用
例如:HTTP客户进程向服务器请求建立连接:从客户发送连接请求,到客户收到服务器连接确认,用时一个往返时间(Round Trip Time , RTT)。
四、HTTP连接分类:
使用TCP连接的策略不同
非持久连接的HTTP(TCP用一次就断开)
持久连接的HTTP(TCP不断开)
- 非持久连接
: 指 HTTP 客户与 HTTP 服务器建立 TCP 连接后, 通过该连接发送 HTTP请求报文, 接收 HTTP 响应报文, 然后断开连接。每次请求传输一个对象,都需要重新建立一个TCP连接。
以请求浏览一个引用 **3个JPEG小图像的Web页面** 为例:
一条连接:**8个RTT**
多条连接:建立多条并行TCP连接,并行发送HTTP请求和并行接收HTTP响应。然后断开TCP连接。**4个RTT**
- 持久连接
: 客户在请求了 Web 页后, 继续传输引用的图像文件, 这些图像文件多数情况下位于与 Web 页所在的服务器相同的服务器(站点局部性特点)。 在这 种情况下, 可以不断开已建立的 TCP 连接, 继续利用连接请求传输图像。
根据使用持久连接传输多个对象的策略不同:非流水方式持久连接和流水方式持久连接。
- 非流水方式持久连接(非管道方式持久连接)
:建立TCP连接,发送请求和接收响应后,不断开TCP连接,继续请求。5个RTT
- 流水方式持久连接(管道方式持久连接)
︰客户端在通过持久连接接收到前一个对象的响应报文前,连续依次发送对后续对象的请求报文。3个RTT
- 非流水方式持久连接(非管道方式持久连接)
Tips:tipping_hand_man::
- HTTP/1.0 默认的是非持久一条连接。
- HTTP/1.1 默认使用流水方式持久连接
。HTTP/1.1 持久连接默认是激活的。
- HTTP/1.1代理服务器不应该与 HTTP/1.0 客户端建立持久连接。
- 并行连接
: 通过建立多条并行 TCP 连接, 并行发送 HTTP 请求和并行接收 HTTP 响应。
第三节 万维网应用
3.1. HTTP 报文
一、 HTTP 报文:
HTTP报文:请求报文 和 响应报文。
请求报文:浏览器发送给Web服务器
响应报文:Web服务器发送给浏览器
二、 报文格式:
请求报文 | 响应报文 | |
---|---|---|
起始行(不可省略) | **请求行:**< 方法 >< 资源路径 >< HTTP版本 > | **状态行:**< HTTP板本 >< 状态码 >< 原因短语 > |
首部行(可省略) | 携带附加信息 | 同请求报文 |
空白行(不可省略) | CRLF(CR:回车 LF:换行) | 同请求报文 |
报文主体(可省略) | 实际要传输的内容 | 同请求报文 |
请求报文和响应报文最大的不同在于起始行。 起始行在请求报文中又名请求行, 在响应报文中又名状态行。
三、 请求报文的请求方法:
GET | 请求读取由URL所标识的信息,是最常见的方法 |
---|---|
HEAD | 请求读取由URL所标识的信息的首部 |
POST | 给服务器添加信息(例如,注释) |
OPTION | 请求一些选项的信息 |
PUT | 在指明的URL下存储一个文档 |
四、 响应报文的状态码:
HTTP状态码:3位十进制数,并利用第一位十进制数字区分5类状态码
状态码类别 | 取值范围 | 作用 | 说明 |
---|---|---|---|
1xx | 100-199 | 信息提示 | 通告信息,可能还需要进一步交互 |
2xx | 200-299 | 成功 | 成功完成客户请求的操作,并进行响应 |
3xx | 300-399 | 重定向 | 表示资源已移走,需要向新URL发请求 |
4xx | 400-499 | 客户端错误 | 由于客户端请求错误,无法成功响应 |
5xx | 500-599 | 服务器错误 | 由于服务器端错误,无法成功响应 |
常见状态码:
状态码 | 短语 | 含义 |
---|---|---|
100 | Continue | 已成功收到了请求的初始部分,请客户端继续 |
200 | OK | 成功,所请求信息在响应报文中 |
301 | Moved Permanently | 重定向 |
400 | Bad Request | 客户端请求错误 |
401 | Unauthorized | 未授权,需要输入用户名和密码 |
404 | Not Found | 客户端请求的对象,在服务器上不存在 |
451 | Unsupported Media Type | 不支持的媒体类型 |
505 | HTTP Version Not Supported | 请求使用的HTTP版本,服务器不支持 |
3.2. Cookie
一、 HTTP
HTTP服务器并不保存关于客户的任何信息, 所以又被称为无状态协议。
为了记录保存客户信息, Web 应用引入 Cookie 机制, 用于用户跟踪。
二、 Cookie( 小型文本文件):
某些网站为了辨别用户身份、 进行会话跟踪而存储在用户本地终端上的数据。
三、 Cookie 技术主要包括 4 部分内容:【简答】
- HTTP 响应报文中的 Cookie 头行: Set-Cookie,用户的Cookie ID,用户偏好等。
- 用户浏览器在本地
存储、 维护和管理的 Cookie 文件。
- HTTP 请求报文中的 Cookie 头行: 用户已访问过的网站再次访问时,浏览器会检索本地Cookie文件。
- 网站在后台数据库中存储、 维护 Cookie 信息: 分配给用户 ID、 每个 ID 用户在本网站的访问特征等。
四、 Cookie技术最常见的用途:
- 网站可以利用Cookie的ID来准确统计网站的实际访问人数、新访问者和重复访问者的人数对比、访问者的访问频率等数据。
- 网站可以利用Cookie限制某些特定用户的访问。
- 网站可以存储用户访问过程中的操作习惯和偏好。
- 记录用户登录网站使用的用户名、密码等信息。
- 电子商务网站利用Cookie可以实现“购物车”功能。
第四节 Internet 电子邮件
4.1. 电子邮件系统结构
- 邮件服务器
- 简单邮件传输协议( SMTP)
- 用户代理
- 邮件读取协议( POP3,IMPA,HTTP)
一、 邮件服务器:
发送和接收邮件, 向发信人报告邮件传送情况( 已交付、 被拒绝、 丢失等), 是电子邮件体系结构的核心。
用户注册
分配存储空间
例如:
1 2
zhaokehui @ sunlands.com 用户邮箱名 在 邮件服务器域名
二、 用户代理是电子邮件应用的客户端软件
Outlook, Apple Mail, Fox Mail 等支持用户撰写、 显示、 处理和收发邮件。 为用户阅读、 回复、转发、 保存和撰写邮件提供编辑与操作环境
4.2. 简单邮件传输协议 (Simple Mail Transfer Protocol, SMTP)
一、 SMTP
SMTP是 Internet 电子邮件中核心应用层协议。 实现邮件服务器之间或用户代理到邮件服务器之间的邮件传输。
二、 SMTP 通过 3 个阶段的应用层交互完成邮件的传输:
握手阶段; 邮件传输阶段; 关闭阶段。
- SMTP 定义了 14 条命令, 每条命令用 4 个字母组成。
- HELO: 标识发件人自己的身份;
- DATA: 通知服务器准备开始发送邮件内容;
- QUIT: 命令退出;
- SMTP 定义了 21 种应答信息, 一般只有一行, 由 3 位数字的代码开始, 后面附上( 也可不附) 简单的文字说明。
阶段一:握手阶段
1
2
3
服务器: 220 mail.abc.com
客户: HELO xyz.hit.edu.cn
服务器: 250 Hello xyz.hit.edu.cn,pleased to meet you
阶段二:邮件传输>阶段
1
2
3
4
5
6
7
8
9
客户: MAIL FROM:<user_a@xyz.hit.edu.cn>
服务器: 250 user_a@xyz.hit.edu.cn … Sender ok
客户: RCPT TO:<user_b@mail.abc.com>
服务器: 250 user_b@mail.abc.com … Recipient ok
客户: DATA
服务器: 354 Enter mail,end with “.” on a line by itself
客户: Are you available tonight?
客户: How about going to the cinema together?
客户: .
阶段三:关闭阶段
1
2
3
服务器: 250 Message accepted for delivery
客户: QUIT
服务器: 221 mail.abc.com closing connection
三、 SMTP 的特点:【简答】
- SMTP 只能传送 7 位 ASCⅡ 码文本内容, 包括 SMTP 命令、 应答消息以及邮件内容。
- SMTP 传送的邮件内容中不能包含“ CRLE.CRLF”, 因为该信息用于标识邮件内容的结束。
- SMTP 是“ 推动” 协议。( 补充: HTTP 是“ 拉动” 协议)
- SMTP 使用 TCP 连接是持久的。
四、 邮件的组成
一封邮件不是简单的一段文本内容, 要按照一定格式结构进行组织的。
包括: 首部; 空白; 行主体。
邮件中常见的首部行内容:
To | 后面填入一个或多个收件人的电子邮件地址 | 必填 |
---|---|---|
Subject | 邮件的主题 | 可选 |
Cc | 表示应给某某人发送一个邮件副本 | 可选 |
From | 表示发信人的电子邮件地址 | 可选 |
Date | 发信日期 | 可选 |
Reply-To | 对方回信所用的地址 | 可选 |
五、 互联网邮件扩展( Multipurpose Internet Mail Extensions,MIME)
传输非7位ASCII码文本内容时,必须依据一个标准将非7位ASCII码文本内容转换位7位ASCII码文本内容,然后再传输。
MIME 主要包括的内容:
- 5 个 MIME 邮件首部字段
- 定义了多种邮件内容的格式, 对多媒体电子邮件的表示方法进行了标准化
- 定义了邮件传送编码, 可对任何内容格式进行转换, 从而适合通过 SMTP 进行传送
4.3. 邮件读取协议
第三版邮局协议: ( Post Office Protocol - Version 3, POP3)
- 互联网邮件访问协议: ( Internet Message Access Protocol, IMAP)
- Web 邮件系统的邮件读取协议: ( HyperText Transfer Protocol, HTTP)
一、 第三版邮局协议: ( Post Office Protocol - Version 3, POP3):
- 用于请求服务器传送第几封邮件: retr 邮件号
- 结束会话, 并更新操作: quit
- 用于向服务器传送用户名: user xxxx
- 用于向服务器发送用户密码: pass xxxx
- 用于将邮件标记为删除: dele 邮件号
- 用于请求所有的邮件序号和邮件长度: list
三、 互联网邮件访问协议: ( Internet Message Access Protocol, IMAP)
IMAP 服务器将每个邮件与一个文件夹进行关联, 当邮件第一次到达服务器时, 与收件人的收件箱文件夹相关联。 通过 IMAP, 收件人可以在服务器上创建新的文件夹, 并可以对邮件进行移动、 查询、 阅读、 删除等操作。 POP3 和 IMAP 的对比:
IMAP | POP3 | |
---|---|---|
相同点 | 邮件读取协议 | 邮件读取协议 |
不同点 | 对邮件的操作会反映在服务器上。 | 操作不会反映在服务器上 |
第五节 FTP
5.1. 文件传送协议( File Transfer Protocol,FTP)
一、 在互联网的两个主机间实现文件互传的网络应用, 其应用层协议称为 FTP。
二、 FTP 的服务器进程由两大部分组成:
- 主进程
,负责接受新的客户请求;
- 从属进程
,负责处理单个客户请求,与具体客户进行交互。
三、 应用结构:
补充:
- 控制连接(持久): 客户和服务器之间传输控制信息。 如用户标识、 口令、 改变远程目录, 上传下载文件命令等。
- 数据连接: 实际传送文件内容。
- 由于 FTP 专门使用一个独立的控制连接传输控制信息, 与传输文件信息进行分离, 所以将 FTP 这种控制信息的传送方式称为带外控制。
- FTP 是有状态的协议: 服务器将用户账户和控制连接关联起来。
四、 FTP 命令:
- 用于从 FTP 服务器的当前目录下载文件: RETR filename
- 用于向 FTP 服务器的当前目录上传文件: STOR filename
- 用于向服务器传送用户名: USER usename
- 用于向服务器发送用户密码: PASS password
- 用于请求服务器目录中的所有文件列表: LIST
五、 不需要专门的用户名和口令就可以登录的 FTP 服务器称为匿名服务器
第六节 P2P 应用
6.1. P2P
一、 P2P:
Peer to peer。 近年来很多性能表现优异, 深受用户喜爱的 P2P 应用层出不穷
例如:BitTorrent、 PPLive 和 PPstream 等。
二、 P2P 应用特点
- 应用的对等方是用户控制的桌面计算机
- 具有很强的应用规模伸缩性
- 应用都是动态地在对等方之间进行
- 应用充分聚集利用了端系统的计算能力以及网络传输宽带
第七节 Socket 编程基础
- 创建
套接字 : socket( )。
参数:
- 流式: SOCK_STREAM;
- 数据报: SOCK_DGRAM;
- 原始: SOCK_RAW
- 绑定
地址和端口号: bind( )
设置监听: listen( )
- 建立连接
:
- TCP 客户端:connect( );
- TCP 服务端:accept( )
接收数据:(1)TCP:recv( ) ,(2)UDP:recvfrom
发送数据:(1)TCP:send( ) ,(2)UDP:sendto
- 关闭套接字:close( )
课后习题:
1904综合题 13分:
设某网页的URL为http://www.abc.com/index.html,文件index.html引用了 8个小图像。在域名解析的过程中,无等待的一次DNS解析请求与响应时间记为RTTd,HTTP请求传输Web对象过程的一次往返时间记为RTTh。试给出:
1、该URL中的域名。
www.abc.com
2、浏览器解析到该URL对应的IP地址的最短时间和最长时间。
最短时间:1RTTd。最长时间:4RTTd。
3、若浏览器没有配置并行TCP连接,则基于HTTP1.0获取该Web页的完整内容(包括引用的图像)所需要的时间(不包括域名解析时间)。
18RTTh
4、若浏览器配置5个并行TCP连接,则基于HTTP1.0获取该Web页的完整内容(包括引用的图像)需要的时间(不包括域名解析时间)。
6RTTh
5、若浏览器没有配置并行TCP连接,则基于非流水方式的HTTP1.1获取该Web 页完整内容需要的时间以及基于流水方式的HTTP1.1获取该Web页的完整内容(包括引用的图像)需要的时间(不包括域名解析时间)。
非流水:10RTTh。
流水:3RTTh