第二章 网络应用
第一节 计算机网络应用体系结构
体系结构 | 特点 | 使用案例 |
---|---|---|
客户/服务器(C/S)结构网络应用 | 最典型、最基本的网络应用;通信只在客户与服务器间进行。 | www应用、文件传输 FTP、电子邮件 |
纯 P2P 结构网络应用 | 所有通信都在对等的通行方之间直接进行。P2P应用中的对等端是一个服务器与客户的结合体 | Gnutella、BitTorent |
混合结构网络应用 | 将C/S应用与P2P应用相结合,既有中心服务器的存在,又有对等端(客户)间的直接通信。 | IPTV |
第二节 网络应用通信基本原理
应用层协议定义了应用进程间交换的报文类型、报文构成部分具体含义以及交换时序等内容,即语法、 语义和时序等协议三要素内容。
C/S通信基本原理:
服务器端运行的是服务器进程,被动的等待客户请求服务。
客户端运行的是客户进程,主动发起通信,请求服务器进程提供服务。
应用进程间遵循应用协议交换应用层报文。
典型的网络应用编程接口是套接字,标识套接字的编号叫端口号,IP 地址是网络层地址用于唯一标识一个主机或路由器接口。
套接字是每个应用进程与其他应用进程网络通信时,接受和发送报文的通道
Internet 传输层能提供的服务只有两类:
- 面向连接的可靠字节流传输服务 TCP 当某个应用程序调用TCP作为其传输协议时,该应用程序就能获得来自TCP的两种服务:面向连接的服务和可靠的数据传输服务。 可靠的数据传送服务:应用进程能够依靠TCP,实现端到端的无差错、按顺序交付所有发送数据的服务。当应用程序的一端将字节流通过本地套接字传送时,它能够依靠TCP将相同的字节流交付给接收方的套接字,而没有字节的丢失和冗余。
- 无连接的不可靠数据报传输服务 UDP。
简答题:面向连接的服务:
查看答案
(1) 在应用层报文开始传送之前,TCP客户和服务器互相交换传输层控制信息,完成握手。在客户进程与服务器进程的套接字之间建立一条逻辑的TCP连接。 (2)这条连接是双全工的,即连接双方的进程都可以在此连接上同时进行报文收发。 (3) 当应用程序结束报文发送时,必须拆除该连接。
第三节 域名系统(DNS)
实现将域名映射为IP地址的过程,称为域名解析。域名服务器分布在整个互联网上,每个域名服务器只存储了部分域名信息。
一、 层次化域名空间
层次树状结构的命名方法。
域名类型 | 例子 |
---|---|
国家顶级域名(nTLD) | cn,us,uk |
通用顶级域名(gTLD) | com,net,org,edu,gov,mil,int。 |
基础结构域名 | arpa只有一个,用于反向域名解析,又称反向域名 |
二、 域名服务器
DNS服务器的管辖范围不是以“域”为单位,而是以区为单位。
- 根域名服务器 最重要的域名服务器,知道所有的顶级域名服务器的域名和 IP。 在因特网上共有 13 个不同 IP 地址的根域名服务器,它们的名字是用一个英文字母命名,从 a到 一直到 m(前 13 个字母),如 a.rootservers.net。其域名与IP地址的映射关系等信息都存储在所有网络的权威域名服务器上。
- 顶级域名服务器
- 权威域名服务器
- 中间域名服务器
三、 域名解析过程
- 递归解析 通常本地域名服务器都提供递归查询服务 依次查询:代替查询主机或其他域名服务器,进行进一步的域名查询,并将最终解析结果发送给查询主机或服务器。
- 迭代解析 直接响应结果:只是将下一步要查询的服务器告知查询主机或服务器。
第四节 万维网应用
万维网应用也称为Web应用
一、 万维网结构
Web应用主要包括
- web服务器
- 浏览器
- 超文本传输协议(HTTP)等部分
HTML 基本 Web 页也是通过 URL 地址引用页面中的其他对象。每个URL地址主要由两部分组成:存放对象的服务器主机域名(或 IP 地址)和对象的路径名。
二、 HTTP概述
非持久连接的HTTP1.0
①非持久连接的HTTP1.0中,客户HTTP需先向Web服务器发送请求建立TCP连接的请求报文,等待Web服务器的相应报文,这一来一回的一个往返时间为一个RTT; ②Web服务器响应HTTP客户后,HTTP客户再请求Web网页,Web服务器响应后,告知HTTP客户该网页有多少个图片引用,并通知TCP断开此TCP连接; ③随后HTTP客户再次请求TCP连接,Web响应后,再请求第一个图片的TCP连接,等待响应,Web响应后通知TCP连接断开此TCP连接; ④依次类推,如教材P60图2.10所示,获取含有3个图片的完整Web网页内容需要花费8RTT。
持久连接的HTTP1.1
①非流水方式持久连接的HTTP1.1:在非流水方式持久连接的HTP1.1中只需建立一条TCP连接即可,全部的请求结束后再断开TCP连接;如教材P62图2.12所示,请求含有3个图片的完整Web内容只需花费5RTT. ②流水方式持久连接的HTTP1.1:同上述的HTTP1.1的工作原理相同,不过可以进行多个图片请求;如教材P62图2.13所示,请求含有3个图片的完整Web网页内容只需3RTT.
三、 Cookie
Cookie中文名称为小型文本文件,
- Cookie是服务器端生成的,发送给浏览器,并存储在用户本地终端上的数据
- Cookie是实现服务器对客户状态的追踪的典型技术
弥补了HTTP协议无状态性的不足,有利于进行用户跟踪并提供针对性的服务,但也带来一些安全问题
主要包括四部分
- HTTP相应报文中的Cookie头行
- 用户浏览器在本地存储、维护和管理的Cookie文件
- HTTP请求报文中的Cookie头行
- 网站在后台数据库中存储、维护Cookie信息
Cookie常见用途
①网站可以利用Cookie的ID来准确统计网站的实际访问人数等数据。 ②网站可以利用Cookie限制某些特定用户的访问。 ③网站可以存储用户访问过程的操作习惯和偏好,有针对性地为用户提供服务,提升用户体验感。 ④记录用户登录网站使用的用户名、密码等信息,当用户多次登录时,无须每次都从键盘输入这些烦琐的字符和数字。 ⑤电子商务网站利用Cookie可以实现“购物车”功能。
第五节 Internet电子邮件
- 邮件服务器(电子邮件体系结构的核心) 功能是发送和接收邮件,向发信人报告邮件传送情况
- 简单邮件传输协议(SMTP)
SMTP是Internet电子邮件中核心应用层协议,实现邮件服务器之间或用户代理到邮件服务器之间的邮件传输。SMTP使用传输层TCP实现可靠数据传输,端口号25。SMTP的基本交互方式是SMTP客户端发送命令, 命令后面可能携带参数, SMTP服务器对命令进行应答。
- 特点
- 只能发送7位ASCII码文本内容 多用途互联网邮件扩展**( MIME )定义了将非7位ASCII码内容转换为7位ASCII码的编码规则。MIME**主要包括 3 个部分:(1)5 个 MIME 邮件首部字段(2)定义了多种邮件内容的格式(3)定义了邮件传送编码。
- 传送的邮件内容中不能包含“CRLF.CRLF”。
- SMTP 是“推动”协议。
- SMTP 使用 TCP 连接是持久的。
- 发送过程 握手阶段、邮件传输阶段、关闭阶段
- MIME(多用途互联网邮件扩展) 将非7位ASCII码文本内容转换为7位ASCII码文本内容然后再利用SMTP进行传输。 在邮件首部增加MIME首部行,说明主体内容原本的数据类型以及采用的编码标准等。
- 特点
- 用户代理邮件读取协议
- POP3 使用传输层 TCP。POP3 协议交互过程可以分为 3 个阶段:授权、事务处理和更新。
- IMAP IMAP 服务器维护了 IMAP 会话的用户状态信息,允许用户代理只读邮件的部分内容。
- HTTP HTTP 是 Web 邮件系统的邮件读取协议。
第六节 FTP
文本传输协议(FTP)在互联网的两个主机间实现文件互传的网络应用,其应用层协议也称为FTP。FTP 使用的默认端口号是 21。
C/S模式,采用控制连接:21端口传输控制命令,数据连接(20端口)传输文件内容。
特点如下:
- FTP 应用使用两个“并行”的 TCP 连接:控制连接和数据连接
- FTP 服务器必须在整个会话期间保留用户的状态,即 FTP 是有状态的。
- FTP 会话形式是客户向服务器发送命令,服务器发送状态码和短语作为应答。
第七节 P2P应用
P2P 体系结构对服务器的依赖很小,对于纯 P2P 来说,整个应用几乎不依赖某个集中服务器。 P2P 体系结构实现文件分发的最快时间为:
第八节 Socket编程基础
利用 Socket 编程技术可以开发客户/服务器网络应用程序。
网络应用进程可以创建3种类型的Socket:
- 数据报类型套接字
SOCK_DGRAM
(面向UDP) - 流式套接字
SOCK_STREAM
(面向 TCP) - 原始套接字 SOCK_RAM
典型的 SocketAPI 函数
API | 作用 |
---|---|
int socket() | 创建套接字 |
int close() | 关闭套接字 |
int bind() | 绑定套接字的本地端点地址(一般用于服务器端) |
int listen() | 监听状态(只用于服务器端,仅用于TCP服务器套接字) |
int connect | 将客户端套接字与服务器连接(只用于客户端) |
int accept | 创建新的套接字来与客户套接字建立TCP连接(只用于服务器端) |
Ssize_t_send() | 发送数据 |
Ssize_t_sendto() | 发送数据(只用于UDP) |
Ssize_t_recv() | 接收数据 |
Ssize_t_recvfrom() | 接收数据(只用于UDP) |
Int setsockopt | 设置套接字选项 |
Int getsockopt | 读取套接字选项 |
说明
本篇文章使用的脑图原件下载?XX云下载