计算机网络(六)应用层

应用层

基本概念

服务器端(Server)

服务器是网络中提供服务的计算机或软件程序。服务器通常具有更高的性能、更大的存储空间和更高的带宽,用于提供各种服务,如文件存储、数据库管理、Web托管、电子邮件传递等。服务器会在网络中等待客户端的连接请求,并根据请求提供相应的服务或资源

客户端(Client)

客户端是网络中使用服务的计算机或软件程序。客户端通常是用户使用的终端设备,如个人电脑、智能手机、平板电脑等。客户端通过向服务器发送请求来获取所需的服务或资源,并将服务器响应的结果显示给用户

在客户/服务器模型中,客户端和服务器之间的通信遵循一种请求-响应的模式。客户端向服务器发送请求,服务器处理请求并返回响应给客户端。这种模型可以有效地组织网络中的通信和资源共享,提高系统的可扩展性、可靠性和安全性

P2P模型

P2P(点对点)模型是一种计算机网络架构,其中所有节点(或者称为对等节点)在功能上是对等的,它们可以充当客户端,也可以充当服务器,彼此之间可以直接通信,而无需通过中心服务器。在P2P模型中,节点之间可以共享资源、交换信息、进行协作等

特点

  1. 对等性:P2P网络中的节点彼此对等,没有明确的客户端和服务器的区别。每个节点既可以充当客户端,向其他节点请求服务,也可以充当服务器,为其他节点提供服务

  2. 去中心化:P2P网络通常是去中心化的,即没有单一的中心节点或服务器来管理整个网络。相反,每个节点都能够自主地加入或退出网络,并与其他节点直接通信

  3. 资源共享:P2P网络中的节点可以共享各种类型的资源,包括计算资源、存储资源、带宽资源等。这些资源可以由任意节点提供,并且其他节点可以通过P2P网络访问和利用这些资源

  4. 分布式搜索:P2P网络中的节点通常需要进行分布式搜索来查找所需的资源或服务。这种搜索通常基于一种分布式哈希表(DHT)或类似的分布式索引机制来实现,允许节点在网络中查找和定位资源,而无需依赖中心化的搜索服务器

  5. 自组织性:P2P网络具有一定的自组织能力,即网络中的节点可以根据需要自动地加入或退出网络,并动态地建立、维护和更新节点之间的连接关系

DNS(Domain Name System,域名系统)

DNS(Domain Name System,域名系统)是互联网中用于将域名(例如:example.com)转换为与之对应的IP地址的分布式命名系统。简单地说,DNS充当了互联网上的“电话簿”,将易于记忆的域名映射到计算机能够理解的IP地址上

层次域名空间

层次域名空间是指域名系统(DNS)中的域名按照层次结构进行组织和管理的空间。在层次域名空间中,域名按照从右向左的顺序,通过点号(.)分隔,形成一个层次结构,每一级域名都代表了一个特定的网络或组织

包括顶级域名(Top-Level Domain,TLD)、二级域名(Second-Level Domain)、子域名(Subdomain)

  1. 顶级域名(TLD):顶级域名是域名中最高一级的域名,通常表示国家、地区、组织类型等。常见的顶级域名包括国家代码顶级域名(ccTLD,如.cn、.uk、.jp)和通用顶级域名(gTLD,如.com、.net、.org)等
  2. 二级域名(Second-Level Domain):二级域名是位于顶级域名下面的一级域名,通常表示组织、企业、机构等。例如,在域名example.com中,"example"就是二级域名
  3. 子域名(Subdomain):子域名是位于二级域名或更高级域名下面的域名。通过在已有域名的前面添加一个子域名,可以实现对域名空间的更细粒度的划分。例如,在域名www.example.com中,"www"就是一个子域名

域名解析过程

域名解析过程是将用户输入的域名转换为对应的IP地址的过程。这个过程涉及到多个域名服务器的协作,通常包括本地域名服务器、递归域名服务器和权威域名服务器

  1. 用户输入域名:用户在浏览器地址栏或其他应用程序中输入一个域名(例如:www.example.com)
  2. 本地域名服务器查询:操作系统会向本地域名服务器发送域名查询请求。本地域名服务器通常由用户的互联网服务提供商(ISP)或者企业内部维护,它会首先查看本地缓存,如果在缓存中找到了域名对应的IP地址,则直接返回结果给用户。如果本地缓存中没有找到对应的解析结果,则本地域名服务器会继续向递归域名服务器发送查询请求
  3. 递归查询:如果本地域名服务器不知道域名对应的IP地址,它会向递归域名服务器发送查询请求。递归域名服务器是负责向其他域名服务器发送递归查询请求的域名服务器,它会根据域名的层次结构,逐级向上查询,直到找到正确的解析结果或者到达根域名服务器
  4. 权威查询:递归域名服务器在查询过程中,会向根域名服务器、顶级域名服务器和权威域名服务器发送查询请求,直到找到正确的解析结果。权威域名服务器是负责存储和管理特定域名的解析信息的域名服务器,当它收到查询请求时,会直接返回对应的解析结果给递归域名服务器
  5. 返回解析结果:递归域名服务器将获取到的解析结果返回给本地域名服务器,然后本地域名服务器将结果返回给用户的操作系统。用户的操作系统将解析结果保存在本地缓存中,以便将来的查询请求可以直接从缓存中获取结果
  6. 建立连接:用户的操作系统根据获取到的IP地址,建立与目标服务器的连接,并开始进行通信。例如,用户的浏览器会向目标服务器发送HTTP请求,获取网页内容

FTP协议

FTP(File Transfer Protocol,文件传输协议)是用于在计算机网络上进行文件传输的标准协议。它允许用户在客户端和服务器之间传输文件,并支持对文件的上传、下载、删除、重命名等操作。FTP协议基于客户端-服务器架构,通常使用TCP协议进行通信

工作原理

  1. 客户端:FTP客户端是用户用来访问和管理远程文件的软件程序。用户可以通过FTP客户端连接到远程FTP服务器,并执行各种文件操作。常见的FTP客户端包括FileZilla、WinSCP、CuteFTP等
  2. 服务器:FTP服务器是用来存储文件并提供文件访问服务的计算机或软件程序。FTP客户端通过与FTP服务器建立连接,可以上传、下载和管理文件。常见的FTP服务器软件包括vsftpd、ProFTPD、FileZilla Server等
  3. 控制连接:FTP客户端和服务器之间建立的控制连接负责传输FTP命令和响应,用于控制文件传输的过程。控制连接通常使用TCP的21端口
  4. 数据连接:FTP客户端和服务器之间建立的数据连接负责实际传输文件的数据。FTP协议使用两种不同的数据传输模式:主动模式(Active Mode)和被动模式(Passive Mode),用于解决客户端和服务器之间的NAT和防火墙等网络环境下的连接问题

电子邮件

在这里插入图片描述

  1. 邮件服务器:邮件服务器是负责存储和转发电子邮件的计算机系统。它分为两类:收件服务器和发件服务器。收件服务器接收和存储接收到的电子邮件,等待用户通过电子邮件客户端来检索;发件服务器接收用户通过电子邮件客户端发送的邮件,并将邮件转发到目标收件服务器

  2. 电子邮件客户端:电子邮件客户端是用户用来发送、接收和管理电子邮件的软件程序。它可以是桌面软件(如Microsoft Outlook、Mozilla Thunderbird)、Web应用(如Gmail、Outlook.com)或移动应用(如iOS的Mail、Android的Gmail应用)等。用户通过电子邮件客户端来编写邮件、查看收件箱、发送邮件、管理联系人等

  3. 电子邮件协议:电子邮件协议是用于在邮件服务器和电子邮件客户端之间进行通信和数据传输的规范。常见的电子邮件协议包括SMTP(Simple Mail Transfer Protocol,简单邮件传输协议)、POP3(Post Office Protocol version 3,邮局协议第3版)、IMAP(Internet Message Access Protocol,互联网邮件访问协议)等。SMTP协议用于发送邮件,POP3和IMAP协议用于接收邮件

工作流程:

  1. 发件人使用电子邮件客户端编写邮件,并填写收件人的电子邮件地址

  2. 发件人的电子邮件客户端将邮件发送到发件服务器

  3. 发件服务器使用SMTP协议将邮件转发到收件服务器

  4. 收件服务器将邮件存储在收件人的邮箱中

  5. 收件人使用电子邮件客户端访问收件服务器,通过POP3或IMAP协议下载邮件

  6. 收件人使用电子邮件客户端查看、回复、转发或删除邮件

WWW

WWW(World Wide Web,万维网)是一种基于互联网的信息交流系统,它是由许多相互链接的超文本文档组成的全球信息网络。WWW是互联网上的一部分,但并不等同于互联网,它是互联网上最广泛使用的服务之一

组成结构

  1. 超文本文档(HTML文档):WWW的核心组成部分是超文本文档,通常使用HTML(Hypertext Markup Language,超文本标记语言)编写。超文本文档由文本、图像、链接、多媒体等元素组成,可以通过超链接相互连接起来。用户通过浏览器软件(如Chrome、Firefox、Safari)来访问和浏览超文本文档
  2. URL(统一资源定位符):URL是用于标识和定位互联网上资源的地址。它由协议类型、主机名、路径等部分组成,用户可以通过URL来访问超文本文档或其他网络资源。例如,http://www.example.com/index.html 是一个URL,表示访问www.example.com网站上的index.html页面
  3. HTTP协议:HTTP(Hypertext Transfer Protocol,超文本传输协议)是用于在WWW中传输超文本文档的协议。它定义了客户端和服务器之间的通信规范,客户端通过HTTP请求发送请求给服务器,服务器通过HTTP响应返回相应的数据给客户端
HTTP

HTTP(Hypertext Transfer Protocol,超文本传输协议)是用于在客户端和服务器之间传输超文本文档和其他数据的协议

操作过程

  1. 建立连接

    客户端(例如浏览器)向服务器发送连接请求

    服务器接受连接请求,建立与客户端的连接

  2. 发送请求

    客户端发送HTTP请求给服务器,请求的内容包括请求方法、URL、HTTP版本号、请求头部和请求体

    请求方法(HTTP Method)指示了客户端要执行的动作,常见的方法包括GET、POST、PUT、DELETE等

    URL(Uniform Resource Locator,统一资源定位符)指示了客户端要访问的资源的地址

    请求头部包含了关于请求的各种信息,如请求的主机、用户代理、可接受的响应内容类型等

    请求体包含了要发送给服务器的数据,通常在使用POST方法时才会包含请求体

  3. 处理请求

    服务器接收到请求后,根据请求中的URL和其他信息,找到对应的资源并进行相应的处理

    服务器可能需要执行一系列操作来处理请求,如读取文件、查询数据库、处理逻辑等

  4. 发送响应

    服务器根据请求的处理结果,生成HTTP响应并发送给客户端

    响应包括状态行、响应头部和响应体

    状态行包含了HTTP版本号、状态码和状态消息,状态码表示了请求处理的结果,常见的状态码包括200(成功)、404(未找到)、500(服务器内部错误)等

    响应头部包含了关于响应的各种信息,如响应的内容类型、长度、编码方式等

    响应体包含了服务器返回给客户端的实际数据,如HTML页面、图片、JSON数据等

  5. 关闭连接

    客户端接收到完整的响应后,根据需要可能会继续发送其他请求,或者关闭与服务器的连接

    服务器在完成响应后,也会关闭与客户端的连接,释放资源

报文结构

HTTP报文是在客户端和服务器之间传输的数据包,分为请求报文和响应报文两种类型。每种类型的报文都由起始行(start line)、头部字段(header fields)、空行(CRLF,回车换行符)、消息体(message body)组成

在这里插入图片描述

在这里插入图片描述

请求报文

HTTP请求报文结构包括起始行、头部字段、空行和消息体

  1. 起始行(Start Line):

    包含请求方法、请求目标(URL)、HTTP协议版本。
    格式如下:

  2. 头部字段(Header Fields):

    包含了一系列键值对,用于描述请求的各种属性和要求

    每个键值对以冒号分隔,格式如下:Header-Name: Header-Value

    可能包含多个头部字段,如Host、Content-Type、User-Agent等

  3. 空行(CRLF):

    用于标识头部字段的结束,即头部字段的最后一行后面是一个空行

    表示头部字段与消息体的分隔

  4. 消息体(Message Body)

    可选的,包含了实际要发送给服务器的数据

    在一些请求中(如GET请求)可能没有消息体;而在一些请求中(如POST请求)则可能包含了请求的数据

    消息体的格式和内容取决于请求的类型和需求

eg:
GET /index.html HTTP/1.1
Host: www.example.com
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.71 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9
Accept-Encoding: gzip, deflate, br
Accept-Language: en-US,en;q=0.9

响应报文

HTTP响应报文结构包括起始行、头部字段、空行和消息体

  1. 起始行(Start Line):

    包含HTTP协议版本、状态码和状态消息

    格式如下:

  2. 头部字段(Header Fields):

    包含了一系列键值对,用于描述响应的各种属性和信息

    每个键值对以冒号分隔,格式如下:Header-Name: Header-Value

    可能包含多个头部字段,如Content-Type、Content-Length、Server等

  3. 空行(CRLF):

    用于标识头部字段的结束,即头部字段的最后一行后面是一个空行

    表示头部字段与消息体的分隔

  4. 消息体(Message Body):

    可选的,包含了服务器返回给客户端的实际数据

    消息体的格式和内容取决于响应的类型和需求

eg:HTTP/1.1 200 OK
Date: Sun, 10 Apr 2022 12:00:00 GMT
Server: Apache/2.4.38 (Ubuntu)
Content-Length: 1234
Content-Type: text/html<!DOCTYPE html>
<html>
<head>
<title>Example Page</title>
</head>
<body><p>This is an example page.</p></body>
</html>

ate: Sun, 10 Apr 2022 12:00:00 GMT
Server: Apache/2.4.38 (Ubuntu)
Content-Length: 1234
Content-Type: text/html

Example Page

This is an example page.

```

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/821464.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

共享桌面,3分钟自己实现一个吧,还能听见麦克风声音哦

前言 关于【SSD系列】&#xff1a; 前端一些有意思的内容&#xff0c;旨在3-10分钟里&#xff0c; 500-1000字&#xff0c;有所获&#xff0c;又不为所累。 共享桌面程序&#xff0c;哇&#xff0c;高大尚耶&#xff01;其实不然&#xff0c;让我带你3分钟实现桌面共享程序&am…

LD3320语音模块开发以及未来拿到其他模块的开发方式

当我们拿到一块模块进行开发的时候&#xff0c;一定要拿到配套的使用手册&#xff0c;不然在短时间内根本下不了手 一、使用source Insight来阅读源码 1.建立文件夹 2. 在source Insight放入该文件 3.添加源码 4.解决Source Insight乱码的问题 5.让各个代码模块之间有关联 二、…

uni-app中页面生命周期与vue生命周期的执行顺序对比

应用生命周期 uni-app 支持如下应用生命周期函数&#xff1a; 函数名说明平台兼容onLaunch当uni-app 初始化完成时触发&#xff08;全局只触发一次&#xff09;&#xff0c;参数为应用启动参数&#xff0c;同 uni.getLaunchOptionsSync 的返回值onShow当 uni-app 启动&#x…

Python零基础从小白打怪升级中~~~~~~~Python面向对象(二)

第九节&#xff1a;Python面向对象——继承和多继承 一、继承 Python面向对象的继承指的是多个类之间的所属关系&#xff0c;即子类默认继承父类的所有属性和函数。 在Python中&#xff0c;所有类默认继承object类&#xff0c;object类是顶级类或基类&#xff1b; 1、单继承…

Linux - 线程

目录 一.Linux线程的概念 1.1什么是线程 1.2 线程的优点 1.3 线程的缺点 1.4 线程异常 1.5 线程用途 二. Linux进程VS线程 2.1 进程和线程 三. Linux线程控制 3.1 POSIX线程库 3.2 创建线程 3.3 进程ID和线程ID 3.4 线程ID及进程地址空间布局 3.5 线程终止 3.6 线…

实战小项目 | ESP32-S3和ESP32-C3通过ESP-Mesh-Lite组网 温湿度传感器案例

传统Wi-Fi网络所有终端设备都需要直接与路由器相连&#xff0c;这使得Wi-Fi的覆盖区域受到路由器位置的限制&#xff0c;可接入终端设备的数量也受到路由器容量的限制。而乐鑫ESP-Mesh-Lite Wi-Fi组网方案&#xff0c;所有终端设备都可以与相邻设备连接&#xff0c;摆脱了对路由…

移动硬盘盒支持PD充电:优势解析与实际应用探讨

随着科技的飞速发展&#xff0c;数据存储和传输的需求日益增长&#xff0c;移动硬盘盒作为便携式存储设备的重要载体&#xff0c;其功能和性能也在不断提升。近年来&#xff0c;越来越多的移动硬盘盒开始支持PD&#xff08;Power Delivery&#xff09;充电技术&#xff0c;这一…

9.Hexo通过partial文件传值和改变CSS属性

partials 基本上是可以在自己的HTML文件或.ejs文件中定义网站中不同组件的方法 如果想要为网站定义一个标头&#xff0c;这个标头将会很好地出现在网站的每个页面上 用partials可以创建一个.ejs文件&#xff0c;可以将该标头的所有代码存储在该文件中&#xff0c;然后当想要在…

记一次奇妙的某个edu渗透测试

前话&#xff1a; 对登录方法的轻视造成一系列的漏洞出现&#xff0c;对接口确实鉴权造成大量的信息泄露。从小程序到web端网址的奇妙的测试就此开始。&#xff08;文章厚码&#xff0c;请见谅&#xff09; 1. 寻找到目标站点的小程序 进入登录发现只需要姓名加学工号就能成功…

BIT-6-C语言文件操作(C语言进阶)

本章重点 为什么使用文件什么是文件文件的打开和关闭文件的顺序读写文件的随机读写文本文件和二进制文件文件读取结束的判定 文件缓冲区 1. 为什么使用文件 我们前面学习结构体时&#xff0c;写了通讯录的程序&#xff0c;当通讯录运行起来的时候&#xff0c;可以给通讯录中增…

程序员应该遵守的 10 个编程原则

程序员应该遵守的编程原则 程序员拥有一个较好的编程原则能使他的编程能力有大幅的提升&#xff0c;可以使其开发出维护性高、缺陷更少的代码。以下内容梳理自StactOverflow的一个问题&#xff1a;编程时你最先考虑的准则是什么&#xff1f; 目录 Toggle KISS&#xff08;Keep …

PaddleOCR训练自己模型(2)----参数配置及训练

一、介绍 paddleocr分为文字定位(Det)和文字识别(Rec)两个部分 二、定位模型训练 &#xff08;1&#xff09;Det预训练模型下载&#xff1a;https://paddleocr.bj.bcebos.com/PP-OCRv4/chinese/ch_PP-OCRv4_det_train.tar &#xff08;2&#xff09;下载完之后&#xff0c;…

基于zookeeper安装Kafka集群

操作系统&#xff1a;centOS 9 Stream&#xff0c;6台&#xff0c;基于vmware虚拟机创建 准备工作 确认系统环境&#xff1a; 确保所有服务器已安装了最新更新。安装Java Development Kit (JDK) 8或更高版本&#xff0c;因为ZooKeeper和Kafka都是基于Java开发的。例如&#x…

【探索人工智能】我与讯飞星火认知大模型的对话

文章目录 讯飞星火认知大模型的地址概要讯飞星火认知大模型的发展历程讯飞星火认知大模型的主页利用讯飞星火大模型解决一些基本的数学问题讯飞星火认知大模型与OpenAI,ChatGPT没有关系&#xff01;让讯飞星火认知大模型编写传奇代码hello world小结 讯飞星火认知大模型的地址 …

文献速递:深度学习胰腺癌诊断--胰腺癌在CT扫描中通过深度学习检测:一项全国性的基于人群的研究

Title 题目 Pancreatic Cancer Detection on CT Scans with Deep Learning: A Nationwide Population-based Study 胰腺癌在CT扫描中通过深度学习检测&#xff1a;一项全国性的基于人群的研究 01 文献速递介绍 胰腺癌&#xff08;PC&#xff09;的五年生存率是所有癌症中…

【蓝桥杯嵌入式】串口通信与RTC时钟

【蓝桥杯嵌入式】串口通信与RTC时钟 串口通信cubemx配置串口通信程序设计 RTC时钟cubemx配置程序设计 串口通信 cubemx配置 打开串口通信&#xff0c;并配置波特率为9600 打开串口中断 重定义串口接收与发送引脚&#xff0c;默认是PC4&#xff0c;PC5&#xff0c;需要改为P…

运输问题的中转或者转运问题

1、这类问题&#xff0c;不好理解&#xff0c;做个笔记&#xff0c;记录一下。 2、可以参考一下&#xff1a; https://blog.csdn.net/YUNCHOUSHUO/article/details/121660675?spm1001.2014.3001.5506 这个csdn写的还是不错的&#xff0c;推荐。 或者&#xff0c;可以参考 …

网络安全学习路线-超详细

零基础小白&#xff0c;到就业&#xff01;入门到入土的网安学习路线&#xff01; 在各大平台搜的网安学习路线都太粗略了。。。。看不下去了&#xff01; 建议的学习顺序&#xff1a; 一、网络安全学习普法&#xff08;心里有个数&#xff0c;要进去坐几年&#xff01;&#x…

OpenAI宣布GPT-4-Turbo全面升级,GPT-4 Turbo 新增视觉理解能力,可同时处理文本和图像信息

OpenAI宣布GPT-4-Turbo全面升级&#xff0c;GPT-4 Turbo with Vision新增视觉理解能力&#xff0c;可同时处理文本和图像信息&#xff0c;极大简化了开发流程。 OpenAI宣布GPT-4 Turbo全面升级&#xff01;根据官方说法&#xff0c;这一波 GPT 的升级包括&#xff1a; 更长的上…

VSCode安装配置使用教程(最新版超详细保姆级含插件)一文就够了

前言 Visual Studio Code 是一个轻量级功能强大的源代码编辑器&#xff0c;支持语法高亮、代码自动补全&#xff08;又称 IntelliSense&#xff09;、代码重构、查看定义功能&#xff0c;并且内置了命令行工具和 Git 版本控制系统。适用于 Windows、macOS 和 Linux。它内置了对…