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() 读取套接字选项

在这里插入图片描述

在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值