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有关的协议

image-20211117203121701

TCP/IP

TCP/IP 协议是目前网络世界“事实上”的标准通信协议

TCP/IP 协议实际上是一系列网络通信协议的统称,其中最核心的两个协议是TCP和IP,其
他的还有 UDP、ICMP、ARP 等等,共同构成了一个复杂但有层次的协议栈

这个协议栈有四层,最上层是“应用层”,最下层是“链接层”,TCP 和 IP 则在中间:
**TCP 属于“传输层”,IP 属于“网际层”。**协议的层级关系模型非常重要,

IP协议

IP 协议是“Internet Protocol”的缩写,主要目的是解决寻址和路由问题,以及如何在两
点间传送数据包。IP 协议使用“IP 地址”的概念来定位互联网上的每一台计算机。可以对
比一下现实中的电话系统,你拿着的手机相当于互联网上的计算机,而要打电话就必须接入
电话网,由通信公司给你分配一个号码,这个号码就相当于 IP 地址

现在我们使用的 IP 协议大多数是 v4 版,地址是四个用“.”分隔的数字,例
如“192.168.0.1”,总共有 2^32,大约 42 亿个可以分配的地址。看上去好像很多,但互
联网的快速发展让地址的分配管理很快就“捉襟见肘”。所以,就又出现了 v6 版,使用 8
组“:”分隔的数字作为地址,容量扩大了很多,有 2^128 个,在未来的几十年里应该是足
够用了。

TCP协议

TCP 协议是“Transmission Control Protocol”的缩写,意思是“传输控制协议”,它位
于 IP 协议之上,基于 IP 协议提供可靠的、字节流形式的通信,是 HTTP 协议得以实现的
基础。

“可靠”是指保证数据不丢失,“字节流”是指保证数据完整,所以在 TCP 协议的两端可
以如同操作文件一样访问传输的数据,就像是读写在一个密闭的管道里“流动”的字节。

因为HTTP 是一个"传输协议",但它不关心寻址、路由、数据完整性等传输细节,而要求这些工作都由下层来处理。因为互联网上最流行的是 TCP/IP 协议,而它刚好满足 HTTP 的要求,所以互联网上的 HTTP 协议就运行在了 TCP/IP 上,HTTP 也就可以更准确地称为“HTTP over TCP/IP”

DNS

“域名系统”(Domain Name System)出现了,用有意义的名字来作为 IP 地址的等价替代

TCP/IP 协议中使用 IP 地址来标识计算机,数字形式的地址对于计算机来说是方便了,

但对于人类来说却既难以记忆又难以输入,所以有了DNS

在 DNS 中,“域名”(Domain Name)又称为“主机名”(Host),为了更好地标记不
同国家或组织的主机,让名字更好记,所以被设计成了一个有层次的结构。
域名用“.”分隔成多个单词,级别从左到右逐级升高,最右边的被称为“顶级域名”。对
于顶级域名,可能你随口就能说出几个,例如表示商业公司的“com”、表示教育机构
的“edu”,表示国家的“cn”“uk”等,买火车票时的域名还记得吗?
是“www.12306.cn”。

但想要使用 TCP/IP 协议来通信仍然要使用 IP 地址,所以需要把域名做一个转换,“映
射”到它的真实 IP,这就是所谓的**“域名解析”。**

HTTP 协议中并没有明确要求必须使用 DNS,但实际上为了方便访问互联网上的 Web 服
务器,通常都会使用 DNS 来定位或标记主机名,间接地把 DNS 与 HTTP 绑在了一起。

URI/URL

有了 TCP/IP 和 DNS,是不是我们就可以任意访问网络上的资源了呢?
还不行,DNS 和 IP 地址只是标记了互联网上的主机,但主机上有那么多文本、图片、页
面,到底要找哪一个呢?就像小明管理了一大堆文档,你怎么告诉他是哪个呢?

所以就出现了 URI(Uniform Resource Identifier),中文名称是 统一资源标识符,使用
它就能够唯一地标记互联网上资源
URI 另一个更常用的表现形式是 URL(Uniform Resource Locator), 统一资源定位
符,也就是我们俗称的“网址”,它实际上是 URI 的一个子集,不过因为这两者几乎是相
同的,差异不大,所以通常不会做严格的区分。

以http://nginx.org/en/download.html为例

URI 主要有三个基本的部分构成:

  1. 协议名:即访问该资源应当使用的协议,在这里是“http”;
  2. 主机名:即互联网上主机的标记,可以是域名或 IP 地址,在这里是“nginx.org”;
  3. 路径:即资源在主机上的位置,使用“/”分隔多级目录,在这里
    是“/en/download.html”。

HTTPS

HTTPS 它的全称是“HTTP over SSL/TLS”,也就是
运行在 SSL/TLS 协议上的 HTTP。

注意它的名字,这里是 SSL/TLS,而不是 TCP/IP,它是一个负责加密通信的安全协议,建
立在 TCP/IP 之上,所以也是个可靠的传输协议,可以被用作 HTTP 的下层。

因为 HTTPS 相当于“HTTP+SSL/TLS+TCP/IP”,其中的“HTTP”和“TCP/IP”我们都
已经明白了,只要再了解一下 SSL/TLS,HTTPS 也就能够轻松掌握

SSL

SSL 的全称是“Secure Socket Layer”,由网景公司发明,当发展到 3.0 时被标准化,改
名为 TLS,即“Transport Layer Security”,但由于历史的原因还是有很多人称之为
SSL/TLS,或者直接简称为 SSL。
SSL 使用了许多密码学最先进的研究成果,综合了对称加密、非对称加密、摘要算法、数字
签名、数字证书等技术,能够在不安全的环境中为通信的双方创建出一个秘密的、安全的传
输通道,为 HTTP 套上一副坚固的盔甲。

你可以在今后上网时留心看一下浏览器地址栏,如果有一个小锁头标志,那就表明网站启用
了安全的 HTTPS 协议,而 URI 里的协议名,也从“http”变成了“https”

代理

代理(Proxy)是 HTTP 协议中请求方和应答方中间的一个环节,作为“中转站”,既可以
转发客户端的请求,也可以转发服务器的应答

代理有很多的种类,常见的有:

  1. 匿名代理:完全“隐匿”了被代理的机器,外界看到的只是代理服务器;
  2. 透明代理:顾名思义,它在传输过程中是“透明开放”的,外界既知道代理,也知道客
    户端;
  3. 正向代理:靠近客户端,代表客户端向服务器发送请求;
  4. 反向代理:靠近服务器端,代表服务器响应客户端的请求;

CDN,实际上就是一种代理,它代替源站服务器响应客户端的请求,通常扮
演着透明代理和反向代理的角色。

由于代理在传输过程中插入了一个“中间层”,所以可以在这个环节做很多有意思的事情,
比如:

  1. 负载均衡:把访问请求均匀分散到多台机器,实现访问集群化;
  2. 内容缓存:暂存上下行的数据,减轻后端的压力;
  3. 安全防护:隐匿 IP, 使用 WAF 等工具抵御网络攻击,保护被代理的机器;
  4. 数据处理:提供压缩、加密等额外的功能。
    关于 HTTP 的代理还有一个特殊的“代理协议”(proxy protocol),它由知名的代理软
    件 HAProxy 制订,但并不是 RFC 标准,

小结

  1. TCP/IP 是网络世界最常用的协议,HTTP 通常运行在 TCP/IP 提供的可靠传输基础上;
  2. DNS 域名是 IP 地址的等价替代,需要用域名解析实现到 IP 地址的映射;
  3. URI 是用来标记互联网上资源的一个名字,由“协议名 + 主机名 + 路径”构成,俗称
    URL;
  4. HTTPS 相当于“HTTP+SSL/TLS+TCP/IP”,为 HTTP 套了一个安全的外壳;
  5. 代理是 HTTP 传输过程中的“中转站”,可以实现缓存加速、负载均衡等功能。
  网络协议 最新文章
使用Easyswoole 搭建简单的Websoket服务
常见的数据通信方式有哪些?
Openssl 1024bit RSA算法---公私钥获取和处
HTTPS协议的密钥交换流程
《小白WEB安全入门》03. 漏洞篇
HttpRunner4.x 安装与使用
2021-07-04
手写RPC学习笔记
K8S高可用版本部署
mySQL计算IP地址范围
上一篇文章      下一篇文章      查看所有文章
加:2022-02-16 13:30:42  更:2022-02-16 13:31:26 
 
开发: 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/26 9:54:11-

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