计网复习:应用层

应用层

1. 域名系统

1.1 使用背景

在Internet的应用层中,许多应用都遵循客户机client/服务器server模式。客户端/服务器应用程序分为两类:

  • 一种可以直接被用户使用:e-mail
  • 支持其他应用程序的应用程序:DNS

DNS是一种支持程序

image-20211224085950473

TCP/IP使用IP唯一确定一台主机到因特网的连接。名字比IP更容易记忆。需要实现名字到地址或者地址到名字的映射系统。

map name to a address or map address to a name

因特网发展初期,使用**主机文件(host file)**实现映射。

host file构成

  • 一列是名字
  • 一列是地址

每台主机主机文件存储在磁盘中,并以一个标准主机文件为依据,定期进行更新。当程序或者用户需要将某一名字映射到一个地址时,主机就查询主机文件。

问题:

  • 主机文件太大,无法存储在每一台计算机中
  • 每次发生变化时,无法更新世界上的所有主机

解决:

  • 方案1:存储在一台单独的主机上,允许每一台需要映射的计算机访问这个集中化的信息。

    • 缺点:造成较大的通信量
  • 方案2:将巨大的信息分成很多很小的部分,每一部分存储在不同的计算机中。

    需要映射的计算机可以寻找最近的一台持有信息的计算机。

1.2 名字空间

分配给机器的名字必须从名字空间name space 中选择。

【IP地址唯一】----->【名字唯一】

Name Space按两种方式进行组织:
{ F l a t H i e r a r c h i c a l \begin{cases}Flat\\Hierarchical\end{cases} {FlatHierarchical

1.2.1 平面地址空间

一个名字分配个一个地址,空间中的名字是一个无结构的字符序列 a sequence of characters without structure。名字之间也可能没有公共部分;即使有公共部分,也没有实际含义。

缺点:

  • 必须集中控制才能避免二义性和重复性
1.2.2 层次化地址空间

名字的组成 { p a r t 1 :组织的性质 p a r t 2 : 组织的名字 p a r t 3 : 组织的部门 . . . . . . . 名字的组成\begin{cases}part1:组织的性质\\part2:组织的名字\\part3:组织的部门\\.......\end{cases} 名字的组成 part1:组织的性质part2:组织的名字part3:组织的部门.......

分配和控制名字的机构可以分散化decentralied

组织的性质和名字可以由中央组织定义,其他部分的分配可以交给这个组织自身。

1.3 域名空间

为了获得层次结构名字空间,设计了Domain Name Space。所有的名字由根在顶部的倒置的树结构定义:

树最多有128级:0级~127级

image-20211224095359363
1.3.1 标签

树上的每一个节点有一个label,label最多为63个字符。根节点的标号是一个空字符串null

DNS要求同一节点分出来的子节点有不同的label:确保名字的唯一性。

image-20211224095614899
1.3.2 域名

每一个节点都有一个域名。

一个全的domain name是用.分割的标识号序列。

domain name总是从节点向上读到根节点。最后一个标号是根节点的标号。这表示一个完全的域名总是以一个空标号结束,即最后一个字符是.

1.3.2.1 Fully Qualified Domain Name

如果一个label以空字符串结束,那么他就是全称域名full qualified domain name

全称域名包含一台主机的所有名字的域名。它包含所有的标号,从最具体的标号到最一般的标号,能唯一定义一台主机的名字,如:

challenger.act.fhda.edu.

是一个全称域名。

1.3.2.2 Partially Qualified Domain Name

如果一个域名不是以空字符串结束,那么称为部分域名partially Qualified Domain Name

image-20211224100843498

当这个需要解析的名字属于和客户端相同的站点same site时,使用部分域名。解析程序能提供省略的部分,称为后缀suffix,以创建FQDN。

1.3.3 域

domain是域名空间的一棵子树。

域的名字是树顶部节点的域名

一个域本身也可以划分为多个域,即子域subdomain

image-20211224101910573

1.4 分布式名字空间

一台计算机存储的问题:

  • 通信量大
  • 不安全
1.4.1 名字服务器的层次结构

将信息分布在多台称为DNS服务器(DNS server)的计算机中。

一种方法:将整个空间划分为基于第一级的域,并进一步划分为更小的subdomain。

每一台服务器对一个大的域或者较小的域是负责的

与建立名字的层次结构一样,也建立了服务器的层次结构

image-20211224103044499
1.4.2 空间

一个服务器responsible或者has authority的范围称为一个Zone。

Zone和Domain的区别:

  • 如果一个服务器负责一个域,并且这个域没有被划分更小的subdomain,那么此时domain和zone是相同的。
  • 如果被划分为更小的subdomain
    • 子节点的信息会放在更低层次的服务器中
    • 原来的服务器只保存这些较低服务器的某种参照
image-20211224103718231
1.4.3 根服务器

Root Server:whose ZONE consists of the whole tree

根服务器通常不保存关于域的任何信息,只是将其授权给其他的服务器,并保存这些服务器的参照关系。

目前有多个根服务器,每一台都覆盖了整个域名空间, 这些服务器分布在世界各地。

1.4.4 主服务器和辅服务器

D N S 定义了服务器类型 { primary server secondary server DNS定义了服务器类型\begin{cases}\text{primary server}\\\text{secondary server}\end{cases} DNS定义了服务器类型{primary serversecondary server

  • primary server:存储了授权区域有关文件的服务器,它负责创建creating、维护maintaining和更新updating区域文件,并将区域文件存储在本地磁盘中。

  • **secondary server:**从一个服务器(主服务器或者是辅服务器)传输transfer一个区域的全部信息,并将文件存储在它的本地磁盘中。辅助服务器既不创建也不更新区域文件。如果需要更新,那么必须是由主服务器完成,由主服务器发送到辅助服务器。

一台服务器可能是某个特定区域的主服务器,也可能是别的区域的辅服务器。

  • 主服务器能够从磁盘文件中装载所有信息,辅助服务器从主服务器中装载信息。

  • 当辅助服务器从主服务器中下载信息时,这称为区域的传递。【辅服务器作为备份】

1.5 网络中的DNS

域名空间被划分为三个部分:
D o m a i n   n a m e   s p a c e { G e n e r i c   d o m a i n s I n v e r s e   d o m a i n c o u n t r y   d o m a i n s Domain\ name \ space\begin{cases}Generic\ domains\\Inverse \ domain\\country\ domains\end{cases} Domain name space Generic domainsInverse domaincountry domains

1.5.1 通用域

Generic domain:按照已经注册主机的一般行为对主机进行定义。

树中的每一个节点定义一个域,他是域名空间数据库的一个索引。

image-20211224110531103image-20211224110544448

1.5.2 国家域

country domain使用两个字母的国家缩写,如us代表美国,第二级Label是组织机构,如州。image-20211224110830028

1.5.3 反向域

inverse domian用于将地址映射为名字。

应用:反向或者指针PTR查询。

image-20211224111223498

1.6 解析

name-address resolution:将名字映射为地址或者将地址映射为名字

1.6.1 解析程序

DNS是一个客户机/服务器应用程序,需要将地址—>名字或者名字—>地址时需要调用一个解析程序resolver的DNS服务程序。

resolver用一个映射访问最近的一个DNS服务器,然后进行递归解析或者迭代解析。

1.6.2 绑定名字到地址

名字到地址的映射:DNS服务器检查通用域或者国家与查找相应的映射

1.6.3 绑定地址到名字

地址到名字的映射:DNS服务器进行PTR查询,使用inverse domian。

IP地址必须反过来,并将in-addr和arpa两个标号附加在最后,以创建反向域能够接收的域。

1.6.4 递归搜索

客户端解析程序从名字服务器中请求递归应答的方式:

  • 如果服务器是这一域名的授权服务器,他会检查数据库并做出相应
  • 不是授权服务器,通常会发给父服务器,并等待响应。
  • …一直迭代向上…直到找到
  • 找到后迭代返回
image-20211224114151069
1.6.5 迭代搜索

客户端解析程序从名字服务器中没有请求递归应答,那么映射可以以迭代的形式进行

  • 如果服务器时该名字的授权服务器,那么发送应答
  • 不是,它返回那个他认为可以解析该查询的服务器地址
image-20211224114616321
1.6.6 缓存

服务器向另一个服务器请求映射并得到回应时,将回应发送回客户端之前,先将信息存储在高速缓存中。

下次查询时通过高速缓存解决问题。但是通知这个响应来自高速缓存而非授权信息。

高速缓存存在问题:

  • 映射过期

解决方式:

  • TTL信息添加在映射上,TTL定义了服务器可以将信息放入高速缓存的时间,超时后该信息无效
  • 每一台服务器对每一个映射保留一个TTL计数器。高速缓存定期检查,清除TTL已经过期的映射

2. 远程登录、电子邮件和文件传输

因特网的服务 { r e m o t e   l o g g i n g e − m a i l F i l e   t r a n s f e r 因特网的服务\begin{cases}remote\ logging\\e-mail\\File\ transfer\end{cases} 因特网的服务 remote loggingemailFile transfer

2.1 远程登录

需求:用户希望在远程网站上运行许多个程序run application programs at a remote site,但是产生的结果能传送到本地的网站。

无法为每一个服务创建客户/服务器应用程序。

更好的方式是使用通用的general - purse 客户/服务器程序,让用户能访问远程计算机上的所有的应用程序。

允许用户在远程计算机上登录-----登录后使用计算机提供的服务------结果返回到本地的计算机上

2.1.1 TELNET

TELNET是一个通用的客户/服务应用程序。

2.1.2 Logging

本地登录 local log-in :登录到本地的分时系统,称为本地登录。

​ 过程:

  • 用户击键或者运行仿真程序
  • 击键被终端驱动程序所接受
  • 终端驱动程序将字符传递给操作系统
  • 操作系统解释字符,调用所需的应用程序或者实用程序

image-20211224195907359

远程登录 remote log-in :需要使用TELNET

过程

  • 使用TELNET客户程序和服务器程序
  • 击键发送给终端驱动程序
  • 本地OS接受字符,但并不解释
  • 字符被送到TELNET客户机,TELNET将字符转换成网络虚拟终端NVT字符的通用字符集
  • 传送给本地的TCP/IP协议栈
  • 将NVT文本通过因特网传输到远程的TCP/IP协议栈
  • 传给那里的OS
  • 传送给远程的TELNET服务器,TELNET服务器将其转换成远程计算机可以理解的字符
  • 字符传送给伪终端驱动程序
  • 最后传送给OS,在传送给适当的应用程序
image-20211224201219330
2.1.3 网络虚拟终端

异构的系统 heterogeneous systems 打交道:TELNET定义了一个通用的接口network virtual terminal NVT

  • 客户TELNET将来自本地终端的字符转换为NVT形式,然后传递给网络
  • 而服务器TELNET将来自NVT形式的数据或者命令转换成远程计算机可以接受的形式
image-20211224201735217
  • NVT字符集【NVT character set】

    两者都是八位字符集

{ 数据字符 d a t a   c h a r a c t e r :最高位为 0 控制字符 c o n t r o l   c h a r a c t e r :最高位为 1 \begin{cases}数据字符data \ character:最高位为0\\控制字符control\ character:最高位为1\end{cases} {数据字符data character:最高位为0控制字符control character:最高位为1

2.1.4 Embeding

TELNET使用一个TCP/IP连接,服务器使用熟知端口23,客户使用临时端口

使用同一个连接发送数据字符和控制字符。

TELNET将控制字符嵌入到数据字符中:区别数据和控制字符时使用控制解释IAC

image-20211224202258677
2.1.5 Options

TELNET提供额外的协商选项,提供额外特性。

使用控制字符来定义选项:

image-20211224202449942
Options Negotiation 选项协商

为使用上述选项,使用4个控制字符:

  • WILL:请求激活;接收激活
  • WONT:决绝请求激活;提供禁止选项
  • DO:同意激活选项;请求激活选项
  • DONT:同意禁止选项;请求禁止选项

希望回显的例子:

image-20211224203206294
suboption negotiation 子选项协商

有些选项需要附加信息,如定义一个中断的类型或者速率,协商要包括一个字符串或者数字来定义类型或者速率。

image-20211224203351514

(6)Mode of Opration

操作方式 { d e f a u l t   m o d e 默认方式:回显由客户完成,一行完成前不发送 c h a r a c t e r   m o d e 字符方式:每一个字符从客户机发送给服务器 l i n e   m o d e 行方式:行编辑由客户完成,然后客户将整行发给服务器 操作方式\begin{cases}default \ mode默认方式:回显由客户完成,一行完成前不发送\\ character\ mode字符方式:每一个字符从客户机发送给服务器\\line\ mode行方式:行编辑由客户完成,然后客户将整行发给服务器\end{cases} 操作方式 default mode默认方式:回显由客户完成,一行完成前不发送character mode字符方式:每一个字符从客户机发送给服务器line mode行方式:行编辑由客户完成,然后客户将整行发给服务器

2.2 电子邮件

电子邮件的一般架构:

  • 用户代理 user agent
  • 报文传输代理 message transfer agent
  • 报文访问组件 message access agent
2.2.1 架构
2.2.1.1 架构一:仅需要两个UA

电子邮件的发送方与接收方是在一个系统内的用户(或者相同应用程序),他们直接或者间接共享一个系统

邮箱mailbox是本地硬盘的一部分——是一个特殊文件,只有邮箱的拥有者可以访问

  • 客户1运行用户代理UA
  • 在客户2的邮箱中插入报文
  • 报文中有发送方与接收方的邮箱地址(文件名)
  • 客户2可以运行UA,检查他的邮箱
image-20211224205844058
2.2.1.2 架构二:需要UA和报文传输代理MTA

发送方和接收方是不同系统上的用户。需用用户代理和报文传输代理。

  • 客户1使用用户代理程序发送报文到他所在网站的系统——邮件服务器
  • 邮件服务器使用队列存储报文,等待发送
  • 客户2使用用户代理检索存储在他的网站系统中的报文
  • 客户2使用两个报文传输代理——客户+服务器
  • 服务器始终运行
image-20211224211705400

全过程需要两个UA和两个MTA(客户机和服务器)

2.2.1.3 架构三:两个UA和两对MTA

客户机1通过广域网连接到系统。

客户2直连到系统。

image-20211224212259807
2.2.1.4 架构四:两对MTA和一对MAA

客户1和客户2都通过广域网连接到系统。

涉及到邮件的两个操作:pull和push

  • push:从MTA客户机推入报文到MTA服务器

  • pull:从MAA服务器中拉出报文到MAA客户机

    image-20211224213315865
2.2.2 用户代理 User Agent

第一个组件conponent UA,是一个用户程序

2.2.2.1 Services Provided by UA

有五种报文:

  • Composing messages
  • Reading messages
  • Replying to messages
  • Forwarding messages 转发报文
  • Handling mailboxes

image-20220828164728502

2.2.2.2 用户代理类型
  • command-driven

    • 从键盘接收打个字符的命令执行某项任务
    • mail,pine,elm
  • GUI-based

    图形化界面

2.2.2.3 地址

地址由两部分构成:本地部分local part域名domain

  • local part:特定文件的名字,称为用户邮箱,在用户邮箱中存储接收到的文件
  • domain:邮件交换器的domain
2.2.2.4 MIME

电子邮件有一个简单的结构。他只能发送NVT 7 ASCII格式的报文。

多用途因特网扩充 Multipurpose Internet Mail Extension MIME

  • 辅助协议,允许非ASCII数据通过电子邮件传送
  • MIME将非ASCII转换到NVT ASCII,并将其传送给MTA服务器通过因特网发出去
  • 在接收方在转换到原来的数据
image-20211224221144033
2.2.3 简单邮件传输协议:STMP

实际邮件的传输由MTA完成。

定义MTA的协议称为SMTP 简单邮件传输协议 Simple Message Transfer Protocal,协议定义了如何来回发送命令和响应。

image-20211224222113672
2.2.3.1 Commands and Response
image-20211224222135237
  • commands

    从客户发给服务器。命令的格式为keywords:argument(s)

    STMP定义了14个命令:

    • 前5个是强制的,必须实现且支持
    • 后三个是常用且推荐
    • 最后6个很少使用
  • response

    服务器发给客户端

    三位数字码,附加文本信息

    image-20211224222658065
2.2.4 POP 和 IMAP

image-20211224222821766

报文访问代理有两种协议:

  • POP3 邮局协议版本3
  • IMAP4 因特网邮件访问协议版本4
2.2.4.1 POP3

用户要从邮件服务器的邮箱中下载邮件时,客户端发起邮件访问的操作。

  • 客户端开启与使用服务器110端口之间的TCP连接
  • 发送用户名和密码来访问邮箱
  • 之后逐条读取信息
image-20211224223858073

POP3有两种模式:

  • 删除模式delete mode:从邮箱中读取后删除邮件
  • 保存模式save mode:从邮箱中读取后仍保存该邮件

2.3 文件传输

传送文件最常见的协议:FTP

2.3.1 文件传输协议

FTP使用TCP服务。它需要两个TCP连接。

  • 一个用于数据传输
  • 一个用于控制信息传输

分开传输使得FTP效率更高。

熟知端口21用于控制连接,而熟知端口20用于数据连接。

image-20220828211431582

FTP会话期间:

  • **控制连接(control connection)**始终处于连接状态。

    通过命令command和响应response完成

    每一条命令是一个短行,不存在文件格式或者文件结构的问题。

    image-20211224225715677
  • **数据链接(data connection)**在每次传输文件时打开然后关闭

    客户必须定义要传送的文件的:

    • 文件类型
    • 传输方式
    • 数据结构

    image-20211224225945530

3. WWW and HTTP

万维网(World wide web, WWW)是分布式在世界各地相互连接的信息仓库。

3.1 体系架构

WWW是分布式客户/服务器服务,客户机用浏览器能够使用服务器提供的服务。然后提供的服务分布在许多称为站点的位置上。

每个站点拥有一个或者多个文档,即web页面。

web页面可以包含一个本地站点或者是其他站点的链接。

image-20220313112620416
3.1.1 客户(浏览器)

浏览器使用相同的架构:

  • 控制程序:从键盘或者鼠标接受输入,使得用户端程序访问文档
  • 客户协议
  • 解释程序:获取文档后解释程序显示
image-20220313113028516
3.1.2 服务器

Web页面存储在服务器中,客户机请求到达,相应文档发送给客户

可存储在高速缓存中,较快发送

3.1.3 统一资源定位符URL

URL说明了因特网信息的标准

包含:

  • 协议:HTTP
  • 主机:IP/域名
  • 端口:可选
  • 路径:路径

冒号隔开

image-20220313113450675

3.1.4 Cookies

Cookies提供状态保存服务

web有额外的功能:

  • 只允许注册客户访问
3.1.4.1 Cookies的创建和存储
image-20220313114031579

3.2 Web文档

{ 静态文档 动态文档 活动文档 \begin{cases}静态文档\\动态文档\\活动文档\end{cases} 静态文档动态文档活动文档

3.2.1 静态文档

静态文档是固定内容的文档,由服务器创建并存储。发送给客户机的是副本

3.2.1.1 超文本标记语言

超文本标记语言用于创建web页面的语言。

beginning and ending tags

起始标签格式:<标签名 属性=值 属性= 值 ...>

终止标签格式:<标签名>

  • 文本标签
  • 图像标签
  • 超链接标签
3.2.2 动态文档

在有浏览器请求该文档时,才由web服务器创建。

请求到达时,运行应用程序或者脚本来创建动态文档。服务器返回程序或者脚本的输出作为浏览器文档请求的相应。

  • CGI技术:定义如何编写动态文档,如何将数据发送给应用程序,如何使用输出结果

    • 输入:参数传递(URL)

      浏览器到服务器的输入通过表单完成

    • 输出:服务器站点执行CGI程序

image-20220828215217307

  • PHP,JSP

image-20220828215236471

3.2.3 活动文档

需要程序或者脚本在客户端进行。服务器发送文档或者脚本的副本。

image-20220828221008112

3.3 超文本传输协议

HTTP的功能类似FTP和SMTP的结合。

  • FTP:但是只用一个TCP连接
  • SMTP:传输的数据格式与SMTP类似

HTTP在熟知端口80上使用TCP服务

3.3.1 HTTP Transaction

TCP报文,发送请求和发送响应

3.3.1.1 报文

image-20220828223700340

a. Request line and Status line
  • 请求行格式:请求类型 URL HTTP版本

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-1x4EEwyI-1661699817342)(https://cdn.jsdelivr.net/gh/Holmes233666/gitee-image@main/pictureStore/image-20220313120539921.png)]

  • 状态行格式:HTTP版本 状态码 状态短语

    image-20220313120628666

b. Header

头部格式:head_name : value

分类:

  • 通用头部
  • 请求头部
  • 响应头部
c.body

image-20220313121120436

3.3.2 Persistant Versus Nonpersistent Connection
3.3.2.1 Nonpersistent Connection

每一次响应都要建立TCP连接,步骤:

  • 客户端建立TCP连接,发送请求
  • 服务器发送响应,并关闭连接
  • 客户端读取
3.3.2.2 Persistant Connection

HTTP1.1默认持续连接。服务器响应后会保持连接处处于开启状态,等待更多的请求。如果客户请求关闭或者超时时,服务器关闭连接。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
CSDN(中国软件开发者网络)是一个面向IT技术和软件开发人员的综合性社区网站。它通过提供技术文章、博客、论坛、教程等资源,为广大开发者提供学习和交流的平台。 计算机网络(Computer Network)是指将多台计算机通过通信设备进行连接,使它们可以相互传递数据和共享资源的系统。计算机网络是现代信息技术的重要组成部分,它的发展和应用对社会的各个领都有重要的影响。 在考察计算机网络复习题中,CSDN可以起到很好的辅助作用。在CSDN上,我们可以找到大量关于计算机网络的相关知识和学习资料。无论是理论知识还是实践应用,CSDN都提供了丰富的资源供我们查阅和学习。 复习计算机网络,我们可以通过在CSDN上阅读相关的技术文章和博客来巩固知识点。这些文章通常由经验丰富的软件开发者或网络工程师撰写,内容详尽。同时,我们还可以通过参与CSDN的技术论坛,与其他开发者进行交流和讨论。在这个过程中,我们可以分享自己的想法和问题,也可以从其他人的经验中获得启示。这样的互动能够帮助我们更好地理解和掌握计算机网络的相关知识。 总之,CSDN是一个对于计算机网络复习非常有帮助的网站。通过利用CSDN的资源,我们可以更加高效地学习和掌握计算机网络的知识,提升自己在这个领的能力和竞争力。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Blanche117

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值