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 协议 -> 正文阅读

[网络协议]笔记 | HTTP 协议(一)网络基础 和 简单的 HTTP 协议

  1. 首先介绍一下HTTP

HTTP 协议,全称Hyper Text Transfer Protocol,超文本传输协议,它是一种规范,完成从客户端到服务器端等一系列运作流程。

  1. 通信协议(TCP/IP协议族)

计算机与网络设备要相互通信,双方就必须基于相同的方法。不同的硬件、操作系统之间的通信,所有的这一切都需要一种规则,而我们就把这种规则称为 协议(protocol)。

像这样把与互联网相关联的协议集合起来总称为 TCP/IP。

TCP/IP 协议族按层次分别分 为以下 4 层:应用层、传输层、网络层和数据链路层。

在这里插入图片描述

  • 应用层:决定了向用户提供服务时通信的活动,HTTP也处于该层。(FTP、DNS)
  • 传输层:提供处于网络连接中的两台计算机之间的数据传输。
  • 网络层:网络层用来处理在网络上流动的数据包。与对方计算机之间通过多台计算机或网络设备进行传输时,网络层所 起的作用就是在众多的选项内选择一条传输路线。
  • 链路层:用来处理连接网络的硬件部分。

在这个过程里,数据流动如图,

在这里插入图片描述

发送端在层与层之间传输数据时,每经过一层时必定会被打上一个该层所属的首部信息。反之,接收端在层与层传输数据时,每经过一层 时会把对应的首部消去。

  1. IP、TCP 和 DNS

3.1 负责传输的IP协议

IP网际协议位于网络层,作用是把各种数据包传送给对方。而要保证确实传送到对方那里,则需要满足两个重要的条件是 IP 地址和 MAC 地址。

IP 地址指明了节点被分配到的地址,MAC 地址是指网卡所属的固定 地址。IP 地址可以和 MAC 地址进行配对。IP 地址可变换,但 MAC 地址基本上不会更改。

IP 间的通信依赖 MAC 地址,采用 ARP 协议可以根据通信方 的 IP 地址就可以反查出对应的 MAC 地址。

3.2 确保可靠的TCP协议

TCP 位于传输层,提供可靠的字节流服务。

所谓的字节流服务是指,为了方便传输,将大块数据分割成以报文段为单位的数据包进行管理。为了准确无误地将数据送达目标处,TCP 协议采用了三次握手 、四次挥手策略。

3.3 负责域名解析的DNS服务

DNS服务是和 HTTP 协议一样位于应用层的 协议。它提供域名到 IP 地址之间的解析服务。

用户通常使用主机名或域名来访问对方的计算机,而不是直接通过 IP地址访问。因为与 IP 地址的一组纯数字相比,用字母配合数字的表示形式来指定计算机名更符合人类的记忆习惯。

但要让计算机去理解名称,相对而言就变得困难了。因为计算机更擅长处理一长串数字。

所以,DNS 协议提供通过域名查找 IP 地址,或逆向从 IP 地址反查域名的服务。

  1. URI 和 URL

URI,统一资源标识符,就是由某个协议方案表示的资源的定位标识符。

URL,统一资源定位符,也就是我们访问页面时的网页地址。

URI 用字符串标识某一互联网资源,而 URL表示资源的地点。可见 URL是 URI 的子集。

了解一下URI的格式:
在这里插入图片描述

  1. 简单的 HTTP 协议

HTTP 协议用于客户端和 服务器之间的通信。 请求访问文本或图像等资源的一端称为客户端,而提供资源响应的一 端称为服务器端。

在这里插入图片描述

HTTP 是一种不保存状态,即无状态(stateless)协议。每当有新的请求发送时,就会有对应的新响应产 生。协议本身并不保留之前一切的请求或响应报文的信息。这是为了 更快地处理大量事务,确保协议的可伸缩性,而特意把 HTTP 协议设 计成如此简单的。

HTTP/1.1 虽然是无状态协议,但为了实现期望的保持状态功能,于 是引入了 Cookie 技术。有了 Cookie 再用 HTTP 协议通信,就可以管理状态了。

  1. HTTP 方法

  • GET :获取资源
  • POST :传输实体的主体。
  • PUT:传输文件
  • HEAD:获得报文首部
  • DELETE:删除文件
  • OPTIONS:询问支持的方法
  • TRACE:追踪路径
  • CONNECT:要求用隧道协议连接代理
  1. 持久连接

HTTP 协议的初始版本中,每进行一次HTTP通信就要断开一次TCP连接。传输容量小的话,问题也不大,但是如果包含大量图片等容量大的资源时,每次请求就会造成无谓的TCP连接建立和断开,增加通信量的开销。

为了解决这个问题,HTTP/1.1和部分 HTTP/1.0 采用持久连接的方法,只要任意一端没有明确提出断开连接,则保持TCP连接状态。

使用长连接的HTTP协议,会在响应头有加入这行代码:

Connection:keep-alive

  1. 使用 Cookie 的状态管理

HTTP是无状态协议,无状态的优点是减少服务器的CPU和内存资源的消耗。为了保持长连接引入了Cookie技术,它通过在请求和响应报文中写入Cookie信息来控制客户端的状态。

首次响应,服务器会在响应报文里包含一个首部字段信息Set-Cookie,以此来通知客户端保存Cookie,客户端在之后的请求报文中加入Cookie 后再发送到服务器端。

服务器端接收到客户请求中的 Cookie 后,对比服务器上的记录,可以得到该客户之前的状态信息。

首次请求是这样的:

  1. 服务端保存客户端请求
  2. 服务端在响应中添加cookie后返回

在存有Cookie信息之后,请求时这样的:

  1. 客户端请求时带上cookie
  2. 服务端检查cookie,作出响应
  网络协议 最新文章
使用Easyswoole 搭建简单的Websoket服务
常见的数据通信方式有哪些?
Openssl 1024bit RSA算法---公私钥获取和处
HTTPS协议的密钥交换流程
《小白WEB安全入门》03. 漏洞篇
HttpRunner4.x 安装与使用
2021-07-04
手写RPC学习笔记
K8S高可用版本部署
mySQL计算IP地址范围
上一篇文章      下一篇文章      查看所有文章
加:2021-08-25 12:33:59  更:2021-08-25 12:36:12 
 
开发: 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年11日历 -2024/11/25 21:45:58-

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