计网期末复习指南(六):应用层(DNS、FTP、URL、HTTP、SMTP、POP3)

2024-06-04 18:52

本文主要是介绍计网期末复习指南(六):应用层(DNS、FTP、URL、HTTP、SMTP、POP3),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

前言:本系列文章旨在通过TCP/IP协议簇自下而上的梳理大致的知识点,从计算机网络体系结构出发到应用层,每一个协议层通过一篇文章进行总结,本系列正在持续更新中...   

计网期末复习指南(一):计算机网络体系结构计网期末复习指南(二):物理层计网期末复习指南(三):数据链路层
计网期末复习指南(四):网络层计网期末复习指南(三):运输层计网期末复习指南(六):应用层


目录

一.应用层概述

二.域名系统DNS

▐ 域名结构

三.文件传输协议FTP

四.万维网WWW

▐ 统一资源定位符URL

URL的结构

URL示例

URL在Web中的作用

▐ 超文本传输协议HTTP

HTTP请求

HTTP响应

常见的HTTP方法

HTTP状态码

HTTP的版本

▐ 超文本标记语言HTML

动态万维网文档

活动万维网文档

五.邮件收发协议


一.应用层概述

在TCP/IP模型中,应用层是网络协议栈中最高层的一层,负责处理网络应用之间的通信。

应用层的主要功能包括:

  • 提供应用程序与网络之间的接口,使应用程序能够通过网络传输数据。
  • 定义了应用层协议,如HTTP、SMTP、FTP等,用于规定应用程序之间的通信规则和数据格式。
  • 实现了应用层协议的解析和处理,包括对数据的封装、路由、拆分和重组等。
  • 提供了各种网络服务的功能,如电子邮件、文件传输、远程登录等。

应用层协议是应用程序直接使用的协议,因此应用层协议的设计需要考虑到应用程序的需求和特点。同时,应用层还负责将数据传输到传输层,将接收到的数据传递给相应的应用程序。


二.域名系统DNS

域名系统(Domain Name System, DNS)是互联网的基础服务之一,它将用户友好的域名(如www.example.com)转换为计算机可以理解的IP地址(如192.0.2.1)。这个过程称为域名解析。DNS的主要作用是通过将便于记忆的域名转换为实际的IP地址,帮助用户更方便地访问互联网资源。比如我们平常使用百度都是直接访问baidu.com而没有人去输入百度的IP地址,有了DNS的帮助,可以极大程度上优化用户的体验。

以下是DNS的基本工作原理:

  1. 用户输入域名:用户在浏览器地址栏输入域名。
  2. DNS解析器查询:浏览器向本地DNS解析器发送查询请求。
  3. 本地缓存检查:本地DNS解析器先检查缓存中是否有对应的IP地址。
    • 如果有缓存记录,则直接返回IP地址。
    • 如果没有缓存记录,则继续向上级DNS服务器查询。
  4. 递归查询:如果本地DNS解析器没有找到结果,它会递归查询其他DNS服务器。查询过程通常从根DNS服务器开始,逐级向下查询顶级域(TLD)服务器和权威DNS服务器。
  5. 获得IP地址:最终,权威DNS服务器返回域名对应的IP地址。
  6. 返回结果:本地DNS解析器将IP地址返回给用户的浏览器。
  7. 建立连接:浏览器使用获得的IP地址与目标服务器建立连接,获取网页内容。

DNS系统分为多个层级,包括:

  • 根域名服务器:管理顶级域(如.com、.org等)的信息。
  • 顶级域(TLD)服务器:管理特定顶级域内的所有域名(如.com域的所有域名)。
  • 权威DNS服务器:存储具体域名及其对应的IP地址信息。
  • 缓存DNS服务器:保存近期解析过的DNS记录,减少重复查询。

▐ 域名结构

互联网的域名结构采用层次化的分级体系,每个域名由多个部分组成,从右到左依次为顶级域、二级域、三级域等,形成一个树状结构。以下是详细的域名结构:

  1. 顶级域(Top-Level Domain, TLD)通用顶级域(gTLD):如.com.org.net.info等。国家代码顶级域(ccTLD):如.cn(中国)、.uk(英国)、.jp(日本)等。

  2. 二级域(Second-Level Domain, SLD):位于顶级域之下,通常由注册者选择和注册。例如,在example.com中,example是二级域。

  3. 三级域(Third-Level Domain):二级域下的子域。例如,在www.example.com中,www是三级域。

  4. 更低级别的域(Lower-Level Domains):根据需要,可以进一步划分为四级域、五级域等。例如,sub.www.example.com中,sub是四级域。

示例:

www.example.com
  • com:顶级域(TLD)
  • example:二级域(SLD)
  • www:三级域

三.文件传输协议FTP

FTP (File Transfer Protocol) 是一种用于在网络中传输文件的标准协议。它是一个客户端-服务器协议,允许用户通过客户端程序与远程服务器建立连接并进行文件的上传和下载。

使用FTP,用户可以在本地计算机和远程服务器之间传输文件。用户需要输入远程服务器的IP地址或域名、用户名和密码来建立连接。一旦连接建立成功,用户可以浏览服务器上的文件和目录,并进行文件的上传和下载。

FTP协议使用两个不同的连接:控制连接和数据连接。控制连接用于传输命令和回应,而数据连接用于传输实际的文件数据。

FTP支持多种操作,包括上传文件、下载文件、创建目录、删除文件、重命名文件、浏览文件列表等。同时,FTP还提供了认证和安全机制,如用户名和密码验证、加密传输等,以保护文件传输的安全性。

由于FTP是一种老旧的协议,存在一些安全性和性能方面的限制。因此,现在更常用的是基于FTP的安全协议,如SFTP (SSH File Transfer Protocol) 和FTPS (FTP over SSL/TLS)。这些协议通过加密和身份验证等机制提供更高的安全性和性能。

FTP协议使用两个不同的端口号:

  • 控制连接端口(Command Port):默认使用端口号21。该端口用于建立控制连接,用于传输FTP命令和回应。
  • 数据连接端口(Data Port):默认使用端口号20。该端口用于建立数据连接,用于传输实际的文件数据。

四.万维网WWW

万维网(World Wide Web)是一种基于超文本的联机信息系统,英文简称是Web,是互联网的一部分。它由一系列的网页(Web Page)组成,这些网页通过超链接(Hyperlink)相互连接。通过万维网,人们可以通过浏览器访问和浏览网页上的内容,如文本、图像、音频、视频等。

万维网的概念由英国科学家蒂姆·伯纳斯-李(Tim Berners-Lee)于1989年提出,并在1990年创造了第一个网页浏览器和服务器。万维网的设计理念是将信息以分布式的方式组织起来,使之能够被广泛地共享和访问。

通过万维网,人们可以搜索和获取各种信息,进行在线购物、在线娱乐、社交网络等活动。万维网以客户服务器方式工作,客户机向服务器发出请求,服务器程序向客户端程序送回客户想要的万维网文档。在这个过程中需要解决以下几个问题:

  1. 怎样标志分布在整个互联网上的万维网文档?
  2. 用什么样的协议来实现万维网上的各种链接?
  3. 怎样使不同作者创作的不同风格的万维网文档,都能在互联网上的各种主机上显示出来,同时使用户清楚地知道在什么地方存在着链接?

为了解决第一个问题,万维网使用统一资源定位符URL (Uniform Resource Locator)来标志万维网上的各种文档,并使每一个文档在整个互联网的范围内具有唯一的标识符URL。

为了解决上述的第二个问题,就要使万维网客户程序与万维网服务器程序之间的交互遵守严格的协议,这就是超文本传送协议HTTP(Hyper Text Transfer Protocol)。HTTP是一个应用层协议,它使用TCP连接进行可靠的传送。

为了解决上述的第三个问题,万维网使用超文本标记语言HTML(Hyper Text Markup Language),使得万维网页面的设计者可以很方便地用钱接从本页面的某处链接到互联网上的任何一个万维网页面,并且能够在自己的主机屏幕上格文些页面显示出来。最后,用户可使用搜索工具在万维网上方便地查找所需的信息。

▐ 统一资源定位符URL

统一资源定位符(Uniform Resource Locator, URL)是用于标识和定位互联网上的资源的字符串。URL是一种子集,属于更广泛的统一资源标识符(Uniform Resource Identifier, URI)家族。URL提供了资源的位置以及访问该资源的方法。

URL的结构

URL的基本结构由多个部分组成,每个部分都有特定的功能。这些部分通常以某种格式组合在一起,以便唯一地标识和访问资源。URL的典型结构如下:

scheme://userinfo@host:port/path?query#fragment

1. 方案(Scheme)

  • 表示资源访问的协议类型,如httphttpsftpmailto等。
  • 例子:httphttps

2. 用户信息(Userinfo)

  • 可选部分,包含用户名和密码,用于访问受保护的资源。
  • 格式:username:password@
  • 例子:user:pass@

3. 主机(Host)

  • 表示资源所在的服务器,可以是域名或IP地址。
  • 例子:www.example.com192.0.2.1

4. 端口(Port)

  • 可选部分,指定访问资源的端口号,默认情况下HTTP使用80端口,HTTPS使用443端口。
  • 格式::port
  • 例子::8080

5. 路径(Path)

  • 表示资源在服务器上的具体位置,通常以/分隔的层级结构表示。
  • 例子:/path/to/resource

6. 查询(Query)

  • 可选部分,包含一些参数,用于向资源传递额外的信息。通常以键值对的形式表示,多组键值对用&分隔。
  • 格式:?key1=value1&key2=value2
  • 例子:?search=example&lang=en

7. 片段(Fragment)

  • 可选部分,指向资源内的某个部分或位置,通常用于HTML文档中的锚点。
  • 格式:#fragment
  • 例子:#section1

URL示例

以下是一些URL的示例,展示了不同部分的组合和用途:

简单的HTTP URL

http://www.example.com/index.html
  • Scheme: http
  • Host: www.example.com
  • Path: /index.html

带有端口的URL

http://www.example.com:8080/index.html
  • Scheme: http
  • Host: www.example.com
  • Port: 8080
  • Path: /index.html

带有查询参数的URL

http://www.example.com/search?q=openai&lang=en
  • Scheme: http
  • Host: www.example.com
  • Path: /search
  • Query: q=openai&lang=en

URL在Web中的作用

  • 资源定位:URL是访问网页、图片、视频等各种资源的基础。
  • 导航和链接:URL用于超链接,帮助用户在不同网页和网站之间导航。
  • 数据传递:通过查询参数传递数据,实现搜索、过滤等功能。

▐ 超文本传输协议HTTP

超文本传输协议(HyperText Transfer Protocol, HTTP)是用于在万维网上分布式、协作和超媒体信息系统中传输数据的应用层协议。HTTP是Web的基础,通过它,客户端和服务器能够互相通信并交换信息。

HTTP是一种无状态的协议,意味着每个请求和响应都是独立的,不保留任何状态信息。每次客户端发送请求时,都需要包含所有必要的信息,服务器在响应后不会保留任何请求的信息。

HTTP通信由请求(Request)和响应(Response)组成。客户端发送HTTP请求,服务器处理请求后返回HTTP响应。

HTTP请求

一个HTTP请求由以下部分组成:

  • 请求行(Request Line):包含请求方法、请求目标(URI)和HTTP版本。
  • 请求头(Request Headers):包含描述请求的元数据(例如,主机、用户代理、接受的内容类型等)。
  • 空行:用于分隔请求头和请求体。
  • 请求体(Request Body):可选,包含要发送到服务器的数据(如表单数据)。

示例请求:

GET /index.html HTTP/1.1
Host: www.example.com
User-Agent: Mozilla/5.0
Accept: text/html

HTTP响应

一个HTTP响应由以下部分组成:

  • 状态行(Status Line):包含HTTP版本、状态码和状态描述。
  • 响应头(Response Headers):包含描述响应的元数据(例如,内容类型、内容长度等)。
  • 空行:用于分隔响应头和响应体。
  • 响应体(Response Body):可选,包含服务器返回的数据(如网页内容)。

示例响应:

HTTP/1.1 200 OK
Content-Type: text/html
Content-Length: 123<html>
<body>
<h1>Hello, World!</h1>
</body>
</html>

常见的HTTP方法

  • GET:请求指定资源。只用于请求数据,不应修改服务器上的任何资源。
  • POST:向指定资源提交数据,通常用于表单提交。
  • PUT:向指定资源上传数据,替换目标资源的所有当前表示。
  • DELETE:请求删除指定资源。
  • HEAD:类似GET,但只请求资源的头部信息,不返回响应体。
  • OPTIONS:返回服务器支持的HTTP方法。
  • PATCH:对指定资源进行部分修改。

HTTP状态码

HTTP状态码由三位数字组成,表示服务器对请求的处理结果。常见状态码如下:

  • 1xx(信息性):请求已接收,继续处理。
    • 100 Continue
  • 2xx(成功):请求已成功处理。
    • 200 OK
    • 201 Created
  • 3xx(重定向):需要进一步操作以完成请求。
    • 301 Moved Permanently
    • 302 Found
  • 4xx(客户端错误):请求包含错误或无法处理。
    • 400 Bad Request
    • 401 Unauthorized
    • 403 Forbidden
    • 404 Not Found
  • 5xx(服务器错误):服务器在处理请求时发生错误。
    • 500 Internal Server Error
    • 502 Bad Gateway
    • 503 Service Unavailable

HTTP的版本

  • HTTP/1.0:最初版本,支持基本的请求和响应功能。
  • HTTP/1.1:改进了持久连接、管道化传输、分块传输编码等。
  • HTTP/2:引入二进制分帧、多路复用、头部压缩等特性,提高了传输性能。
  • HTTP/3:基于QUIC协议,进一步提升传输效率和安全性。

HTTP广泛应用于Web浏览、API通信、文件传输等领域。它是浏览器与Web服务器、客户端与RESTful服务之间通信的主要协议。

▐ 超文本标记语言HTML

超文本标记语言(HTML)是一种用于创建网页的标记语言。HTML使用标签来描述网页中的各种元素和结构。这些标签被放置在尖括号(<>)中,并以开始标签和结束标签的形式出现,开始标签以"<"开头,结束标签以"/>"结尾。

HTML标记语言可以定义文本的结构、布局、链接、图像、音频、视频等内容。它允许开发人员在网页中插入文本、图像、链接等元素,并通过使用相关的属性来控制这些元素的外观和行为。

HTML是开放标准,由万维网联盟(W3C)负责维护和发展。它是网页开发的基础,在互联网上广泛应用。通过使用HTML,开发人员可以创建具有各种功能和交互性的网页,从简单的静态网页到复杂的动态网站。

以下就是一个简单的静态万维网文档

<!DOCTYPE html>
<html>
<head><title>页面标题</title>
</head>
<body><h1>这是一个标题</h1><p>这是一个段落。</p>
</body>
</html>

动态万维网文档

动态万维网文档(Dynamic Web Document)是一种根据用户的请求和动作而生成的网页内容。与静态网页不同,动态网页的内容不是预先编写好的静态HTML文件,而是根据服务器端的程序和数据库等进行实时生成的。

动态网页通常由两部分组成:前端和后端。前端部分负责处理用户的输入和交互,并将数据发送到后端。后端部分则根据接收到的数据进行处理,从数据库中检索所需的信息,对数据进行操作,最终生成动态内容,并将其发送回前端以供用户浏览。

动态网页的实现通常使用服务器端的脚本语言(如PHP、Python、Ruby等)和数据库(如MySQL、Oracle等)。通过这些技术,开发人员可以根据用户的需求和数据库中的数据生成具有个性化和实时性的网页内容。

动态网页的优点是可以实现更复杂的交互功能和个性化定制,适用于需要实时更新内容的场景,如社交媒体、电子商务网站等。然而,相对于静态网页而言,动态网页在加载速度上可能会稍慢,并且需要更多的服务器资源来处理和生成内容。

活动万维网文档

活动万维网文档(Active Web Document)是指具有动态交互性和实时更新能力的网页文档。与静态网页和动态网页相比,活动万维网文档更加具有实时性和个性化定制的特点。

活动万维网文档通过使用前端技术(如JavaScript)和后端技术(如服务器端脚本)实现动态交互功能。它可以根据用户的行为和输入,动态地改变网页的内容、样式和行为。常见的例子包括在线游戏、即时通讯、实时更新的股票报价等。

与动态万维网文档相比,活动万维网文档更加注重实时性和交互性。它可以通过使用前端技术实现实时的动画效果、实时响应用户的操作。而动态网页更加强调后端技术,通过服务器端的脚本和数据库等来生成和提供动态的网页内容。

总的来说,动态万维网文档是指通过服务器端脚本和数据库等实时生成的网页内容,而活动万维网文档是指具有动态交互性和实时更新能力的网页文档。活动万维网文档可以通过前端技术实现实时的动画效果和实时响应用户的操作,更加注重实时性和交互性。


五.邮件收发协议

常见的邮件收发协议有以下几种:

  • POP3(Post Office Protocol Version 3):是一种用于从邮件服务器上收取电子邮件的协议。它允许用户将电子邮件下载到本地设备上,并在本地设备上进行管理。
  • IMAP(Internet Message Access Protocol):与POP3类似,也是用于从邮件服务器上收取电子邮件的协议。不同的是,IMAP允许用户在本地设备上查看邮件的同时,也可以在服务器上对邮件进行管理,如创建文件夹、删除邮件等操作。
  • SMTP(Simple Mail Transfer Protocol):是一种用于发送电子邮件的协议。SMTP将邮件从发送者的邮件客户端发送到接收者的邮件服务器,并在服务器之间进行中转,直到邮件被送达到接收者的邮件服务器。
  • POP3S和IMAPS:分别是POP3和IMAP的安全版本,使用SSL/TLS加密通信,确保邮件在传输过程中的安全性。

这些协议在电子邮件的收发过程中扮演着重要的角色,保证了邮件的可靠传输和安全性。这里单独对SMTP简单解释一下。

SMTP(Simple Mail Transfer Protocol)是一种用于发送电子邮件的协议。它定义了邮件从发送者的邮件客户端发送到接收者的邮件服务器的传输规则。SMTP协议使用TCP作为传输层协议,它使用25号端口来进行通信。

在SMTP协议中,发送邮件的过程可以简单地分为以下几个步骤:

  1. 建立连接:发送者的邮件客户端通过向接收者的邮件服务器发送连接请求来建立连接。连接请求包括发送者的身份验证和连接建立的要求。
  2. 握手:接收者的邮件服务器接收到连接请求后,会发送一个握手响应,通知发送者连接已建立。
  3. 发送邮件:发送者通过SMTP命令向接收者的邮件服务器发送邮件内容。常用的SMTP命令包括HELO(发送者的身份验证)、MAIL FROM(指定发送者的电子邮件地址)、RCPT TO(指定接收者的电子邮件地址)、DATA(开始发送邮件内容)、QUIT(关闭连接)等。
  4. 传输邮件内容:发送者将邮件内容以文本格式发送给接收者的邮件服务器。邮件内容包括邮件主题、发件人、收件人、邮件正文、附件等。
  5. 邮件路由:接收者的邮件服务器根据收件人的地址,将邮件转发给相应的收件人。
  6. 结束连接:邮件发送完毕后,发送者的邮件客户端发送QUIT命令通知接收者的邮件服务器关闭连接。

SMTP协议的设计目标是快速、可靠地传递电子邮件,并提供一定的错误处理和反馈机制。它是电子邮件系统中不可或缺的一部分,广泛应用于各种邮件客户端和邮件服务器之间的通信。




 本次的分享就到此为止了,希望我的分享能给您带来帮助,创作不易也欢迎大家三连支持,你们的点赞就是博主更新最大的动力!如有不同意见,欢迎评论区积极讨论交流,让我们一起学习进步!有相关问题也可以私信博主,评论区和私信都会认真查看的,我们下次再见

这篇关于计网期末复习指南(六):应用层(DNS、FTP、URL、HTTP、SMTP、POP3)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1030838

相关文章

Linux 网络编程 --- 应用层

一、自定义协议和序列化反序列化 代码: 序列化反序列化实现网络版本计算器 二、HTTP协议 1、谈两个简单的预备知识 https://www.baidu.com/ --- 域名 --- 域名解析 --- IP地址 http的端口号为80端口,https的端口号为443 url为统一资源定位符。CSDNhttps://mp.csdn.net/mp_blog/creation/editor

Retrieval-based-Voice-Conversion-WebUI模型构建指南

一、模型介绍 Retrieval-based-Voice-Conversion-WebUI(简称 RVC)模型是一个基于 VITS(Variational Inference with adversarial learning for end-to-end Text-to-Speech)的简单易用的语音转换框架。 具有以下特点 简单易用:RVC 模型通过简单易用的网页界面,使得用户无需深入了

Java 创建图形用户界面(GUI)入门指南(Swing库 JFrame 类)概述

概述 基本概念 Java Swing 的架构 Java Swing 是一个为 Java 设计的 GUI 工具包,是 JAVA 基础类的一部分,基于 Java AWT 构建,提供了一系列轻量级、可定制的图形用户界面(GUI)组件。 与 AWT 相比,Swing 提供了许多比 AWT 更好的屏幕显示元素,更加灵活和可定制,具有更好的跨平台性能。 组件和容器 Java Swing 提供了许多

BUUCTF靶场[web][极客大挑战 2019]Http、[HCTF 2018]admin

目录   [web][极客大挑战 2019]Http 考点:Referer协议、UA协议、X-Forwarded-For协议 [web][HCTF 2018]admin 考点:弱密码字典爆破 四种方法:   [web][极客大挑战 2019]Http 考点:Referer协议、UA协议、X-Forwarded-For协议 访问环境 老规矩,我们先查看源代码

基于UE5和ROS2的激光雷达+深度RGBD相机小车的仿真指南(五):Blender锥桶建模

前言 本系列教程旨在使用UE5配置一个具备激光雷达+深度摄像机的仿真小车,并使用通过跨平台的方式进行ROS2和UE5仿真的通讯,达到小车自主导航的目的。本教程默认有ROS2导航及其gazebo仿真相关方面基础,Nav2相关的学习教程可以参考本人的其他博客Nav2代价地图实现和原理–Nav2源码解读之CostMap2D(上)-CSDN博客往期教程: 第一期:基于UE5和ROS2的激光雷达+深度RG

【Linux】应用层http协议

一、HTTP协议 1.1 简要介绍一下HTTP        我们在网络的应用层中可以自己定义协议,但是,已经有大佬定义了一些现成的,非常好用的应用层协议,供我们直接使用,HTTP(超文本传输协议)就是其中之一。        在互联网世界中,HTTP(超文本传输协议)是一个至关重要的协议,他定义了客户端(如浏览器)与服务器之间如何进行通信,以交换或者传输超文本(比如HTML文档)。

如何确定 Go 语言中 HTTP 连接池的最佳参数?

确定 Go 语言中 HTTP 连接池的最佳参数可以通过以下几种方式: 一、分析应用场景和需求 并发请求量: 确定应用程序在特定时间段内可能同时发起的 HTTP 请求数量。如果并发请求量很高,需要设置较大的连接池参数以满足需求。例如,对于一个高并发的 Web 服务,可能同时有数百个请求在处理,此时需要较大的连接池大小。可以通过压力测试工具模拟高并发场景,观察系统在不同并发请求下的性能表现,从而

Anaconda 中遇到CondaHTTPError: HTTP 404 NOT FOUND for url的问题及解决办法

最近在跑一个开源项目遇到了以下问题,查了很多资料都大(抄)同(来)小(抄)异(去)的,解决不了根本问题,费了很大的劲终于得以解决,记录如下: 1、问题及过程: (myenv) D:\Workspace\python\XXXXX>conda install python=3.6.13 Solving environment: done.....Proceed ([y]/n)? yDownloa

如何掌握面向对象编程的四大特性、Lambda 表达式及 I/O 流:全面指南

这里写目录标题 OOP语言的四大特性lambda输入/输出流(I/O流) OOP语言的四大特性 面向对象编程(OOP)是一种编程范式,它通过使用“对象”来组织代码。OOP 的四大特性是封装、继承、多态和抽象。这些特性帮助程序员更好地管理复杂的代码,使程序更易于理解和维护。 类-》实体的抽象类型 实体(属性,行为) -》 ADT(abstract data type) 属性-》成

【408数据结构】散列 (哈希)知识点集合复习考点题目

苏泽  “弃工从研”的路上很孤独,于是我记下了些许笔记相伴,希望能够帮助到大家    知识点 1. 散列查找 散列查找是一种高效的查找方法,它通过散列函数将关键字映射到数组的一个位置,从而实现快速查找。这种方法的时间复杂度平均为(