计算机网络原理 - 第二章

2020-04-09 15:50:35 浏览数 (1)

第二章 网络应用

第一节 计算机网络应用体系结构

体系结构

特点

使用案例

客户/服务器(C/S)结构网络应用

最典型、最基本的网络应用;通信只在客户与服务器间进行。

www应用、文件传输 FTP、电子邮件

纯 P2P 结构网络应用

所有通信都在对等的通行方之间直接进行。P2P应用中的对等端是一个服务器与客户的结合体

Gnutella、BitTorent

混合结构网络应用

将C/S应用与P2P应用相结合,既有中心服务器的存在,又有对等端(客户)间的直接通信。

IPTV

第二节 网络应用通信基本原理

应用层协议定义了应用进程间交换的报文类型、报文构成部分具体含义以及交换时序等内容,即语法、 语义和时序等协议三要素内容。

C/S通信基本原理:

服务器端运行的是服务器进程,被动的等待客户请求服务。

客户端运行的是客户进程,主动发起通信,请求服务器进程提供服务。

应用进程间遵循应用协议交换应用层报文。

典型的网络应用编程接口是套接字,标识套接字的编号叫端口号,IP 地址是网络层地址用于唯一标识一个主机或路由器接口。

套接字是每个应用进程与其他应用进程网络通信时,接受和发送报文的通道

Internet 传输层能提供的服务只有两类:

  1. 面向连接的可靠字节流传输服务 TCP 当某个应用程序调用TCP作为其传输协议时,该应用程序就能获得来自TCP的两种服务:面向连接的服务和可靠的数据传输服务。 可靠的数据传送服务:应用进程能够依靠TCP,实现端到端的无差错、按顺序交付所有发送数据的服务。当应用程序的一端将字节流通过本地套接字传送时,它能够依靠TCP将相同的字节流交付给接收方的套接字,而没有字节的丢失和冗余。
  2. 无连接的不可靠数据报传输服务 UDP。

简答题:面向连接的服务:

查看答案

(1) 在应用层报文开始传送之前,TCP客户和服务器互相交换传输层控制信息,完成握手。在客户进程与服务器进程的套接字之间建立一条逻辑的TCP连接。 (2)这条连接是双全工的,即连接双方的进程都可以在此连接上同时进行报文收发。 (3) 当应用程序结束报文发送时,必须拆除该连接。

第三节 域名系统(DNS)

实现将域名映射为IP地址的过程,称为域名解析。域名服务器分布在整个互联网上,每个域名服务器只存储了部分域名信息。

一、 层次化域名空间

层次树状结构的命名方法。

域名类型

例子

国家顶级域名(nTLD)

cn,us,uk

通用顶级域名(gTLD)

com,net,org,edu,gov,mil,int。

基础结构域名

arpa只有一个,用于反向域名解析,又称反向域名

二、 域名服务器

DNS服务器的管辖范围不是以“域”为单位,而是以区为单位

  1. 根域名服务器 最重要的域名服务器,知道所有的顶级域名服务器的域名和 IP。 在因特网上共有 13 个不同 IP 地址的根域名服务器,它们的名字是用一个英文字母命名,从 a到 一直到 m(前 13 个字母),如 a.rootservers.net。其域名与IP地址的映射关系等信息都存储在所有网络的权威域名服务器上。
  2. 顶级域名服务器
  3. 权威域名服务器
  4. 中间域名服务器

三、 域名解析过程

  1. 递归解析 通常本地域名服务器都提供递归查询服务 依次查询:代替查询主机或其他域名服务器,进行进一步的域名查询,并将最终解析结果发送给查询主机或服务器。
  1. 迭代解析 直接响应结果:只是将下一步要查询的服务器告知查询主机或服务器。

第四节 万维网应用

万维网应用也称为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电子邮件

  1. 邮件服务器(电子邮件体系结构的核心) 功能是发送和接收邮件,向发信人报告邮件传送情况
  2. 简单邮件传输协议(SMTP) SMTP是Internet电子邮件中核心应用层协议,实现邮件服务器之间或用户代理到邮件服务器之间的邮件传输。SMTP使用传输层TCP实现可靠数据传输,端口号25。SMTP的基本交互方式是SMTP客户端发送命令, 命令后面可能携带参数, SMTP服务器对命令进行应答。
    • 特点
      1. 只能发送7位ASCII码文本内容 多用途互联网邮件扩展**( MIME )定义了将非7位ASCII码内容转换为7位ASCII码的编码规则。MIME**主要包括 3 个部分:(1)5 个 MIME 邮件首部字段(2)定义了多种邮件内容的格式(3)定义了邮件传送编码。
      2. 传送的邮件内容中不能包含“CRLF.CRLF”。
      3. SMTP 是“推动”协议。
      4. SMTP 使用 TCP 连接是持久的。
    • 发送过程 握手阶段、邮件传输阶段、关闭阶段
    • MIME(多用途互联网邮件扩展) 将非7位ASCII码文本内容转换为7位ASCII码文本内容然后再利用SMTP进行传输。 在邮件首部增加MIME首部行,说明主体内容原本的数据类型以及采用的编码标准等。
  3. 用户代理邮件读取协议
    • POP3 使用传输层 TCP。POP3 协议交互过程可以分为 3 个阶段:授权、事务处理和更新。
    • IMAP IMAP 服务器维护了 IMAP 会话的用户状态信息,允许用户代理只读邮件的部分内容。
    • HTTP HTTP 是 Web 邮件系统的邮件读取协议。

第六节 FTP

文本传输协议(FTP)在互联网的两个主机间实现文件互传的网络应用,其应用层协议也称为FTP。FTP 使用的默认端口号是 21。

C/S模式,采用控制连接:21端口传输控制命令,数据连接(20端口)传输文件内容。

特点如下:

  1. FTP 应用使用两个“并行”的 TCP 连接:控制连接和数据连接
  2. FTP 服务器必须在整个会话期间保留用户的状态,即 FTP 是有状态的。
  3. FTP 会话形式是客户向服务器发送命令,服务器发送状态码和短语作为应答。

第七节 P2P应用

P2P 体系结构对服务器的依赖很小,对于纯 P2P 来说,整个应用几乎不依赖某个集中服务器。 P2P 体系结构实现文件分发的最快时间为:

第八节 Socket编程基础

利用 Socket 编程技术可以开发客户/服务器网络应用程序。

网络应用进程可以创建3种类型的Socket:

  1. 数据报类型套接字SOCK_DGRAM(面向UDP)
  2. 流式套接字 SOCK_STREAM(面向 TCP)
  3. 原始套接字 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云下载

0 人点赞