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

2.1 应用层协议原理(P54)

研发网络应用的核心是写出能够运行在不同端系统和通过网络彼此交流的程序。

2.1.1 网络应用程序体系结构

两种主流的应用体系结构:客户-服务器体系结构、对等体系结构。

客户-服务器体系:服务器是一个总是打开的主机,它为称为客户的主机提供服务。服务器具有固定的、周知的IP地址。服务器往往有数据中心构成。最典型的例子是web应用。

P2P体系:应用程序在主机对之间直接通信。P2P体系结构具有自扩展性,每个对等方在享受服务的同时也为系统提供服务能力。

2.1.2 进程通信

2.1.2.1 客户和服务器进程

网络应用程序由成对的进程组成,这些进程通过网络相互发送报文。对每对通信的进程,通常将两个进程之一称为“客户”,另一个进程称为“服务器”。在P2P体系中,下载文件的进程称为“客户”,上传文件的称为“服务器”。

2.1.2.2 进程与计算机网络之间的接口

进程通过称为套接字的软件接口向网络发送报文和从网络接收报文。

套接字是主机内应用层与运输层之间的接口。

2.1.2.3 进程寻址

IP地址是一个能唯一标识主机的32比特的量。

发送进程必须指定运行在主机上的接收进程。

2.1.3 可供应用程序使用的运输服务

应用程序的服务要求大体有4类:可靠数据传输、吞吐量、定时和安全性。

可靠数据传输:将数据正确、完整地从一端传输到另一端。邮件、文件传输等需要可靠数据传输,多媒体应用一般不需要。

吞吐量:在波动的网络中保证吞吐量。

定时:控制发送方到接收方地延迟。

安全性

2.1.4 因特网提供地运输服务

因特网为应用程序提供了两个运输层协议:UDP、TCP。

2.1.4.1 TCP服务

TCP服务包括面向连接服务和可靠数据传输服务。

面向连接服务:在报文开始传输之前,TCP让客户和服务器交换运输层控制信息,称为“握手”。然后两个进程的套接字之间就建立了TCP联系。连接双方可以同时进行收发报文。应用程序结束报文发送后,TCP连接必须拆除。

可靠的数据传输服务:无差错、无冗余。

TCP协议还具有拥塞控制机制,当发送方和接收方之间出现网络拥塞时,TCP会抑制发送进程。

2.1.4.2 UDP服务

UCP服务仅提供最小服务,没有握手过程、不保证报文能送达接收进程、报文可能乱序到达、没有拥塞控制机制。

2.1.4.3 因特网运输协议所不提供的服务

因特网运输协议不保证吞吐量和定时。

2.1.5 应用层协议

应用层协议定义了运行在不同端系统上的应用程序进程如何相互传递报文。
应用层协议定义了:

  1. 交换报文的类型(请求报文or响应报文)
  2. 交换报文类型的语法
  3. 字段的语意
  4. 确定一个进程何时、如何发送报文、如何对报文进行响应的规则。

2.2 Web和HTTP(P64)

2.2.1 HTTP概况

Web的应用协议是超文本传输协议(HTTP)。HTTP由一个客户程序和一个服务器程序组成,HTTP定义了报文的结构和交换报文的方式。

Web页面是由对象组成的。一个对象只是一个文件,如一个HTML文件、一个JPEG图形等,且它们可通过一个URL地址寻址。多数Web界面含有一个HTML基本文件和几个引用对象,HTML基本文件通过对象的URL地址引用页面中的其他对象。每个URL地址由两部分组成:存放对象的服务器主机名、对象的路径名(例如,http://www.someSchool.edu/someDepartment/picture.gif中,www.someSchool为主机名,/someDepartment/picture.gif为路径名)。

HTTP定义了Web客户向Web服务器请求Web页面的方式,以及服务器向客户传送Web页面的方式。
在这里插入图片描述
HTTP使用TCP作为它的支撑运输协议。HTTP客户首先发起一个与服务器的TCP连接,连接建立后,客户和服务器就可以通过自己的套接字发送和接受报文。

HTTP服务器不保存关于客户的任何信息,是一个无状态协议

2.2.2 非持续连接和持续连接

在许多因特网应用程序中,客户和服务器在一个相当长的时间内保持通信,客户在此期间会对服务器发出一系列请求。如果每个请求是经一个单独的TCP连接发送,则该应用程序称为使用非连续连接,如果所有请求经同一个TCP连接发送,称为持续连接

HTTP技能使用非持续连接也能使用持续连接,默认使用持续连接。

2.2.2.1 采用非持续连接的HTTP

在这里插入图片描述
在非持续连接中,每个TCP连接在服务器发送一个对象后关闭,每个TCP连接只传输一个请求报文和一个响应报文。

在这里插入图片描述
定义RRT(Round-Trip Time)为一个短分组从客户到服务器然后再返回客户所花费的时间。如上图所示,浏览器与服务器建立TCP连接涉及一次“三次握手”过程,即客户向服务器发送一个小TCP报文段,服务器用一个小TCP报文段做出确认和响应,最后客户向服务器返回确认。“三次握手”的前两次握手消耗了一个RRT时间,客户结合第三次握手向TCP连接发送一个HTTP请求报文,请求报文到达服务器后,服务器在该TCP连接上发送HTML文件。所以,总的响应时间为两个RRT时间加上服务器传输HTML文件的时间。

2.2.2.2 采用持续连接的HTTP

非持续连接有一些缺点:

  1. 必须为每一个对象建立和维护一个全新的连接,而客户和服务器需要为该连接分配TCP缓冲区和保持TCP变量,这给Web服务器带来了严重的负担。
  2. 每一个对象要经历两倍RTT时延。

在采用持续连接的情况下,服务器在发送响应后保持TCP连接打开,对对象的请求可以连续发出,不必等到响应(流水线)。一段时间未使用后,连接关闭。

2.2.3 HTTP报文格式

2.2.3.1 HTTP请求报文在这里插入图片描述

上图为一个典型的HTTP请求报文。该报文由ASCII文本书写,由5行组成,每行由一个回车和换行符结束(最后一行还有一个额外的回车和换行符)。HTTP请求报文的第一行称为请求行,后面的行称为首部行。请求行有3个字段:方法字段、URL字段和HTTP版本字段。

在这里插入图片描述
在这里插入图片描述
在GET方法中,“实体体”为空,使用POST方法时需要使用实体体。

2.2.3.2 HTTP响应报文

l在这里插入图片描述

2.2.4 用户与服务器的交互:cookie

HTTP使用cookie来允许站点对用户进行跟踪。
在这里插入图片描述
如上图所示,cookie有4个组件:HTTP响应报文中的一个cookie首部行、HTTP请求报文中的一个cookie首部行、客户端系统保留的cookie文件(由浏览器管理)、位于Web站点的一个后端数据库。假设Susan使用PC上的IE浏览器上网,她首次访问Amazon.com,当请求报文到达Amazon Web服务器时,该Web站点产生一个唯一的识别码,并以此索引后端数据库中的一个表项。然后,Amazon Web服务器用一个包含Set cookie:首部的HTTP响应报文对Susan的浏览器进行相应。Susan的浏览器收到响应报文时,它会根据Set cookie:首部的内容在特定cookie文件中添加一行,该行包括服务器主机名和cookie识别码。当Susan再次浏览Amazon网页时,浏览器会查询cookie文件并抽取她对这个网站的识别码,并放到HTTP报文的cookie:首部行中。这样,Amazon就可以跟踪Susan再Amazon站点的活动。

2.2.5 Web缓存

在这里插入图片描述
Web缓存器也叫代理服务器。Web服务器有自己的磁盘存储空间,保存着最近请求的对象的副本。Web缓存器既是客户也是服务器,由ISP购买并安装,可以减少客户请求的响应时间,减少机构的接入链路到因特网的通信量。

2.2.6 条件GET方法

2.3 因特网中的电子邮件(P75)

在这里插入图片描述
上图展示了电子邮件系统的总体情况。电子邮件系统由3部分组成:用户代理、邮件服务器、SMTP协议。

SMTP使用TCP可靠数据传输服务,由发送方的客户端和接收方的服务器端组成,每台邮件服务器上同时运行着客户端和服务器端。

2.3.1 SMTP协议

SMTP用于从发送方的邮件服务器发送报文到被发送方的邮件服务器。
在这里插入图片描述
SMTP一般不使用中间邮件服务器发送邮件。如果上图中,Bob的邮件服务器没有开机,发送出的报文会留在Alice的邮件服务器上并等待进行新的尝试。

客户SMTP在25号端口建立一个到服务器SMTP的TCP连接。连接建立后,进行SMTP的握手阶段,SMTP客户指示发送方的邮件地址和接收方的邮件地址。当客户和服务器彼此“介绍”之后,客户发送报文。如果另有报文发送,就在相同的TCP连接上重复这种处理,否则TCP连接关闭。

在这里插入图片描述

2.3.2 与HTTP的对比

相同点:持续连接。

不同点:

  1. HTTP是拉协议,TCP连接是由接收文件的一方发起的;SMTP是推协议,TCP连接是由发送文件的一方发起的。
  2. SMTP要求每个报文采用7比特ASCII码格式;HTTP无要求。
  3. 如果一个报文中同时包含图片和文本,HTTP会分别将每个对象封装到响应报文中,SMTP将所有对象放入一个报文之中。

2.3.3 邮件报文格式

邮件报文由首部行和报文体构成。每个首部必须包含From:To:首部行,首部行和报文体之间用空行分隔。
在这里插入图片描述

2.3.4 邮件访问协议

在这里插入图片描述
为什么不将报文由Alice的代理通过SMTP直接发送到Bob的邮件服务器呢?因为不通过Alice的邮件服务器进行中继,如果Bob的邮件服务器处于关闭状态,Alice的邮件将不能发送。采用Alice的邮件服务器作为中继后,Alice的服务器可以重复尝试向Bob的邮件服务器发送报文。

由于SMTP是推协议,所以Bob不能通过SMTP来获取邮件服务器上的邮件。

2.3.4.1 POP3

当用户代理打开了一个到邮件服务器110端口的TCP连接后,POP3开始工作。POP3的工作分为三个阶段:特许、事务处理、更新。特许阶段中,用户代理以明文发送用户名和口令;事务处理阶段中,用户代理取回报文,还可以对报文做删除标记、获取邮件的统计信息;更新阶段发生在客户发出quit命令后,这时,邮件服务器会删除那些有删除标记的报文。
在这里插入图片描述
服务器会对用户代理的命令做出回答(+OK-ERR)。
在这里插入图片描述
list命令要求邮件服务器列出所有存储的报文的长度。

使用“下载并删除”方式可能导致用户在一台设备上获取邮件后,不能再在其他的设备上获取邮件。

在用户代理和邮件服务器进行POP3会话期间,POP3服务器会保留一些状态信息(如哪些报文被标记删除)。但POP3服务器不会再会话过程中携带状态信息。

2.3.4.2 IMAP协议

在这里插入图片描述

2.4 DNS:因特网的目录服务(P83)

2.4.1 DNS提供服务

识别主机有两种方式:主机名、IP地址。DNS提供了主机名到IP地址转换的目录服务。DNS是一个由分层的DNS服务器实现的分布式数据库,是一个使得主机能够查询分布式数据库的应用层协议。DNS运行在UDP协议上,使用53号端口。

除了主机名到IP地址的转换外,DNS还提供了如下服务:

  1. 主机别名。
  2. 邮件服务器别名。
  3. 负载分配。繁忙的站点可能分布在多台服务器上,每台服务器运行在不同的端系统上,每个端系统有着不同的IP地址。因此,一个主机名可能对应了一个IP地址的集合,DNS在每个回答中循环这些地址的次序(客户总是向IP地址排在最前面的服务器发送HTTP请求报文)。

2.4.2 DNS工作机理概述

如果DNS服务器采用集中式设计,可能产生如下问题:

  1. 单点故障。
  2. 通信容量。
  3. 远距离的集中式数据库
  4. 维护。

2.4.2.1 分布式、层次数据库

有3种类型的DNS服务器:根服务器、顶级域(TLD)服务器、权威服务器。根服务器提供TLD服务器的IP地址,TLD服务器提供权威服务器的IP地址,权威服务器将主机名映射为IP地址。

本地DNS服务器起代理作用,负责将用户的DNS请求转发到DNS服务器层次结构中。
在这里插入图片描述
上图为“递归+迭代”模式,在实践中较为常用
在这里插入图片描述
上图为纯递归模式。

2.4.2.2 DNS缓存

当某个DNS服务器接收一个DNS回答时,它能将映射关系保存在本地。

2.4.3 DNS记录和报文

在这里插入图片描述

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

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

相关文章

适合新手自学的网络安全基础技能“蓝宝书”:《CTF那些事儿》

CTF比赛是快速提升网络安全实战技能的重要途径,已成为各个行业选拔网络安全人才的通用方法。但是,本书作者在从事CTF培训的过程中,发现存在几个突出的问题: 1)线下CTF比赛培训中存在严重的“最后一公里”问题&#xf…

【项目实战】Linux系统下jar包自启动

什么是jar包自启动 在Linux系统中,"jar包自启动"是指通过配置将Java程序打包成可执行的Jar文件,并设置其在系统启动时自动运行。以下是与jar包自启动相关的一些概念: Jar文件:Jar(Java Archive&#xff09…

51单片机光照强度检测自动路灯开关仿真( proteus仿真+程序+报告+讲解视频)

51单片机光照强度检测自动路灯开关仿真( proteus仿真程序报告讲解视频) 仿真图proteus7.8及以上 程序编译器:keil 4/keil 5 编程语言:C语言 设计编号:S0052 讲解视频 基于51单片机的光照检测自动路灯控制仿真设计( proteus仿…

Day56:组件库封装-TypeScript入门

配置 安装tsc工具进行编译 npm i typescript -g 查看版本号:tsc -v 编译ts代码-需要使用tsc编译之后才能运行,TS为JS的衍生,浏览器不能直接识别TS语法:tsc xxx.ts 运行ts代码:node xxx.js 或者直接运行ts代码——t…

【从0学习Solidity】52. EIP712 类型化数据签名

【从0学习Solidity】 52. EIP712 类型化数据签名 博主简介:不写代码没饭吃,一名全栈领域的创作者,专注于研究互联网产品的解决方案和技术。熟悉云原生、微服务架构,分享一些项目实战经验以及前沿技术的见解。关注我们的主页&#…

ChatGPT的问世给哪些行业带来了冲击?

目录 引言Chat GPT 对行业的影响在线客服和智能客服行业传统自动回复机器人的局限性Chat GPT 的提升能力 教育培训行业个性化学习需求的挑战Chat GPT 的个性化优势 金融保险行业客户服务的变革Chat GPT 的智能化应用 医疗健康领域自助诊断及咨询的便利性Chat GPT 在医疗领域的应…

vue项目打包部署到服务器,报错。

这个是因为后端部署服务器时,名称没有对上,不是前端的问题,后端配置名称和前端的包名称保持一致就可以了。

轻量级c语言开源日志库log.c介绍 - 实现不同级别和参数化日志打印

前言 c语言没有现成的日志库,如果要记录日志,需要自己封装一个日志库。如果要实现日志级别和参数打印,还是比较麻烦的,正好在github找到了一个c语言开源日志库,可以实现日志级别打印,参数打印,…

SAP PO运维(四):适配器消息监控

登录SAP PO系统,点击“Configuration and Monitoring Home”,使用PISUPER账号登录: 2、选择“适配器引擎->消息监控器”: 3、查看是否有报错消息: 双击报错的数字,筛选出报错的条目(可以根据状态、接口命名空间等来筛选):常见的报错消息有: 接口配置问题:字段为空值…

好题记录 Leetcode 394.字符串解码 中等难度

方法一&#xff1a;递归 思路很简单&#xff0c;比较好理解&#xff0c;注意细节处理&#xff01;&#xff01;&#xff01; class Solution { public:string decodeString(string s) {string ans;for(int i0;s[i]!0;i){if(s[i]>a&&s[i]<z)anss[i];if(s[i]>…

十四、流式编程(4)

本章概要 终端操作 数组循环集合组合匹配查找信息数字流信息 终端操作 以下操作将会获取流的最终结果。至此我们无法再继续往后传递流。可以说&#xff0c;终端操作&#xff08;Terminal Operations&#xff09;总是我们在流管道中所做的最后一件事。 数组 toArray()&…

实时更新进度条:JavaScript中的定时器和异步编程技巧

前言 在Web开发中&#xff0c;有许多场景需要实时地更新页面上的进度&#xff0c;例如上传文件、数据处理等。本文将介绍如何利用JavaScript中的定时器和异步编程技巧来实现实时更新进度&#xff0c;并探讨一些其他解决方案。 处理进度实时更新&#xff1a; 利用异步编程实现实…

速卖通商品详情数据接口

速卖通商品详情数据接口&#xff08;aliexpress商品详情API接口&#xff09;可以获取到速卖通商品的详细信息&#xff0c;如商品标题、价格、库存、详情描述、图片等。 速卖通商品详情API接口是速卖通提供的一种产品数据接口&#xff0c;可以帮助速卖通卖家快速地将产品分类、…

Mysql主从数据恢复随笔

目录 1.使用pt-table-checksum插件安装方式如下 2.在主节点执行检查数据同步情况 3.同步检查出现的问题 3.1没有sock文件 3.2 Authentication plugin ‘sha256_password’ cannot be loaded: /usr/lib64/mysql/plugin/sha256_password.so: 无法打开共享对象文件: 没有那个文…

【刷题笔记9.24】LeetCode:二叉树最大深度

LeetCode&#xff1a;二叉树最大深度 1、题目描述&#xff1a; 给定一个二叉树 root &#xff0c;返回其最大深度。 二叉树的 最大深度 是指从根节点到最远叶子节点的最长路径上的节点数。 二、思路与算法 如果我们知道了左子树和右子树的最大深度 lll 和 rrr&#xff0c;…

基于Spring Boot的IT技术交流和分享平台的设计与实现

目录 前言 一、技术栈 二、系统功能介绍 三、核心代码 1、登录模块 2、文件上传模块 3、代码封装 前言 我国科学技术的不断发展&#xff0c;计算机的应用日渐成熟&#xff0c;其强大的功能给人们留下深刻的印象&#xff0c;它已经应用到了人类社会的各个层次的领域&#x…

MongoDB索引

索引支持在MongoDB中高效执行查询。如果没有索引&#xff0c;MongoDB必须扫描集合中的每个文档才能返回查询结果。如果查询存在适当的索引&#xff0c;MongoDB将使用该索引来限制它必须扫描的文档数。 尽管索引提高了查询性能&#xff0c;但添加索引对写入操作的性能有负面影响…

怎么去营造地中海风格?进来来看看吧

什么是地中海风格&#xff1f; 地中海风格是一种受地中海沿岸住宅建筑和美学影响的装饰风格。西班牙、希腊和摩洛哥等国的文化对地中海风格产生了影响。 简约是地中海生活的主要部分。地中海气候宜人&#xff0c;人们的生活态度闲适&#xff0c;这一点在色彩、设计、材料和图案…

2023第十二届中国智能产业高峰论坛之文档大模型的探索与思考

文章目录 前言合合信息多模态大模型与文档图像智能理解文档图像分析识别与理解的技术难题文档图像分析与预处理文档解析与识别版面分析与还原文档信息抽取与理解AI安全知识化&存储检索和管理 文档图像的分析识别与理解和大模型的关系文档图像大模型的进展LayoutLMUDOPDonut…

东郊到家app小程序公众号软件开发预约同城服务系统成品源码部署

东郊到家app系统开发&#xff0c;东郊到家软件定制开发&#xff0c;东郊到家小程序APP开发&#xff0c;东郊到家源码定制开发&#xff0c;东郊到家模式系统定制开发 一、上门软件介绍 1、上门app是一家以推拿为主项&#xff0c;个人定制型的o2o平台&#xff0c;上门app平台提…