IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 网络协议 -> 图解HTTP笔记(一) -> 正文阅读

[网络协议]图解HTTP笔记(一)

了解web及网络基础

web使用一种名为HTTP(超文本传输协议)的协议作为规范,完成从客户端到服务器端的一系列运作流程,web是建立在HTTP协议上通信的。

RFC:制定HTTP协议技术标准的文档。

网络基础 TCP/IP

通常使用的网络包括互联网,是在TCP/IP协议族的基础上运行的,而HTTP属于它内部的一个子集。

TCP/IP协议族

计算机与网络设备相互通信,双方需要基于相同的方法。不同硬件、操作系统之间的通信,所有的这一切都需要一种规则,而这种规则就被称为协议。
在这里插入图片描述

TCP/IP的分层管理

TCP/IP协议族按层次分别有应用层、传输层、网络层和数据链路层

  • 应用层
    决定了向用户提供应用服务时通信的活动。
    TCP/IP协议族内预存了各类通用的应用服务。比如,FIP(文件传输协议)、DNS(域名系统)就是其中两类。HTTP协议就是处于该层。

  • 传输层
    对上层应用层提供处于网络连接中的两台计算机之间的数据传输。
    在传输层上有两个性质不同的协议:TCP(传输控制协议)、UDP(用户数据报协议)。

  • 网络层(网络互连层)
    用来处理在网络上流动的数据包,数据包是网络传输的最小数据单位。
    该层的作用是在众多的选型内选择一条传输路线。

  • 链路层
    用来处理连接网络的硬件部分。
    作用范围:控制操作系统、硬件的设备驱动、NIC(网络适配器即网卡)、光纤等物理可见部分(包括连接器等一切传输媒介),硬件上的范畴均在链路层的作用范围内。

TCP/IP通信传输流在这里插入图片描述

利用TCP/IP协议族进行通信时,通过分层顺序与对方进行通信。发送端从应用层往下走,接收端从链路层往上走,从应用层传输到应用层,才算真正接收到由客户端发过来的HTTP请求。

在这里插入图片描述

发送层每经过一层就会被打上一个该层所属的首部信息,同理,接收端每经过一层会把对应的首部取消,这种把数据信息包装起来的做法称为封装。

与HTTP关系密切的协议:IP、TCP、DNS

负责传输的IP协议

  • IP协议位于网络层。不可将IPIP地址搞混,这里的IP是一种协议的名称。

  • IP协议的作用是把各种数据包传送给对方,其中需要满足的两个条件IP地址、MAC地址。

  • IP地址指明了节点被分配到的地址,MAC地址是指网卡【工作在链路层的网络组件,是局域网中连接计算机和传输介质(网线)的接口】所属的固定地址。IP地址可与MAC地址配对,IP地址可变换,MAC地址基本不会更改。

  • IP间的通信依赖MAC地址。使用ARP协议凭借MAC地址进行通信,ARP协议是一种用以解析地址的协议,根据通信方的IP地址可以反查出对应的MAC地址。

  • 无论哪台计算机、哪台网络设备,都无法全面掌握互联网中的细节。

在这里插入图片描述

确保可靠性的TCP协议

  • TCP协议位于传输层,提供可靠的字节流服务,可以确认数据最终是否送达到对方。

  • 字节流服务:为了传输方便,将大块数据分割为以报文段为单位的数据包进行管理。

  • 为了确保数据准确送达,TCP协议采用了三次握手策略TCP -> SYN -> ACK。若握手阶段中某个阶段莫名中断,则TCP协议会再次以相同的顺序发送相同的数据包。

在这里插入图片描述

  • TCP协议还有其它手段来保证通信的可靠性,三次握手只是其中之一。

负责域名解析的DNS服务

  • DNS服务是和HTTP协议一样位于应用层的协议,它提供域名到IP之间的解析服务。DNS通过域名查找IP地址,或逆向从IP地址反差域名的服务。

在这里插入图片描述

各种协议与HTTP协议的关系

TCP协议、IP协议、DNS服务在使用HTTP协议的通信过程中发挥的作用

在这里插入图片描述

URI和URL

URI(统一资源标识符)

  • URI是由某个协议方案【协议方案是指访问资源所使用的协议类型名称】标志的资源的定位标识符。

  • 协议方案包括http、ftp、mailto、telnet、file等等,标准的URI协议方案有30种左右。

  • URI用字符串标识某一互联网资源,而URL表示资源的地点(互联网上所处的位置),则URLURI的子集。

在这里插入图片描述

URL(统一资源定位符)

  • 包括绝对URL和相对URL

  • 绝对URL的格式在这里插入图片描述
    其中协议方案名不区分大小写,也可以使用data:或者javascript:这类指定数据或脚本程序的方案名。
    登录信息指定用户名和密码,为可选性。
    服务器地址可以是DNS可解析的名称,也可以是IPv4、IPv6地址。
    服务器端口号为可选项,若忽略则为默认端口号。
    片段标识符也为可选项,通常可标记处已获取资源的子资源(文档内的某个位置)。

简单的HTTP协议

HTTP协议用于客户端和服务端之间的通信

  • 与TCP/IP协议族内的其他众多协议作用相同。
  • 其中,发起请求访问的为客户端,提供资源响应的一端为服务器端。HTTP协议能准确区分哪些是客户端,哪些是服务器端。

在这里插入图片描述

通过请求和响应的交换达成通信

看客户端发送给某个HTTP服务器端的请求报文:

在这里插入图片描述

GET表示请求访问服务器的类型,称为方法。最后的字符串/index.html指明了请求访问的资源对象,也叫请求URI。最后的HTTP/1.1,即HTTP的版本号,用来提供客户端使用的HTTP协议功能。HOST写明网络域名或IP地址。

这段请求内容的意思为:请求访问某台HTTP服务器上的/index.html页面资源。
在这里插入图片描述在这里插入图片描述
其中请求首部字段和响应首部字段均为可选项。

HTTP是不保存状态的协议

  • 即无状态协议。
  • 自身不具备保存之间发过的请求和响应的功能
  • 有些网站需要保存用户的状态,即引入了cookie技术。

请求URI定位资源

  • URI能访问互联网的任意位置
  • 如果不是访问特定资源而是对服务器本身发起请求,可以用*来代替请求URI
OPTION *HTTP/1.1

告知服务器意图的HTTP方法

GET

  • GET方法是用来请求访问已被URI识别的资源。
  • 主要目的是获取响应的主体内容,获取URI的页面资源

POST

  • POST方法是来传输实体的主体。
  • 获取的为返回URI接受数据的处理结果

PUT

  • 用来传输文件,与FIP协议的文件上传相同,无验证机制。
  • 要求请求报文的主体中包含文件内容,然后保存到请求URI指定的位置。

HEAD

  • 获得报文首部
  • GET方法相同,只是不返回报文主体部分。

DELETE

  • 删除指定资源,与PUT相反,无验证机制。

OPTION

  • 用来查询针对请求URI指定的资源支持的方法在这里插入图片描述

TRACE

  • 追踪路径,让web服务器端将之前的请求通信环回给客户端的方法
  • 不常用,容易引发XST(跨站追踪)。在这里插入图片描述

CONNET

  • 该方法要求与代理服务器通信时建立隧道,将通信内容加密后,实现用隧道协议进行TCP通信。
  • 加密方法:SSL协议(安全套接层)、TLS协议(传输层安全)
CINNECT 代理服务器名:端口号 HTTP版本        //格式

在这里插入图片描述

持久连接节省通信量

  • HTML初始版本中,每进行一次HTML通信,则TCP连接断开一次,因此提出持久连接。
  • 持久连接:只要任意一端没有准确提出断开连接,则保持TCP连接状态。
  • 持久连接特点:减轻了服务器端的负载,提高web页面的显示速度。
  • 管线化技术,同时发送多个请求。
  • 请求数越多,持久连接与管线化技术时间差越明显,且前者大于后者。

HTTP报文内的HTTP信息

HTTP报文

用于HTTP协议交互的信息称为HTTP报文,有请求报文和响应报文两种。HTTP报文大致分为报文首部和报文主体(可选项)两块。

在这里插入图片描述

  • 也可通过编码来提升传输速率,有效处理大量的访问请求,但是编码会消耗更多的CPU
  • HTTP报文的主体用于传输请求或响应的实体主体,只有在编码中报文主体不等于实体主体。

压缩传输的内容编码

在这里插入图片描述

分割发送的分块传输编码

  • HTTP通信中,请求的编码未传输完成,浏览器无法显示请求页面。因此,在传输大数据时,把数据分割成多块,使浏览器逐步显示页面。
  • 编码传输是把实体主体分割成多块,且每块用十六进制来标记大小。
  • HTTP中的传输编码机制只作用域分块传输编码

发送多种数据的多部分对象集合

  • MIME(多用途因特网邮件扩展)机制允许邮件可以处理文本、图片等不同类型的数据。
  • MIME扩展中会使用多部分对象集合的方法,来容纳多份不同类型的数据。

获取部分内容的范围请求

  • 指定范围发送的请求叫做范围请求。
Range:bytee=5001~10000

内容协商返回最合适的内容

  • 同一个web网站可能存在多份相同内容的页面,比如英文版和中文版的web页面。
  • 当浏览器的默认语言为中文时,则会显示对应的中文版的web页面,这样的机制称为内容协商。
  • 三种类型:服务器驱动协商、客户端驱动协商、透明协商。

返回结果的HTTP状态码

状态码告知从服务器端返回的结果。数中的第一位指定响应类别,后两位无分类。
状态码响应也可能发生错误,如web应用程序内部错误,状态码也可能返回200。
在这里插入图片描述

200 OK

表示从客户端发来的请求在服务器端被正常处理,且随状态码返回的信息也会与方法【get、head等】有关。

204 No Centent

  • 表示服务器接受的请求已成功处理,但在返回的响应报文中不含实体的主体部分,也不允许返回任何实体的主体。
    在这里插入图片描述

206 Partical Content

该状态码表示客户端进行了范围请求,而服务器成功执行了这部分的GET请求。

301 Moved Permanently

永久性重定向,表示请求的资源已被分配了新的URI,以后应使用资源现在所指的URI在这里插入图片描述

302 Found

临时性重定向。该状态码表示请求的资源已被分配到了新的URI,希望用户本次能使用新的URI访问。比如:用户把URI保存成为了书签,但不会像301出现时那样去更新书签,而是仍旧返回302对应的URI

303 See Other

  • 表示由于请求对应的资源存在着另一个URI,应使用GET方法定向获取请求的资源。
  • 302区别在于303明确客户端应采用GET方法获取资源,不论第一次请求是什么方法。

304 Not Modified

  • 表示客户端发送附带条件的请求,服务器端允许请求访问资源,但未满足条件。
  • 与重定向无关。
  • 返回时不包含任何响应的主体部分。在这里插入图片描述

307 Tempoprary Redirect

临时重定向。与302含义相同,只是方法遵照浏览器标准,不会从POST编为GET

400 Bad Request

表示请求报文中存在语法错误,不能被服务器理解。当错误发生时,需修改请求的内容后再次发送。

401 Unauthorized

请求未经授权,表示发送的请求需要有通过HTTP认证(BASIC认证、DIGEST认证)的认证信息。若之前已进行过1次请求,则表示用户认证失败。在这里插入图片描述

403 Forbidden

  • 表明服务器收到请求,但是对请求资源的访问被服务器拒绝。
  • 服务器端没有必要给出拒绝的详细理由,但是想做说明的话可以在实体的主体部分对原因进行描述。
  • 发生403可能的原因:未获得文件系统的访问授权、访问权限出现问题(从未授权的发送源IP地址试图访问)

404 Not Found

表示服务器上无法找到请求的资源,也可在服务器端拒绝请求不想说明理由时使用。

500 Internrt Server Error

表明服务器端在执行请求时发生了错误。

503 Service Unavailiable

表示服务器暂处于超负载或正在停机维护,现在无法处理请求。写入Retry-After首部字段再返回给客户端可以事先得知解除以上状况的时间。

  网络协议 最新文章
使用Easyswoole 搭建简单的Websoket服务
常见的数据通信方式有哪些?
Openssl 1024bit RSA算法---公私钥获取和处
HTTPS协议的密钥交换流程
《小白WEB安全入门》03. 漏洞篇
HttpRunner4.x 安装与使用
2021-07-04
手写RPC学习笔记
K8S高可用版本部署
mySQL计算IP地址范围
上一篇文章      下一篇文章      查看所有文章
加:2021-08-04 11:34:02  更:2021-08-04 11:36:31 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/4 7:38:30-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码