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

news2024/10/7 19:22:23

文章目录

  • 概述
  • 域名系统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结点(或缓存)处得到内容

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

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

相关文章

JS中常用内置对象

真正原创的东西很少&#xff0c;能抄明白就很不容易了 文章目录 数组常用方法❗push 数据增加到尾部并返回unshift 数据增加到头部并返回pop 删除最后一个数据并返回shift 删除第一个数据并返回sort 数组排序reverse 数组逆序concat 合并多个数组的数据并返回join 数据连接成字…

SpringBoot Thymeleaf企业级真实应用:使用Flying Saucer结合iText5将HTML界面数据转换为PDF输出(四) 表格中断问题

接上一篇 SpringBoot Thymeleaf企业级真实应用&#xff1a;使用Flying Saucer结合iText5将HTML界面数据转换为PDF输出(三) 给pdf加水印、页眉页脚、页眉logo 设置表格的css样式 table {/*分页时表格换行, 可不用, 使用表格行换行即可*//*page-break-before: always;*/border-…

QT简易加法计算器项目实现

完整代码见GitHub&#xff1a;点击进入 在该项目中&#xff0c;使用了三个文件&#xff0c;分别是CalculatorDialog.h, CalculatorDialog.cpp, main.cpp CalculatorDialog.h&#xff1a;在该头文件里定义了一些成员变量和槽函数&#xff0c;用于实现计算器基本功能。Calculator…

Springboot的自动装配解读

目录 1.Springboot的自动装配 1.1 组件装配 1.1.1 组件 1.2 Spring Framework 的模块装配 1.2.1 Import注解 1.2.2 BeanDefinition 1.3 Spring Framework 的条件装配 1.3.1 Profile 1.3.2 Conditional 1.3.3 MetaData元数据接口&#xff08;补充&#xff09; Annot…

4、离线数仓数据同步策略(全量表数据同步、增量表数据同步、首日同步、采集通道脚本)

1、离线数仓同步数据 1.1 用户行为数据同步 1.1.1 数据通道 用户行为数据由Flume从Kafka直接同步到HDFS&#xff0c;由于离线数仓采用Hive的分区表按天统计&#xff0c;所以目标路径要包含一层日期。具体数据流向如下图所示。 1.1.2 日志消费Flume配置概述 按照规划&…

【选择排序】手撕八大排序之直接选择排序和堆排序

目录 一.选择排序 1.直接选择排序 2.堆排序 一.选择排序 1.直接选择排序 选择排序&#xff08;Selection Sort&#xff09;是一种简单直观的排序算法。它的基本思想是每次遍历找到最小&#xff08;或最大&#xff09;的元素&#xff0c;然后将其放置在已排序序列的末尾。在…

实操接口自动化测试项目之项分层设计

本文以笔者当前使用的自动化测试项目为例&#xff0c;浅谈分层设计的思路&#xff0c;不涉及到具体的代码细节和某个框架的实现原理&#xff0c;重点关注在分层前后的使用对比&#xff0c;可能会以一些伪代码为例来说明举例。 接口测试三要素&#xff1a; 参数构造发起请求&a…

JS 1.如何实现继承 2.原型和原型链

1_使用class实现继承 /** 继承 */ class Person { constructor(name) { this.name name;}drink() { console.log(喝水)} }class Student extends Person{ constructor(name, score) { // new Personsuper(name);this.score score;}introduce() { console.log(我是${this.nam…

EasyCVR播放设备录像出现部分视频不能播放的原因排查与解决

EasyCVR视频融合平台基于云边端协同架构&#xff0c;具有强大的数据接入、处理及分发能力。平台支持多协议接入&#xff0c;包括&#xff1a;国标GB28181、RTMP、RTSP/Onvif、海康Ehome、海康SDK、大华SDK、宇视SDK等&#xff0c;对外可分发多格式视频流&#xff0c;包括RTSP、…

栈和队列(二) 队列的实现,用栈实现队列,用队列实现栈,设计循环队列

文章目录 队列的实现用队列实现栈用栈实现队列设计循环队列 队列的实现 这里的队列我们使用链式队列&#xff0c;好处就是可以很方便的取出队头的元素。 使用顺序队列取出队头元素所花费的时间复杂度为O&#xff08;N&#xff09;&#xff0c;把后面的元素向前移动一个下标所花…

CentOS Linux的最佳替代方案(二)_AlmaLinux OS 8.6基础安装教程

文章目录 CentOS Linux的最佳替代方案&#xff08;二&#xff09;_AlmaLinux OS 8.6基础安装教程一 AlmaLinux介绍和发展历史二 AlmaLinux基础安装2.1 下载地址2.2 安装过程 三 AlmaLinux使用3.1 关闭selinux/firewalld3.2 替换默认源3.3 安装一些必要工具 CentOS Linux的最佳替…

瓶盖扫码回收APP系统 废旧物品创造价值收益

资源回收再利用是近些年国家大力倡导的&#xff0c;人们也在积极践行&#xff0c;从垃圾回收、废旧衣物回收、烟盒回收等等.....今天小白要带大家了解的是瓶盖回收APP软件开发的相关事项。瓶盖回收APP是本着资源回收的初衷&#xff0c;可以时间废旧瓶盖的多次利用&#xff0c;减…

使用Xshell服务器跑程序,用pycharm连接服务器远程开发

目标&#xff1a; 1.使用Xshell在服务器上创建自己项目需要的虚拟环境 2.用pycharm实现远程服务器的连接&#xff08;这样就可以在本地debug或者写代码&#xff0c;然后再用xshell在服务器上跑&#xff09; 一、使用Xshell在服务器上创建自己项目需要的虚拟环境 1.打开Xshe…

工具系列之wireshark使用说明

简介 工具下载&#xff1a; https://www.wireshark.org/官方FAQ: https://www.wireshark.org/faq.html 过滤器设置 通常情况下&#xff0c;将.pcap 数据拖拽至 wireshark中即可打开。通过&#xff1a; 导航栏–》分析 --> 显示过滤器 即可找到对应的筛选器&#xff0c;筛…

美格智能发布高性价比5G RedCap CPE解决方案SRT835,加速5G FWA商业落地

6月30日&#xff0c;在MWC 2023上海5G未来峰会上&#xff0c;美格智能重磅发布高性价比轻量化5G RedCap&#xff08;也称作NR-Light&#xff09;CPE解决方案SRT835。该方案搭载骁龙X35调制解调器及射频系统和WCN6856高速Wi-Fi 6解决方案&#xff0c;通过精简系统架构&#xff0…

【技术教程】H.265网页流媒体播放器EasyPlayer无感知播放体验优化

EasyPlayer是我们流媒体组件系列中关注度较高的产品&#xff0c;经过多年的发展和迭代&#xff0c;目前已经有多个应用版本&#xff0c;包括RTSP版、RTMP版、Pro版&#xff0c;以及js版&#xff0c;其中js版本作为网页播放器&#xff0c;受到了用户的广泛使用。 目前我们所有的…

【每天40分钟,我们一起用50天刷完 (剑指Offer)】第十天 10/50

专注 效率 记忆 预习 笔记 复习 做题 欢迎观看我的博客&#xff0c;如有问题交流&#xff0c;欢迎评论区留言&#xff0c;一定尽快回复&#xff01;&#xff08;大家可以去看我的专栏&#xff0c;是所有文章的目录&#xff09;   文章字体风格&#xff1a; 红色文字表示&#…

初探 C++ 标准库

有趣的重载 重载左移操作符&#xff0c;将变量或常量左移到一个对象中&#xff01; C 标准库 C 标准库并不是 C 语言的一部分 C 标准库是由类库和函数库组成的集合 C 标准库中定义的类和对象都位于 std 命名空间中 C 标准库的头文件都不带 .h 后缀 C 标准库涵盖了 C 库的功…

优思学院|什么是六西格玛黑带?

六西格玛黑带&#xff0c;这是一个有趣的称谓。这个称号意味着拥有它的人在六西格玛方法和统计工具应用方面有很高的造诣。在企业中&#xff0c;只有中层以上的人才能获得这个称号。 黑带这个词源自跆拳道&#xff0c;因为跆拳道最高段位的人所戴的腰带是黑色的。后来&#xf…

『赠书活动 | 第十三期』《算力经济:从超级计算到云计算》

&#x1f497;wei_shuo的个人主页 &#x1f4ab;wei_shuo的学习社区 &#x1f310;Hello World &#xff01; 『赠书活动 &#xff5c; 第十三期』 本期书籍&#xff1a;《算力经济&#xff1a;从超级计算到云计算》 赠书规则&#xff1a;评论区&#xff1a;点赞&#xff5c;收…