计算机网络————应用层

文章目录

  • 概述
  • 域名系统DNS
    • 域名结构
    • 域名服务器
    • 解析过程
    • 常见的DNS记录
    • DNS报文格式
      • 基础结构部分
      • 问题部分
      • 资源记录(RR, Resource Record)部分
  • 万维网WWW
    • URL
    • HTTP
      • HTTP发展
      • HTTP报文结构
        • 请求报文
        • 响应报文
      • cookie
    • 内容分发网络CDN

概述

  • 应用层的具体内容就是规定应用进程在通信时所遵循的协议
  • 应用层的许多协议都是基于客户服务器方式,客户是服务请求方,服务器是服务提供方

应用进程通信的方式:
1、客户/服务器(C/S, Client/Server)方式

应用层的许多协议是基于C/S方式,例如,在移动互联网环境下,每个应用APP都是一个客户端

  • 客户是服务请求方(主动请求服务,被服务)
  • 服务器是服务提供方(被动接受服务请求,提供服务

C/S方式可以是面向连接的,也可以是无连接的

  • 面向连接时,C/S通信关系一旦建立,通信就是双向的,双方地位平等,都可发送和接收数据

客户进程的特点:

  • 在进行通信时临时成为客户,它也可在本地进行其它的计算
  • 用户计算机上运行,在打算通信时主动向远地服务器发起通信
  • 客户方必须知道服务器进程所在主机的IP地址才能发出服务请求
  • 需要时可以与多个服务器进行通信

服务器进程的特点:

  • 专门用来提供某种服务的程序,可“同时”处理多个远地或本地客户的请求
  • 必须始终处于运行状态才有可能提供服务
  • 通信开始之前服务器进程不需要知道客户进程所在主机的IP地址,无论客户请求来自哪里,服务器进程被动等待服务请求的到来即可
  • 通常是当系统启动时即自动调用并一直运行着。某些服务器程序也可以由用户或其它进程在通信前启动
  • 被动等待并接受来自多个客户的通信请求

2、浏览器/服务器(B/S,Browser/Server) 方式

B/S方式可以看做C/S方式的特例,即客户软件改为浏览器了

B/S方式采取浏览器请求、服务器响应的工作模式

在B/S方式下,用户界面完全通过Web浏览器实现,一部分事务逻辑在前端实现,但主要的事务逻辑在服务器端实现

在这里插入图片描述
B/S方式通常采取3层架构实现

  • 数据层:由数据库服务器承担数据处理逻辑,其任务是接受Web服务器对数据库服务器提出的数据操作请求,然后由数据库服务器进行数据处理并把处理结果返回给web服务器
  • 处理层:由Web服务器承担业务处理逻辑和页面存储管理,接受客户浏览器的任务请求,执行相应的事务处理
  • 表现层:浏览器仅承担网页信息的浏览功能, 以超文本格式实现信息的输入和浏览

在这里插入图片描述
优点:

  • 界面统一、使用简单
  • 易于维护
  • 可扩展性好
  • 信息共享度高

3、对等(P2P,Peer to Peer)方式

对等方式是指两个进程在通信时并不区分服务的请求方和服务的提供方

  • 只要两个主机都运行P2P软件,它们就可以进行平等、对等的通信
  • 双方都可以下载对方存储在硬盘中的共享文档,如果权限允许的话

音频/视频应用推动了P2P对等通信方式的发展

音频/视频流量已占主要比例

P2P方式从本质上看仍然是使用了C/S方式,但强调的是通信过程中的对等,这时每一个P2P进程既是客户同时也是服务器

域名系统DNS

DNS:是互联网重要的基础设施之一,向所有需要域名解析的应用提供服务,主要负责将可读性好的域名映射成IP地址


域名结构

任何一个连接在因特网上的主机或路由器,都有一个唯一的层次结构的名字,即域名

域还可以划分为子域,还能继续划分,就形成了顶级域,二级域,三级域等等

在这里插入图片描述

每一个域名都是由标号序列组成,各标号之间用点“.”隔开

域名中的标号都由英文字母和数字组成,每一个标号不超过63个字符,也不区分大小写字母,标号中除连字符(“-”)外不能使用其他标点符号。完整域名总共不超过255个字符。

级别最低的域名卸载最左边

每一级域名由其上一级的域名管理机构管理,顶级域名由ICANN进行管理


顶级域名TLD(Top Level Domain):
1、国家顶级域名nTLD
2、通用顶级域名gTLD
3、基础顶级域名,只有一个,即arpa,用于反向域名解析,又称为反向域名


域名服务器

实现域名系统是使用分布在各地的域名服务器

因特网上的DNS域名服务器是按照层次安排的
1、根域名服务器:最高层次的最重要的域名服务器。

所有的根域名服务器都知道所有顶级域名服务器的域名和IP地址。

因特网上共有13个不同IP地址的根域名服务器,a~m,域名分别是a.rootserver.net,…,m.rootserver.net

并不是13个机器,而是13套装置

大多情况下,根域名服务器并不直接把待查询的域名直接转换成IP地址,而是告诉本地域名服务器下一步应当找哪一个顶级域名服务器进行查询

2、顶级域名服务器:负责管理在该顶级域名服务器注册的所有二级域名。收到DNS查询请求时,就给出相应的回答,可能是最后的结果,也可能是下一步应当找的域名服务器的IP地址

3、权限域名服务器:负责一个区的域名服务器。当一个权限域名服务器还不能给出最后的查询回答时,就会告诉发送查询请求的DNS客户,下一步应当找哪一个权限域名服务器。

4、本地域名服务器:当一个主机发出DNS查询请求时,这个查询请求报文就发送给本地域名服务器。每个因特网服务器提供者ISP,或一个大学,甚至一个系,都可以拥有一个本地域名服务器,有时也称为默认域名服务器。

为了提高域名服务器的可靠性,DNS域名服务器都把数据复制到几个域名服务器来保存,其中一个是主域名服务器,其他的是辅助域名服务器。


当主域名服务器出故障时,辅助域名服务器可以保证DNS的查询工作不会中断


主域名服务器定期把数据复制到辅助域名服务器中,更改数据只发生在主域名服务器。


解析过程

1、主机向本地域名服务器的查询一般都是采用递归查询

即本地域名服务器不知道被查询域名的IP时,本地域名服务器就以DNS客户的身份,向其他根域名服务器继续发出查询请求报文,而不是让主机自己进行进一步查询。

递归查询返回的查询结果或者是所要查询的IP地址,或者是报错,表示无法查询到所需的IP地址。

2、本地域名服务器向根域名服务器的查询通常是采用迭代查询。即当根域名服务器收到本地域名服务器发出的迭代查询请求报文时,要么给出所要查询的IP地址,要么告诉本地域名服务器下一步应该向哪个域名服务器进行查询。然后本地域名服务器进行后续的查询。

在这里插入图片描述
在这里插入图片描述

常见的DNS记录

在这里插入图片描述
在这里插入图片描述
下面的摘自https://www.cloudflare.com/zh-cn/learning/dns/dns-records/

A 记录 - 保存域的 IP 地址的记录。

AAAA 记录 - 包含域的 IPv6 地址的记录(与 A 记录相反,A 记录列出的是 IPv4 地址)。

CNAME 记录 - 将一个域或子域转发到另一个域,不提供 IP 地址。

MX 记录 - 将邮件定向到电子邮件服务器。

TXT 记录 - 可让管理员在记录中存储文本注释。这些记录通常用于电子邮件安全。

NS 记录 - 存储 DNS 条目的名称服务器。

SOA 记录 - 存储域的管理信息。

SRV 记录 - 指定用于特定服务的端口。

PTR 记录 - 在反向查询中提供域名。

DNS报文格式

分为三部分:基础结构(报文首部)、问题、资源记录(RR, Resource Record)
报文类型分为查询请求(query)和查询响应(reply)两类,请求和响应的报文结构基本相同

在这里插入图片描述

基础结构部分

  • 事务ID:DNS报文的ID标识。对于请求报文和其对应的响应报文,该字段的值是相同的。通过它可以区分 DNS 应答报文是对哪个请求进行响应的

  • 标志:DNS报文中的标志字段

    • 在这里插入图片描述

    • QR(Query/Response):查询请求/响应的标志信息。查询请求时值为0;响应时值为1

    • Opcode:操作码。其中,0表示标准查询;1表示反向查询;2表示服务器状态请求

    • AA(Authoritative):授权应答,该字段在响应报文中有效。值为1时表示名称服务器是权威服务器;值为0时表示不是权威服务器

    • TC(Truncated):表示是否被截断。值为1时,表示响应已超过512字节并已被截断,只返回前512个字节

    • RD(Recursion Desired):期望递归。该字段能在一个查询中设置,并在响应中返回。该标志告诉域名服务器必须处理这个查询,这种方式被称为一个递归查询。如果该位为0,且被请求的域名服务器没有一个授权回答,它将返回一个能解答该查询的其他域名服务器列表。这种方式被称为迭代查询

    • RA(Recursion Available):可用递归。该字段只出现在响应报文中。当值为1时,表示服务器支持递归查询

    • Z:保留字段,在所有的请求和响应报文中,它的值必须为0

    • Rcode(Reply code):返回码字段,表示响应的差错状态。常用Rcode有

      • 当值为0(NoError)时,表示没有错误
      • 当值为1(FormErr)时,表示报文格式错误,服务器不能理解请求的报文
      • 当值为2(ServFail)时,表示域名服务器失败,因为服务器的原因导致没办法处理这个请求
      • 当值为3(NXDomain)时,表示域名不存在,只有对授权域名解析服务器有意义,指出解析的域名不存在
      • 当值为4(NotImp)时,表示查询类型不支持,即域名服务器不支持查询类型
      • 当值为5(Refused)时,表示拒绝应答,一般是服务器由于设置的策略拒绝给出应答,如服务器不希望对某些请求者给出应答
  • 问题计数:DNS查询请求的数目

  • 回答资源记录数:DNS响应的数目

  • 权威资源记录数:权威资源记录的数目

  • 附加资源记录数:额外的记录数目(权威名字服务器对应IP地址的数目)


问题部分

  • 用来显示DNS查询请求的问题,通常只有一个问题

  • 包含正在进行的查询信息,包含查询名(被查询主机名字)、查询类型、查询类

    • 查询名(name):一般为要查询的域名,有时是IP地址,用于反向查询
    • 查询类型(type):DNS查询请求的资源类型。通常查询类型为A类型,表示由域名获取对应的IP地址
    • 查询类(class):地址类型,通常为互联网地址,值为1(IN)

实例:
在这里插入图片描述

资源记录(RR, Resource Record)部分

资源记录部分是DNS报文格式的最后3个字段,只有在DNS响应报文中才出现,包括回答问题区域字段、权威名字服务器区域字段、附加信息区域字段。这3个字段都采用资源记录的格式

在这里插入图片描述
资源记录格式:

  • 域名:DNS请求的域名
  • 类型:资源记录的类型,与问题部分中的查询类型值相同
  • 类:地址类型,与问题部分中的查询类值相同
  • 生存时间:以秒为单位,表示资源记录的生命周期,一般用于当地址解析程序取出资源记录后决定保存及使用缓存数据的时间。它同时也可以表明该资源记录的稳定程度,稳定的信息会被分配一个很大的值
  • 资源数据长度:资源数据的长度
  • 资源数据:表示按查询段要求返回的相关资源记录的数据

实例:
在这里插入图片描述

在这里插入图片描述在这里插入图片描述

万维网WWW

万维网使用统一资源定位符URL来标志万维网上的各种文档,并使每一个文档在整个原认为的范围内都具有唯一的标识符URL。


用超文本传送协议HTTP来实现万维网上的各种链接
HTTP是一个应用层协议,使用TCP连接进行可靠的传送


使用超文本标记语言HTML使得万维网页面的设计者可以很方便地用链接从本页面的某处链接到因特网上任何一个万维网页面,并且能够在自己的主机屏幕上将这些页面显示出来

URL

格式:

<协议>://<主机>:<端口>/<路径>

HTTP

是面向事务的应用层协议,是万维网上能够可靠地交换文件的重要基础


是无状态的


本身是无连接的

在这里插入图片描述

HTTP发展

在这里插入图片描述在这里插入图片描述

HTTP报文结构

请求报文

开始行、首部行和实体主体

在请求报文中,开始行就是请求行

在这里插入图片描述方法

  • 方法是对所请求的对象进行的操作,实际上也就是一些命令
  • 请求报文的类型是由它所采用的方法决定的

在这里插入图片描述URL

  • “URL”是所请求资源的URL

在这里插入图片描述

响应报文

在这里插入图片描述
状态码
在这里插入图片描述

在这里插入图片描述

cookie

HTTP无状态协议,服务器用cookies保持用户状态

HTTP在响应的首部行里使用一个关键字头set-cookie:选择的cookie号具有唯一性

后继的HTTP请求中使用服务器响应分配的cookie:

Cookie文件保存在用户的主机中,内容是服务器返回的一些附加信息,由用户主机中的浏览器管理
Web服务器建立后端数据库,记录用户信息,cookie作为关键字

Cookies一般包含5个字段

  • 域指明Cookie来自何方,每个域为每个客户分配Cookie有数量限制
  • 路径标明服务器的文件树中哪些部分可以使用该Cookie:
  • 内容采用“名字=值”的形式,是Cookie存放内容的地方,可以达到4K容量,内容只是字符串,不是可执行程序
  • 安全指示浏览器只向使用安全传输连接的服务器返回Cookie

内容分发网络CDN

怎样将内容(如从百万的视频中选定的内容)分发给同时发起访问的数百万用户?

单个、大型的“服务器”?
- 单点故障
- 网络拥塞
- 远程用户的长路径

内容分发网络CDN

Content Delivery Network,or Content Distribution Network

主要优点
- 降低响应时延,避免网络拥塞
- 避免原始服务器过载及防止DDoS攻击
- 分布式架构,具有良好的可扩展性
- 对用户透明,无需用户感知

CDN服务器布局
       ——在多个地理分布的位置存储/服务 多个视频拷贝 

CDN缓存位置和内容——在CDN节点上存储内容拷贝

订阅者(subscriber)请求内容,服务提供者返回清单CDN
- 通过清单,客户端以可支持的最高速率检索到内容
- 如果网络路径拥塞,可能会选择不同的拷贝或网络速率

CDN可以扩展Web 服务器的客户端,这些客户端从就近的CDN结点(或缓存)处得到内容

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

python数据分析之利用多种机器学习方法实现文本分类、情感预测

大家好&#xff0c;我是带我去滑雪&#xff01; 文本分类是一种机器学习和自然语言处理&#xff08;NLP&#xff09;任务&#xff0c;旨在将给定的文本数据分配到预定义的类别或标签中。其目标是为文本数据提供自动分类和标注&#xff0c;使得可以根据其内容或主题进行组织、排…

【AI】PyTorch安装记录及Anaconda环境配置

【AI】PyTorch安装记录及Anaconda环境配置 说下本地环境&#xff0c;RTX4070 12GB GPU&#xff1b;618刚买&#xff0c;不能让他闲着&#xff0c;配置一下炼丹环境&#xff0c;开始为打工人工作。为了方便后续部署模型之间依赖不冲突&#xff0c;所以使用Anaconda管理Python环…

网络环境TFTPNFS搭建

文章目录 1. TFTP服务搭建2. NFS 环境搭建 1. TFTP服务搭建 1、Ubuntu上搭建TFTP服务器&#xff0c;需要安装tftp-hpa和tftpd-hpa&#xff0c;命令如下&#xff1a; sudo apt-get install tftp-hpa tftpd-hpa sudo apt-get install xinetd2、TFTP也需要一个文件夹来存放文件…

Django DRF - 【Token】认证基本使用

一. 前言 Django Rest Framework Token是Django Rest Framework中的一个扩展&#xff0c;用于实现用户认证和授权。它为每个用户生成一个唯一的Token&#xff0c;并将其存储在数据库中。在用户进行API请求时&#xff0c;用户需要在请求的HTTP Header中包含Token&#xff0c;这…

考场作弊行为自动抓拍告警算法 yolov7

考场作弊行为自动抓拍告警系统通过yolov7python网络模型算法&#xff0c;考场作弊行为自动抓拍告警算法实时监测考场内所有考生的行为&#xff0c;对考生的行为进行自动抓拍&#xff0c;并分析判断是否存在作弊行为。YOLOv7 的发展方向与当前主流的实时目标检测器不同&#xff…

关于Apache Dubbo反序列化漏洞(CVE-2023-23638)的预警提示与对应的Zookeeper版本

公司在升级dubbo过程中因zookeeper版本不匹配&#xff0c;导致服务注册和调用出现异常 一、漏洞详情 Apache Dubbo是一款高性能、轻量级的开源Java服务框架。 Apache官方发布安全公告&#xff0c;修复了Apache Dubbo中的一个反序列化漏洞&#xff08;CVE-2023-23638&#xff…

玩转C++调试之Python的GDB库增强

玩转C调试之Python的GDB库增强 0.导语 调试是软件开发过程中不可或缺的一环&#xff0c;而GDB&#xff08;GNU调试器&#xff09;作为一款功能强大的调试工具&#xff0c;在开发者中得到广泛应用。除了传统的命令行调试功能外&#xff0c;GDB还提供了Python的GDB库&#xff0c;…

计算机网络——自顶向下方法(第一章学习记录)

什么是Internet? 可以从两个不同的方面来理解Internet。&#xff08;它的构成。它的服务&#xff09; 1.因特网的主要构成 处在因特网的边缘部分就是在因特网上的所有主机&#xff0c;这些主机又称为端系统&#xff08;end system&#xff09;&#xff0c;端系统通过因特网服…

【C2】文件,时间,多线程,动静态库

文章目录 1.文件&#xff1a;fprint/fgets/fwrite/fread&#xff0c;ftell/rewind/fseek/fflush1.1 文本文件&#xff1a;FILE结构体1.2 二进制文件&#xff1a;没有行概念1.3 文件定位&#xff1a;linux下文本文件模式和二进制文件模式没有区别。fgets和fprintf以行方式读写文…

【测试效率提升技巧】xmind测试用例转换为excel工具使用手册

【测试效率提升技巧】xmind测试用例转换为excel工具使用手册 一、前置环境配置二、执行Xmind2testcase的转换方法1.在控制台输入xmind2testcase [path/xmind文件路径] [-csv] [-xml] [-json]&#xff0c;例&#xff1a;xmind2testcase /root/homin/XX测试点.xmind -csv ##在当前…

MacOS 升级golang版本后无法debug,升级delve版本

golang版本升级到1.20以后导致debug失效了&#xff0c;本文针对MacOS系统&#xff0c;win系统也可作参考。 WARNING: undefined behavior - version of Delve is too old for Go version 1.20.4 (maximum supported version 1.19) 1、升级delve版本 brew install delve 安装…

抖音seo账号矩阵系统源码代开发组件

一.开发矩阵系统的项目背景&#xff1a; 目录 一.开发矩阵系统的项目背景&#xff1a; 二.短视频矩阵系统SaaS模板组件通常包含以下几个方面的内容&#xff1a; 三.抖音SEO账号矩阵系统源码的技术搭建过程可以分为几个步骤&#xff1a; 1.确定系统的需求和目标&#xff0c…

MATLAB App Designer基础教程 Matlab GUI入门(一)

MATLAB GUI入门 第一天 学习传送门&#xff1a; 【MATLAB App Designer基础教程Matlab GUI界面设计&#xff08;全集更新完毕-用户界面设计appdesigner&#xff08;中文&#xff09;Matlab Gui教程】 https://www.bilibili.com/video/BV16f4y147x9/?p2&share_sourcecopy_…

Spring Boot是什么?详解它的优缺点以及四大核心

作者&#xff1a;Insist-- 个人主页&#xff1a;insist--个人主页 作者会持续更新网络知识和python基础知识&#xff0c;期待你的关注 目录 一、Spring Boot 是什么&#xff1f; 二、Spring Boot 的优缺点 1、优点 ①可快速构建独立的 Spring 应用 ②直接嵌入Tomcat、Jett…

基于SpringBoot+mybatis+layui就业管理系统设计和实现

基于SpringBootmybatislayui就业管理系统设计和实现 博主介绍&#xff1a;5年java开发经验&#xff0c;专注Java开发、定制、远程、指导等,csdn特邀作者、专注于Java技术领域 作者主页 超级帅帅吴 Java项目精品实战案例《500套》 欢迎点赞 收藏 ⭐留言 文末获取源码联系方式 文…

Rust语言从入门到入坑——(11)面向对象

文章目录 0、引入1、封装2、继承3、多态4、引用 0、引入 Rust 不是面向对象的编程语言&#xff0c;但是可以实现面向对象方法&#xff1a;封装与继承&#xff0c;以及不完全的多态 1、封装 "类"往往是面向对象的编程语言中常用到的概念。"类"封装的是数据…

由于找不到msvcr110.dll,无法继续执行的三个可行修复方案

MSVCR110.dll是一种动态链接库文件&#xff0c;它是由Microsoft Visual Studio 2012的C运行时库的一部分。该文件主要负责提供C代码在Windows操作系统上运行所需的运行时支持。是Windows操作系统中非常重要的文件&#xff0c;如果文件出现损坏或者丢失&#xff0c;计算机系统就…

Windows下通过FastGithub加速国内GitHub访问

有时候在国内访问GitHub会非常慢&#xff0c;有时候直接打不开&#xff0c;无法访问&#xff0c;最近了解到了FastGithub 可以解决以下几个问题: github加速神器&#xff0c;解决github打不开、用户头像无法加载、releases无法上传下载、git-clone、git-pull、git-push失败等问…

设计模式第18讲——中介者模式(Mediator)

目录 一、什么是中介者模式 二、角色组成 三、优缺点 四、应用场景 4.1 生活场景 4.2 java场景 五、代码实现 5.0 代码结构 5.1 抽象中介者&#xff08;Mediator&#xff09;——LogisticsCenter 5.2 抽象同事类&#xff08;Colleague&#xff09;——Participant 5…

Scala之泛型详解

泛型用于指定类或方法可以接受任意类型参数&#xff0c;参数在实际使用时才被确定&#xff0c;泛型可以有效地增强程序的适用性&#xff0c;使用泛型可以使得类或方法具有更强的通用性。泛型的典型应用场景是集合及集合中的方法参数&#xff0c;可以说同 Java 一样&#xff0c;…