网络协议基本知识
发表于:2024-09-03 |

网络协议基本知识

HTTP版本

HTTP/1.0

HTTP 正式作为标准被公布是在 1996 年的 5 月,版本被命名为 HTTP/1.0,并记载于 RFC1945。虽说是初期标准,但该协议标准至今仍 被广泛使用在服务器端。
https://www.ietf.org/rfc/rfc1945.txt

HTTP/1.1

1997 年 1 月公布的 HTTP/1.1 是目前主流的 HTTP 协议版本。当初 的标准是 RFC2068,之后发布的修订版 RFC2616 就是当前最广泛使用的版本。
https://www.ietf.org/rfc/rfc2616.txt

HTTP/2.0

2015年HTTP/2.0正式发表。
https://www.ietf.org/rfc/rfc7540.txt

TCP/IP协议族

与互联网相关联的协议集合起来总称为TCP/IP。
网络是在TCP/IP协议族的基础上运作的,而HTTP属于它的一个子集。

TCP/IP的分层

应用层

各类通用的应用服务。
如 FTP、DNS、HTTP。

传输层

传输层对上层应用层,提供处于网络连接中的两台计算机之间的数据传输。
如 TCP(Transmission Control Protocol,传输控制协议)和 UDP(User Data Protocol,用户数据 报协议)

网络层

网络层用来处理在网络上流动的数据包。数据包是网络传输的最小数据单位。该层规定了通过怎样的路径(所谓的传输路线)到达对方计算机,并把数据包传送给对方。

链路层

用来处理连接网络的硬件部分。

TCP/IP通信传输流

image.png

这种把数据包装起来的做法叫做封装

IP协议

IP实际上指IP协议的名称,注意不要搞混IP和IP地址。
IP协议的作用是把各种数据包传送给对方。而要保证确实传送到对方那里,则需要满足各类条件。其中两个重要的条件是 IP 地址MAC 地址(Media Access Control Address)
IP 地址指明了节点被分配到的地址,MAC 地址是指网卡所属的固定地址。IP 地址可以和 MAC 地址进行配对。IP 地址可变换,但 MAC 地址基本上不会更改

ARP协议

IP 间的通信依赖 MAC 地址。在网络上,通信的双方在同一局域网 (LAN)内的情况是很少的,通常是经过多台计算机和网络设备中转才 能连接到对方。而在进行中转时,会利用下一站中转设备的 MAC 地址来搜索下一个中转目标。这时,会采用 ARP 协议(Address Resolution Protocol)。ARP 是一种用以解析地址的协议,根据通信方的 IP 地址就可以反查出对应的 MAC 地址。
image.png

TCP协议

TCP 位于传输层,提供可靠的字节流服务。
字节流服务是指,为了方便传输, 将大块数据分割成以报文段(segment)为单位的数据包进行管理。TCP 协议为了更容易传送大数据才把数据分割,而且 TCP 协议能够确认数据最终是否送达到对方。
为了准确无误地将数据送达目标处,TCP 协议采用了三次握手策略
image.png
若在握手过程中某个阶段莫名中断,TCP 协议会再次以相同的顺序发送相同的数据包。

DNS协议

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

各协议与HTTP的关系

image.png

URL和URI

URI( Uniform Resource Identifier 统一资源标识符)
URL (Uniform Resource Locator 统一资源定位符)
其中URI包含URL

URI格式

绝对URI的格式如下
image.png

HTTP中的方法

GET

image.png

POST

image.png

PUT

image.png

image.png

DELETE

image.png

OPTIONS

image.png

TRACE

image.png

CONNECT

image.png
CONNECT 方法要求在与代理服务器通信时建立隧道,实现用隧道协议进行 TCP 通信。主要使用 SSL(Secure Sockets Layer,安全套接 层)和 TLS(Transport Layer Security,传输层安全)协议把通信内容加密后经网络隧道传输 。

持久连接

image.png

管线化

image.png

Cookie

Cookie会根据从服务器端发送的响应报文内的一个叫做 Set-Cookie 的首部字段信息,通知客户端保存 Cookie。当下次客户端再往该服务器 发送请求时,客户端会自动在请求报文中加入 Cookie 值后发送出去。
服务器端发现客户端发送过来的 Cookie 后,会去检查究竟是从哪一个客户端发来的连接请求,然后对比服务器上的记录,最后得到之前的状态信息。

HTTP报文

image.png
image.png

请求行

包含用于请求的方法,请求 URI 和 HTTP 版本。

状态行

包含表明响应结果的状态码,原因短语和 HTTP 版本。

首部字段

包含表示请求和响应的各种条件和属性的各类首部。

范围请求

执行范围请求时,会用到首部字段 Range 来指定资源的 byte 范围。 byte 范围的指定形式如下。

1
2
3
4
5
6
//5001~10 000 字节
Range: bytes=5001-10000
//从 5001 字节之后全部的
Range: bytes=5001-
//从一开始到 3000 字节和 5000~7000 字节的多重范围
Range: bytes=-3000, 5000-7000

针对范围请求,响应会返回状态码为 206 Partial Content 的响应报 文。另外,对于多重范围的范围请求,响应会在首部字段 Content-Type 标明 multipart/byteranges 后返回响应报文。 如果服务器端无法响应范围请求,则会返回状态码 200 OK 和完整 的实体内容 。

状态码

1XX Informational(信息性状态码) 接收的请求正在处理
2XX Success(成功状态码) 请求正常处理完毕
3XX Redirection(重定向状态码) 需要进行附加操作以完成请求
4XX Client Error(客户端错误状态码) 服务器无法处理请求
5XX Server Error(服务器错误状态码) 服务器处理请求出错

200 OK

image.png

204 No content

image.png

206 Partial Content

image.png

301 Moved Permanently

image.png

302 Found

image.png

303 See other

image.png
303 状态码和 302 Found 状态码有着相同的功能,但 303 状态码明确表示客户端应当采用 GET 方法获取资源,这点与 302 状态码有区别。

304 Not Modified

image.png

307 Temporary Redirect

临时重定向。该状态码与 302 Found 有着相同的含义。尽管 302 标 准禁止 POST 变换成 GET,但实际使用时大家并不遵守 。

400 Bad Request

image.png

401 Unauthorized

image.png

403 Forbidden

image.png

404 Not Found

image.png
该状态码表明服务器上无法找到请求的资源。除此之外,也可以在 服务器端拒绝请求且不想说明理由时使用。

500 Internal Server Error

image.png

503 Service Unavailable

image.png

HTTPS

HTTPS 并非是应用层的一种新协议。只是 HTTP 通信接口部分用 SSL(Secure Socket Layer)和 TLS(Transport Layer Security)协议代替而已。

下一篇:
通过部署alist挂载各大网盘资源