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

文章目录

  • 概述
  • 域名系统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.hqwc.cn/news/4683.html

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

相关文章

使用maven中的profile动态打包不同环境的配置文件

maven中的profile可以在打包时动态选择不同的配置文件进行打入&#xff0c;在项目具有开发、测试、生产环境时可以更方便优雅的进行不同环境的打包运行 示例图&#xff1a; 1-配置profile 第一步需要为每个环境配置一个profile标签&#xff0c;在pom文件中进行配置。我这里只…

Python———运行环境搭建

不管用什么工具开发 Python 程序&#xff0c;都必须安装 Python 的运行环境。 目前最常用的是Windows 、 Linux 平台。这里 我们以Windows10为主讲解。 其实编程和平台关系不大。大家也可以使用Linux、Mac。 Windows 平台下 Python 环境搭建 第一步&#xff1a;进入 python 官…

Java爬虫与Python爬虫有什么区别

Java爬虫和Python爬虫是两种常见的网络爬虫实现方式&#xff0c;它们在语言特性、开发环境和生态系统等方面存在一些区别。 1. 语言特性&#xff1a;Java是一种面向对象的编程语言&#xff0c;而Python是一种脚本语言。Java较为严谨&#xff0c;需要明确定义类、方法和变量&…

Python如何免费获取付费文档的数据, 保存word文档

目录标题 前言开发环境:模块使用:代码实现步骤:代码展示尾语 前言 嗨喽~大家好呀&#xff0c;这里是魔王呐 ❤ ~! 开发环境: python 3.8 pycharm 模块使用: requests --> pip install requests re json time base64 docx --> pip install python-docx 第三方模…

5.4、docker-compose

h ttps://www.runoob.com/docker/docker-compose.html Docker Compose docker-compose.yml 配置文件编写详解_docker-compose.yml 编写_种子选手的博客-CSDN博客 docker-compose.yml 配置文件编写详解 1.dockerfile: 构建镜像&#xff1b; 2.docker run: 启动容器&#xff1b;…

哈工大计算机网络课程网络层协议详解之:互联网控制报文协议(ICMP)

哈工大计算机网络课程网络层协议详解之&#xff1a;互联网控制报文协议&#xff08;ICMP&#xff09; 在互联网中&#xff0c;IP数据报的传输很容易出现差错&#xff0c;当出现差错时&#xff0c;最简单的处理办法就是对该IP数据报进行丢弃。但是&#xff0c;并不是直接丢弃就…

视频与AI,与进程交互(二) pytorch 极简训练自己的数据集并识别

目标学习任务 检测出已经分割出的图像的分类 2 使用pytorch pytorch 非常简单就可以做到训练和加载 2.1 准备数据 如上图所示&#xff0c;用来训练的文件放在了train中&#xff0c;验证的文件放在val中&#xff0c;train.txt 和 val.txt 分别放文件名称和分类类别&#xff…

Redis之数据类型String、List、Hash、Set、Sorted Set(详细)

一、String数据类型 1、SET/GET/APPEND/STRLEN &#xff08;1&#xff09; APPEND &#xff08;2&#xff09; SET/STRLEN 2、 INCR/ DECR/INCRBY/DECRBY &#xff08;1&#xff09;INCR/ DECR &#xff08;2&#xff09; INCRBY/DECRBY INCRBY key increment&#xff1…

selenium通过xpath定位text换行的元素

DOM元素&#xff08;该元素是换行的&#xff0c;不能通过普通xpath定位&#xff09;&#xff1a; 可使用下面xpath定位该div //div[./text()/following-sibling::text()"点" and ./text()"5"] 解释一下就是&#xff1a;定位“子节点的text是[5] 且 子节点…

【Java项目】解决请求路径上明文ID传输导致可能被攻击的方法

文章目录 问题思路解决 问题 这个问题是我公司的一个小业务问题&#xff0c;问题来源于我们发送请求的时候&#xff0c;请求路径上携带的是明文&#xff0c;比如http://xxx/xxx/id12345&#xff0c;那么别有用心的人就可能会推测出id的生成策略&#xff0c;导致遍历id&#xf…

Qt编写视频监控系统79-四种界面导航栏的设计

一、前言 最初视频监控系统按照二级菜单的设计思路&#xff0c;顶部标题栏一级菜单&#xff0c;左侧对应二级菜单&#xff0c;最初采用图片在上面&#xff0c;文字在下面的按钮方式展示&#xff0c;随着功能的增加&#xff0c;二级菜单越来越多&#xff0c;如果都是这个图文上…

数据库表的操作

目录 前言 1.创建表 2.查看表 2.1查看表结构 2.2查看表中插入的数据 3.修改表 4.删除表 总结 前言 前面已经介绍了对数据库的操作&#xff0c;今天我们介绍的是数据库表的操作&#xff0c;数据库表简单可以理解为存储数据的介质。有了这个认识之后&#xff0c;下面我们…