1. IP(Internet Protocol)
IP 是互联网协议,负责在网络中传输数据包。
基本原理
- 无连接:IP 是无连接的协议,不保证数据包的传输。
- 数据包:数据在网络上传输时被分成小块,称为数据包。
- IP 地址:每个连接到网络的设备都有一个唯一的 IP 地址,用于标识设备位置。
数据包结构
- 头部:包含源 IP 地址、目标 IP 地址、版本、长度等信息。
- 数据:实际传输的数据。
2. TCP(Transmission Control Protocol)
TCP 是传输控制协议,提供可靠的数据传输服务。
基本原理
- 面向连接:TCP 是面向连接的协议,建立连接(通过三次握手)后传输数据。
- 可靠传输:TCP 确保数据包按序到达并且无差错。
- 流量控制:TCP 通过流量控制和拥塞控制机制管理数据传输速度。
三次握手
- 客户端发送 SYN(同步序列号)。
- 服务器接收 SYN 并发送 SYN-ACK(同步序列号确认)。
- 客户端接收 SYN-ACK 并发送 ACK(确认)。
四次挥手
- 客户端发送 FIN(终止)。
- 服务器接收 FIN 并发送 ACK。
- 服务器发送 FIN。
- 客户端接收 FIN 并发送 ACK。
3. UDP(User Datagram Protocol)
UDP 是用户数据报协议,提供不可靠的数据传输服务。
基本原理
- 无连接:UDP 是无连接的协议,不建立连接。
- 不可靠传输:UDP 不保证数据包的传输和顺序。
- 低延迟:由于没有连接建立和确认机制,UDP 的传输速度比 TCP 快。
数据包结构
- 头部:包含源端口、目标端口、长度、校验和等信息。
- 数据:实际传输的数据。
4. HTTP(HyperText Transfer Protocol)
HTTP 是超文本传输协议,用于在 Web 浏览器和服务器之间传输数据。
基本原理
- 无状态:HTTP 是无状态协议,每次请求都是独立的。
- 基于请求-响应:客户端发送请求,服务器返回响应。
- 使用 TCP:HTTP 使用 TCP 连接进行数据传输。
HTTP 报文结构
- 请求报文:
- 请求行:包含请求方法(GET、POST 等)、请求 URL 和 HTTP 版本。
- 请求头部:包含元数据,如主机、用户代理等。
- 请求体:包含实际发送的数据(POST 请求时使用)。
- 响应报文:
- 状态行:包含 HTTP 版本、状态码(200、404 等)和状态描述。
- 响应头部:包含元数据,如内容类型、内容长度等。
- 响应体:包含实际返回的数据。
常用的 HTTP 方法
- GET:请求指定资源。
- POST:向指定资源提交数据。
- PUT:上传指定资源。
- DELETE:删除指定资源。
HTTP 协议结构和通讯原理
1. HTTP 概述
HTTP(HyperText Transfer Protocol)是用于在客户端和服务器之间传输超文本数据的协议,主要用于 Web 浏览器与 Web 服务器之间的通信。HTTP 是一个无状态的、基于请求-响应的协议,运行在 TCP/IP 协议之上。
2. HTTP 报文结构
HTTP 报文分为请求报文和响应报文,两者的结构如下:
请求报文
请求报文由以下几个部分组成:
- 请求行(Request Line):
- 包含请求方法、请求 URI 和 HTTP 版本。
- 例如:
GET /index.html HTTP/1.1
- 请求头部(Request Headers):
- 包含请求的元数据,如主机、用户代理、内容类型等。
- 例如:Host: www.example.com User-Agent: Mozilla/5.0 Accept-Language: en-US,en;q=0.5APACHE
- 空行(CRLF):
- 用于分隔头部和主体部分。
- 请求主体(Request Body):
- 包含实际发送的数据,通常在 POST 请求中使用。
请求报文示例
代码语言:javascript复制GET /index.html HTTP/1.1
Host: www.example.com
User-Agent: Mozilla/5.0
Accept-Language: en-US,en;q=0.5
HTTP
响应报文
响应报文由以下几个部分组成:
- 状态行(Status Line):
- 包含 HTTP 版本、状态码和状态描述。
- 例如:
HTTP/1.1 200 OK
- 响应头部(Response Headers):
- 包含响应的元数据,如内容类型、内容长度等。
- 例如:Content-Type: text/html Content-Length: 138ARCADE
- 空行(CRLF):
- 用于分隔头部和主体部分。
- 响应主体(Response Body):
- 包含实际返回的数据。
响应报文示例
代码语言:javascript复制HTTP/1.1 200 OK
Content-Type: text/html
Content-Length: 138
<html>
<head><title>Example</title></head>
<body><p>Hello, World!</p></body>
</html>HTTP
3. HTTP 通讯原理
HTTP 通信遵循请求-响应模式,基本过程如下:
- 客户端发起请求:
- 客户端(如 Web 浏览器)向服务器发送 HTTP 请求报文。
- 请求报文包含请求行、请求头部、空行和请求主体(可选)。
- 服务器处理请求:
- 服务器接收到请求报文后,解析请求并处理请求内容。
- 服务器执行相应的操作(如查找资源、执行程序等)。
- 服务器返回响应:
- 服务器生成响应报文并发送回客户端。
- 响应报文包含状态行、响应头部、空行和响应主体。
- 客户端处理响应:
- 客户端接收到响应报文后,解析响应并呈现内容(如在浏览器中显示网页)。
4. 常用 HTTP 方法
GET
- 用于请求指定的资源。
- 请求参数附加在 URL 之后。
- 请求报文不包含请求主体。
POST
- 用于向指定的资源提交数据。
- 请求参数放在请求主体中。
- 通常用于提交表单数据。
PUT
- 用于上传资源到服务器。
- 如果资源不存在则创建,存在则更新。
DELETE
- 用于删除指定的资源。
HEAD
- 类似 GET 方法,但只请求资源的头部信息,不返回主体。
OPTIONS
- 用于请求指定资源的通信选项(HTTP 方法支持情况)。
PATCH
- 用于局部更新资源。
5. HTTP 状态码
1xx 信息响应
- 100 Continue
- 101 Switching Protocols
2xx 成功
- 200 OK
- 201 Created
- 202 Accepted
3xx 重定向
- 301 Moved Permanently
- 302 Found
- 304 Not Modified
4xx 客户端错误
- 400 Bad Request
- 401 Unauthorized
- 403 Forbidden
- 404 Not Found
5xx 服务器错误
- 500 Internal Server Error
- 502 Bad Gateway
- 503 Service Unavailable
6. HTTPS(HTTP Secure)
- HTTPS 是 HTTP 的安全版本,使用 SSL/TLS 加密通信。
- 加密:使用 SSL/TLS 加密数据,确保数据传输的安全性。
- 身份验证:通过数字证书验证服务器身份,防止中间人攻击。