本文主要是介绍04741计算机网络原理 第2章 网络应用,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
2.1 计算机网络应用体系结构
计算机网络应用从体系结构角度可以分为:
- 客户/服务器(C/S)结构:最典型、最基本的网络应用。案列:WWW应用、文件传输FTP、电子邮件等
- 纯P2P结构:所有通信都在对等的通行方之间直接进行。案列:Gnutella、 BitTorent
- 混合结构:存在客户与服务器之间的传统C/S结构通信,也存在客户之间的通信。 案列:IPTV
2.2 网络应用通信基本原理
网络应用的基本通信过程就是不同主机上的应用进程间以C/S方式进行通信。
在C/S结构的网络应用中,服务器端运行服务器进程,被动的等待客服请求服务;客户端运行客户端进程,主动发起通信,请求服务器进程提供服务。
典型的网络应用编程接口是套接字
TCP服务模型包括面向连接服务和可靠数据传输服务
- 面向连接服务:在应用层报文开始传送之前,TCP客户和服务器相互交换传输层控制信息,完成握手,在客户进程与服务器进程的套接字之间建立一条逻辑的TCP连接。这条连接是双全工的,即连接双方的进程可以在此连接上同时进行报文接发。当应用结束报文发送时,必须拆除该连接
- 可靠的数据传送服务:应用进程能够依靠TCP,实现端到端的无差错、按顺序交付所有发送数据的服务。当应用程序的一端将字节流通过本地套接字传送时,它能够依靠TCP将相同的字节流交付给套接字,而没有字节的丢失和冗余
2.3 域名系统
1. 层次化域名空间
实现将域名映射为ip地址的过程称为 域名解析
DNS为了实现域名解析,需要建立分布式数据库,存储网络中域名与IP地址的映射关系数据,这些数据库存储在域名服务器上,域名服务器根据用户的请求提供域名解析服务。
DNS为了实现域名的有效管理与高效查询,DNS服务按层次结构进行组织,并且该层次结构与域名的结构相对应。因特网采用了 层次树状结构的命名方法。
域名的结构由标号序列组成,各标号之间用点隔开
各标号分别代表不同级别的域名
- 国家顶级域名nTLD:如cn表示中国,us表示美国,uk表示英国等
- 通用顶级域名gTLD:如com表示公司和企业、net表示网络服务机构、org表示非盈利性组织、edu表示专用的教育机构、gov表示专用的政府部门、mil表示专用的军事部门、int表示国际组织
- 基础结构域名:这种顶级域名只有一个即arpa,用于反向域名解析,因此又称为反向域名
2. 域名服务器
DNS服务器的管辖范围不是以域为单位,而是以区位单位
域名服务器分类:
- 根域名服务器:最重要的域名服务器,因特网上共有13个不同ip地址的根域名服务器 a~m
- 顶级域名服务器:TLD服务器,负责管理在该顶级服务器注册的所有二级域名
- 权威域名服务器:负责一个区的域名服务器,保存该区中的所有主机的域名到IP地址的映射
- 中间域名服务器
3. 域名解析过程
域名解析方法:
- 递归解析:主机在进行域名查询时,本地域名服务器如果没有被查询域名的信息,则**「代理主机查询根域名服务器」**或其他服务器
- 迭代解析:本地域名服务器如果没有被查域名的信息,则代理主机查询根域名服务器,若仍未查到域名信息,则根域名不会代理主机继续查下去,而是将查询任务交给本地域名服务器
2.4 万维网应用
1. HTTP概述
Web应用主要包括 Web服务器、浏览器与超文本传输协议(HTTP)
Web应用是典型的客户/服务器网络应用(C/S),客户与服务器之间的交互基于应用层协议HTTP
Web页面是有对象组成。
每个URL地址主要由两部分组成:存放对象的服务器主机域名和对象的路径名
HTTP是Web应用的应用层协议,定义浏览器如何向Web服务器发送请求以及Web服务器如何向浏览器进行响应,HTTP使用的端口号是80。
2. HTTP连接
HTTP链接:HTTP基于传输层的TCP传输报文。浏览器向服务器发送请求之前,首先需要建立TCP连接,然后才能发送HTTP请求报文,并接收HTTP相应报文。根据HTTP在使用TCP连接的策略不同,可以分为 非持久连接的HTTP和持久连接的HTTP
- 非持久连接:是指HTTP客户与HTTP服务器建立TCP连接后,通过该连接发送HTTP请求报文,接收HTTP响应报文,然后断开连接 。HTTP/1.0默认使用非持久连接
典型的优化非持久连接技术:
- 并行连接:通过建立多条并行TCP连接,并行发送HTTP请求和冰箱接收HTTP响应
- 持久连接:重用已建立的TCP连接发送新的hTTP请求和接收HTTP响应,从而消除新建TCP连接的时间开销
持久连接的工作方式:
- 非流水方式持久连接:也称为非管道方式持久连接,客户端在通过持久连接接收到前一个响应报文后,才能发出对下一个对象的请求报文
- 流水方式持久连接:也称为管道方式持久连接,客户端在通过持久连接收到前一个对象的响应报文之前,连续依次发送后续对象的请求报文,然后再通过该连接依次接收服务器发回的响应报文,HTTP/1.1 默认使用流水方式持久连接
HTTP报文组成:起始行、首部行、空白行、实体主体
HTTP报文起始行和空白行不可缺少,首部行可以是零行或多行,实体主体则根据报文类型、功能等可有可无
HTTP报文分类:请求报文、响应报文
请求报文与响应报文最主要的区别是起始行不同,每部分之间由空格分隔,起始行最后是CRLF:
- 请求报文起始行为:<方法><协议版本>
- 响应报文起始行为:<协议版本><状态码><短语>
HTTP典型的请求方法:
- GET:请求读取由URL所标识的信息,是最常见的方法
- HEAD:请求读取由URL所标识的信息的首部,即无须在响应报文中包含对象
- POST:给服务器添加信息
- OPTION:请求一些选项的信息
- PUT:在指明的URL下存储一个文档
3. Cookie
Cookie技术主要包括4部分内容:
- HTTP响应报文中的Cookie头行:Set-Cookie
- 用户浏览器在本地存储、维护和管理的Cookie文件
- HTTP请求报文中的Cookie头行:Cookie
- 网站在后台数据库中存储、维护Cookie信息,包括已分配给用户ID、每个ID用户在本网站的访问特征
Cookie的常见用途:
- 网站可以利用Cookie的ID来准确统计网站的实际访问人数、新访问者和重复访问者的人数对比、访问者的访问频率等数据
- 网站可以利用Cookie限制某些特定用户的访问
- 网站可以存储用户访问过程中的操作习惯和偏好,对不同用户呈现不同的显示内容、颜色、布局等界面元素,又针对性地为用户提供服务,提升用户体验感
- 记录用户登录网站使用的用户名、密码等信息,当用户多次登录时,无须每次都从键盘输入这些繁琐的字符和数字
- 电子商务网站利用 Cookie 实现“购物车”功能
Cookie分类:
- 永久Cookie:Cookie 保存在硬盘中,有效周期可以设置,关闭浏览器不影响 Cookie 有效周期。
- 会话Cookie:Cookie 保存在内存中。Cookie 有效周期是浏览器会话期间,关闭浏览器,Cookie 消失
2.5 Internet电子邮件
1. 电子邮件系统
电子邮件系统主要包括:
- 邮件服务器:功能是发送和接收邮件,同时还要向发信人报告邮件传送的情况,是电子邮件体系结构的核心。
- 简单邮件传输协议(SMTP):是Internet电子邮件中的核心应用层协议,实现邮件服务器之间或用户代理到邮件服务器之间的邮件传输
- 用户代理:电子邮件应用客户端软件,为用户提供使用电子邮件的接口。功能是支持用户撰写、显示、处理和收发邮件,为用户阅读、回复、转发、保存和撰写邮件提供编辑与操作环境
- 邮件读取协议:是支持接收邮件的用户主动连接服务器,对其邮箱中的邮件进行操作或申请向本地传输的应用层协议
2. SMTP
SMTP是Internet电子邮件中的核心应用层协议,使用邮件服务器之间或用户代理到邮件服务器的邮件传输
SMTP通过3个阶段的应用层交互完成邮件的传输,分别是:握手阶段、邮件传输阶段、关闭阶段
SMTP作为电子邮件系统的核心应用层协议,具有如下特点:
- SMTP只能传送7位ASCII码文本内容
- SMTP传送的邮件内容中不能包含”CRLF.CRLF“
- SMTP是推动协议
- SMTP使用TCP连接是持久的
3.电子邮件格式与MIME
邮件内容的基本格式:
- 首部
- 空白行
- 主体
邮件中常见的首部行包括以下内容:
- To:后面填入一个活多个收件人的电子邮件地址。必填
- Suject:邮件的主题
- Cc:表示应给某某人发送一个邮件副本
- From:表示发信人的电子邮件地址
- Date:为发信日期
- Reply-To:是对方回信所用的地址。如果要求对方回复信件时使用不同于发信人邮件的地址,就需要填写该首部行
MIME主要包括三个部分:
- 5个MIME邮件首部字段,可包含在邮件首部中。
- MIME-Version:标识MIME的版本
- Content-Description:可读字符串,用于对邮件内容的概括性描述,以便收件人对邮件内容的初步判断
- Content-Id:邮件的唯一标识符
- Content-Transfer-Encoding:说明在传送时邮件主体是如何编码的。最简单的编码就是7位的ASCII码。quoted-printable 编码适用于当所传送的数据中只有少量的非 ASCII 码;对于任意的二进制文件采用 base64 编码。
- Content-Type:说明邮件主体内容的类型和格式,中间用/分开
- 定义了多种邮件内容的格式,对多媒体电子邮件的表示方法进行了标准化
- 定义了邮件传送编码,可对任何内容格式进行转换,从而适合通过SMTP进行传送
4. 邮件读取协议
邮件读取协议:
- POP3:(第三版邮局协议):使用传输层 TCP。协议交互过程分 3 阶段:授权、事务处理和更新
- POP3协议使用传输层TCP
- 默认端口:110
- 协议交互过程:
- 授权:用户代理需要向服务器发送用户名和口令(以明文形式),服务器鉴别用户身份,授权用户访问邮箱
- 命令:user 和 pass
- 事务处理:用户代理向服务器发送POP3命令,实现邮件读取、为邮件做删除标记、取消邮件删除标记以及获取邮件的统计信息等操作。
- 更新:客户发出quit命令,结束POP3会话,服务器删除那些被标记为删除的邮件
- 授权:用户代理需要向服务器发送用户名和口令(以明文形式),服务器鉴别用户身份,授权用户访问邮箱
- POP3不支持用户创建远程文件夹并为邮件指派文件夹的功能,而IMAP可以
- IMAP:(互联网邮件访问协议):维护了 IMAP 会话的用户状态信息,允许用户代理只读邮件的部分内容。
- HTTP:是 Web 邮件系统的邮件读取协议。注意:从浏览器发送 Web 电子邮件到邮件服务器过程中,也用 HTTP。
2.6 FTP
文件传送协议(FTP)是互联网的两个主机间实现文件互传的网络应用,其应用层协议称为FTP
FTP是典型的客服/服务器网络应用,采用C/S方式实现客户与服务器之间的双向文件传输
FTP的服务器进程由两大部分组成:
- 主进程:负责接受新的客户请求
- 若干从属进程:负责处理单个客户请求,与具体客户进行交互
FTP常见命令:
- USER username:用于向服务器传送用户标识
- PASS password:用户想服务器发送用户口令
- LIST:用于请求服务器回送当前远程目录中的所有文件列表
- RETR filename:用于从FTP服务器的当前目录下载文件
- STOR filename:用于想FTP服务器的当前目录上传文件
FTP 命令对应的服务器应答(3 位数字)
-
331 Usename OK,Password required
-
125 Data connection already open;transfer starting
-
425 Can’t open data connection
2.7 P2P应用
P2P 应用特点
-
P2P 体系结构对服务器的依赖很小,对于纯 P2P 来说,整个应用几乎不依赖某个集中服务器。应用都是动态地在对等方之间进行。
-
具有很强的应用规模伸缩性。
-
应用的对等方是用户控制的桌面计算机。
-
应用充分聚集利用了端系统的计算能力以及网络传输宽带。
2.8 Socket编程基础
目前在Internet中应用最广泛的网络应用编程接口就是 Socket API
Socket类型:
- 数据报类型套接字SOCK_DGRAM:面向传输层UDP接口
- 流式套接字SOCK_STREAM:面向传输层TCP接口
- 原始套接字SOCK_RAM:面向网络层协议接口
典型的Socket 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() 读取套接字选项
这篇关于04741计算机网络原理 第2章 网络应用的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!