计网之应用层

news2024/11/15 10:53:43

因特网协议概述

在这里插入图片描述

常用协议
应用层HTTP(超文本传输协议)、FTP(文件传输协议)、SMTP(简单邮件传输协议)、DNS(域名系统)、DHCP(动态主机配置协议)、SNMP(简单网络管理协议)
运输层TCP(传输控制协议)、UDP(用户数据报协议)、SCTP(流控制传输协议)、DCCP(数据报式传输协议)
网络层IP(Internet Protocol) 、ICMP(Internet Control Message Protocol)、ARP(地址解析协议)、RAR(逆地址解析协议)、OSPF(开放最短路径优先)、BGP(边界网关协议)
链路层PPP(点对点协议)、HDLC(高级数据链路控制)、Ethernet(以太网)、Wi-Fi(无线局域网)、ATM(异步传输模式)、FDDI(光纤分布式数据接口)
物理层IEEE 802.3(以太网)、IEEE 802.11(Wi-Fi)、SONET(同步光纤网络)、DSL(数字用户线路)、USB(通用串行总线)、HDMI(高清晰度多媒体接口)

应用层协议原理

进程通信

客户发起通信、服务器等待联系

套接字

  • 进程通过套接字这个软件接口,向网络发送和接收报文
  • 应用层与运输层的接口
  • 应用程序与网络的应用程序编程接口(API)
  • 提供了一种抽象层,隐藏了底层网络协议的细节

进程寻址

主机地址:IP地址
目的主机中指定接收进程的标识符:端口号

应用服务要求

  • 可靠数据传输
  • 吞吐量
  • 定时(时延限制)
  • 安全性

Web和HTTP

  • (Hypertext Transfer Protocol)
  • TCP为HTTP提供可靠数据传输服务

HTTP是无状态协议

  • 当客户端发送HTTP请求时,它必须提供所有必要的信息(如请求方法、URL、头部字段等),服务器根据这些信息来处理请求并发送相应的HTTP响应。
  • 每个HTTP请求都是独立的,服务器在发送响应后,不会保留客户端的任何状态信息,也不会记录客户端的上下文。

HTTP报文格式

请求报文

在这里插入图片描述

HTTP请求报文
请求行GET /somedir/page.html HTTP/1.1方法字段、URL字段、HTTP版本字段
首部行Host:www.someschool.edu指明对象所在主机
首部行Connection:close非持续连接
首部行User-agent:Mozilla/5.0指明用户代理,即浏览器类型是Firefox
首部行Accept-language:fr希望得到对象的法语版本

方法字段

  • GET:用于请求获取特定资源,通常用于获取网页、图片、文本等静态内容。该方法是幂等的,即多次执行相同的GET请求应该得到相同的结果。实体体为空
  • POST:用于向服务器提交数据,通常用于提交表单数据、上传文件等操作。POST请求可能会引起服务器状态的变化,不是幂等的。
  • PUT:用于向服务器上传新的资源,或者更新现有资源。PUT请求应该是幂等的,即多次执行相同的PUT请求会得到相同的结果。
  • DELETE:用于请求删除指定的资源。DELETE请求应该是幂等的,即多次执行相同的DELETE请求会得到相同的结果。
  • HEAD:与GET方法类似,但只返回响应头部,不返回实际内容。主要用于获取资源的元数据或检查资源是否存在。
  • OPTIONS:用于获取目标资源支持的通信选项。服务器可以返回允许的方法、支持的头部字段等信息。
  • TRACE:用于追踪请求在传输链路上的处理情况。服务器会将接收到的请求原样返回给客户端,用于测试和诊断。
  • CONNECT:用于建立与目标资源的隧道连接,通常用于代理服务器。

条件GET:解决缓存器的对象副本为旧副本的问题

if-modified-since:Wed,9 Sep 2015 09:23:24

响应报文

在这里插入图片描述

HTTP响应报文
状态行HTTP/1.1 200 OK协议版本、状态码、相应状态信息
首部行Connection:close非持续连接
首部行Date:Tue,18,Aug,2015 15:44:04 GMT服务器从文件系统中检索到该对象,将其插入响应报文并发送该响应报文的时间
首部行Server:Apache/2.2.3(CentOS)报文由Apache Web服务器产生
首部行Last-Modified:Tue,18,Aug 2015 15:11:03 GMT对象创建/最后修改的时间
首部行Content-Length:6821被发送对象的字节数
首部行Content-Type:text/html实体体的对象是HTML文本
实体体(data data data data data …)所请求的对象本身

状态码

1xx(Informational):表示请求已经被接收,继续处理中。

2xx(Success):表示请求已成功处理并得到响应。

  • 200 OK:请求成功,服务器正常返回请求的数据。
  • 201 Created:请求成功,并在服务器上创建了新的资源。
  • 204 No Content:请求成功,但响应不包含任何实体内容。

3xx(Redirection):表示需要进行进一步的操作,以完成请求。

  • 301 Moved Permanently:请求的资源已永久移动到新的URL。
  • 302 Found:请求的资源暂时移动到新的URL。
  • 304 Not Modified:资源未修改,客户端可以使用缓存的版本。

4xx(Client Error):表示客户端发送的请求有错误。

  • 400 Bad Request:通用差错代码,请求无效,服务器无法理解。
  • 401 Unauthorized:请求需要身份验证。
    -403 Forbidden:服务器拒绝请求访问资源。
  • 404 Not Found:请求的资源不存在。

5xx(Server Error):表示服务器在处理请求时发生错误。

  • 500 Internal Server Error:服务器内部错误。
  • 502 Bad Gateway:服务器作为网关或代理,从上游服务器收到无效的响应。
  • 503 Service Unavailable:服务器暂时无法处理请求,通常是由于过载或维护。
  • 505 HTTP Version Not Support:服务器不支持请求报文的HTTP协议版本。

cookie

解决HTTP的无状态协议

在这里插入图片描述

Web缓存

Web缓存器,也称为代理服务器
在这里插入图片描述

电子邮件

SMTP

  • (Simple Mail Transfer Protocol)
  • 一般不使用中间邮件服务器
  • HTTP是拉协议,TCP连接由想接收文件的机器发起;SMTP是推协议
    在这里插入图片描述

DNS域名系统

  • 主机名转换为IP地址
  • 4元组:(Name,Value,Type,生存时间TTL)

在这里插入图片描述
根DNS服务器、顶级域服务器(TLD)、权威DNS服务器
DNS缓存

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

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

相关文章

15-6.自定义组件的代码共享

在微信小程序中使用 behaviors 进行代码共享,功能类似于vue的mixins 每个behavior可以包含一组属性、数据、生命周期函数和方法 每个组件可以引用多个behavior,behavior也可以引用其他的behavior 目录 1 创建behavior 2 使用behavior 3 behavio…

机器学习融合模型stacking14条经验总结和5个成功案例(互联网最全,硬核收藏)

我看了很多关于融合模型stacking文章,很多作者倾向于赞美融合模型stacking,对其缺点轻描淡写,这容易误导初学者。一叶障目就是这意思。 我的很多学员喜欢用融合模型作为论文或专利创新点,这是一个热门技术。 最近有个同学在论文…

MySQL:七种 SQL JOINS 的实现(图文详解)

MySQL:7种SQL JOINS的实现 前言一、图示表示二、代码举例1、INNER JOIN(内连接)2、LEFT JOIN(左连接)3、RIGHT JOIN(右连接)4、OUTER JOIN(全连接)5、LEFT EXCLUDING JOI…

微信小程序入门学习02-TDesign中的自定义组件

目录 1 显示文本2 自定义组件3 变量定义4 值绑定总结 我们上一篇讲解了TDesign模板的基本用法,如何开始阅读模板。本篇我们讲解一下自定义组件的用法。 1 显示文本 官方模板在顶部除了显示图片外,还显示了一段文字介绍。文字是嵌套在容器组件里&#xf…

数据库的操作

前言 在之前的文章中,我们已经了解了什么是数据库,以及为什么有数据库,和数据库有什么作用,有了这些宏观概念之后,本章为大家进一步详细介绍对于数据库在Linux上如何具体操作。 1.创建数据库 1.1创建数据库语法 语法…

读书:《敏捷软件开发工具----精益开发方法》

《敏捷软件开发工具----精益开发方法》(Lean Software Development: An Agile Toolkit)由Mary Poppendieck和Tom Poppendieck合著,2003年出版,尽管已经有20个年头了,但书中的理念和方法仍然具有很高的实践价值&#xf…

SpringBoot2概览-运维实用篇

知识点 使用SpringBoot提供的maven插件可以将工程打包成可执行jar包然后执行&#xff0c;即java –jar xxx.jar&#xff0c;下面的图是MANIFEST.MF文件的内容&#xff1a; <build><plugins><plugin><groupId>org.springframework.boot</groupId>…

【MySQL】如何速通MySQL(3)

&#x1f4cc;前言&#xff1a;本篇博客介绍如何速通MySQL的第二篇&#xff0c;主要介绍Mysql中主要的基础的入门&#xff0c;学习MySQL之前要先安装好MySQL&#xff0c;如果还没有安装的小伙伴可以看看博主前面的博客&#xff0c;里面有详细的安装教程。或者看一下下面这个链接…

136-nago

PEID查看你程序有没有壳&#xff0c;发现是汇编语言程序 打开程序&#xff0c;我们发现程序是由Nag提示窗口的。 我们先进行去Nag提示。 进入回调函数&#xff0c;进行分析 保存修改到文件。 重新打开文件&#xff0c;我们发现没有Nag窗口。 再次使用OD进行附加进行分析。…

项目中遇到的问题总结(四)

GateWay和Nginx的相同点和不同点在哪里&#xff1f; Gateway 和 Nginx 都是常见的反向代理服务器&#xff0c;它们的相同点和不同点如下&#xff1a; 相同点&#xff1a; 都可以作为反向代理服务器&#xff0c;接收来自客户端的请求并转发到后端服务器进行处理。 都支持负载均…

67、C#调用Visual Studio 2019生成的Paddle+OCR(使用ncnn库),去完成业务任务

基本思想&#xff1a;这里使用飞哥写的android代码&#xff0c;将其取出纯c代码逻辑&#xff0c;自己尝试转了paddleocr模型&#xff0c;可以成功转换&#xff0c;不在详细阐述生成ncnn模型的过程和写后处理ocr识别过程&#xff0c;这里要实现的目的是使用c#调用ncnn的ocr工程&…

Ps修改文字

第一步&#xff1a;打开ps软件&#xff0c;选择菜单栏“文件”中的“打开”选项。 第二步&#xff1a;在弹出的“打开”对话框中&#xff0c;选择一张需要修改文字的图片&#xff0c;单击“打开”按钮。 第三步&#xff1a;在左侧工具栏中&#xff0c;选择“仿制图章工具”。 第…

【Python 随练】输出 9*9 口诀

题目&#xff1a; 输出 9*9 口诀 简介&#xff1a; 在本篇博客中&#xff0c;我们将使用 Python 代码输出 9*9 口诀表。口诀表是一个常见的数学乘法表格&#xff0c;用于展示从 1 到 9 的乘法结果。我们将给出问题的解析&#xff0c;并提供一个完整的代码示例来生成这个口诀…

全志V3S嵌入式驱动开发(USB camera驱动)

【 声明&#xff1a;版权所有&#xff0c;欢迎转载&#xff0c;请勿用于商业用途。 联系信箱&#xff1a;feixiaoxing 163.com】 soc和mcu的一个重要区别&#xff0c;就是soc会涉及到大量的音视频操作&#xff0c;当然音视频也就包括了camera摄像头这部分。v3s本身支持csi接口和…

webpack优化代码运行之Code split

一、 什么是code split Webpack的code split是一种技术&#xff0c;它能够将代码分割成多个块&#xff0c;从而优化应用程序的性能。这样做可以实现按需加载和并行加载&#xff0c;从而减少初始化时间和请求次数。Code split在Webpack中通过使用entry语法和各种Loader和插件来…

享元模式:减少内存占用的诀窍

一&#xff0c;概要 享元模式&#xff08;Flyweight Pattern&#xff09;是一种结构型设计模式&#xff0c;它主要通过共享对象来降低系统中对象的数量&#xff0c;从而减少内存占用和提高程序性能。这听起来有点像单例模式&#xff0c;但它们在实现和用途上有很大的区别。享元…

JavaScript Day01 初识JavaScript

文章目录 1.初识JavaScript1.1.什么是JavaScript1.2.JavaScript的组成部分1.3.JavaScript的历史-JavaScript发展历史-系统环境-编辑器-运行环境-调试&#xff1a; 2. js组成2.1 ECMAScrpt 【js标准】&#xff08;兼容性100%&#xff09; (类似于CoreJava&#xff0c;制定了基础…

【备战秋招】每日一题:2023.05-B卷-华为OD机试 - 阿里巴巴找黄金宝箱(III)

为了更好的阅读体检&#xff0c;可以查看我的算法学习博客阿里巴巴找黄金宝箱(III) 题目描述 贫如洗的樵夫阿里巴巴在去砍柴的路上&#xff0c;无意中发现了强盗集团的藏宝地&#xff0c;藏宝地有编号从0-N的箱子&#xff0c;每个箱子上面贴有一个数字。 阿里巴巴念出一个咒…

SpringMVC 学习整理

文章目录 一、SpringMVC 简介1.1 什么是MVC1.2 什么是Spring MVC1.3 Spring MVC的特点 二、SpringMVC 快速入门三、RequestMapping注解说明四、SpringMVC获取请求参数4.1 通过ServletAPI获取请求参数4.2 通过控制器方法的形参获取请求参数4.3 通过RequestParam接收请求参数4.4 …

Elasticsearch:实用 BM25 - 第 3 部分:在 Elasticsearch 中选择 b 和 k1 的注意事项

这是系列文章的第三篇文章。之前的文章是&#xff1a; Elasticsearch&#xff1a;实用 BM25 - 第 1 部分&#xff1a;分片如何影响 Elasticsearch 中的相关性评分 Elasticsearch&#xff1a;实用 BM25 - 第 2 部分&#xff1a;BM25 算法及其变量 选择 b 和 k1 值得注意的是&…