网络编程基石课 大话网络协议,探究通信奥秘-基础指南

2024-07-01 23:47:11 浏览数 (2)

1. IP(Internet Protocol)

IP 是互联网协议,负责在网络中传输数据包。

基本原理

  • 无连接:IP 是无连接的协议,不保证数据包的传输。
  • 数据包:数据在网络上传输时被分成小块,称为数据包。
  • IP 地址:每个连接到网络的设备都有一个唯一的 IP 地址,用于标识设备位置。

数据包结构

  • 头部:包含源 IP 地址、目标 IP 地址、版本、长度等信息。
  • 数据:实际传输的数据。

2. TCP(Transmission Control Protocol)

TCP 是传输控制协议,提供可靠的数据传输服务。

基本原理

  • 面向连接:TCP 是面向连接的协议,建立连接(通过三次握手)后传输数据。
  • 可靠传输:TCP 确保数据包按序到达并且无差错。
  • 流量控制:TCP 通过流量控制和拥塞控制机制管理数据传输速度。

三次握手

  1. 客户端发送 SYN(同步序列号)
  2. 服务器接收 SYN 并发送 SYN-ACK(同步序列号确认)
  3. 客户端接收 SYN-ACK 并发送 ACK(确认)

四次挥手

  1. 客户端发送 FIN(终止)
  2. 服务器接收 FIN 并发送 ACK
  3. 服务器发送 FIN
  4. 客户端接收 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 报文分为请求报文和响应报文,两者的结构如下:

请求报文

请求报文由以下几个部分组成:

  1. 请求行(Request Line)
    • 包含请求方法、请求 URI 和 HTTP 版本。
    • 例如:GET /index.html HTTP/1.1
  2. 请求头部(Request Headers)
    • 包含请求的元数据,如主机、用户代理、内容类型等。
    • 例如:Host: www.example.com User-Agent: Mozilla/5.0 Accept-Language: en-US,en;q=0.5APACHE
  3. 空行(CRLF)
    • 用于分隔头部和主体部分。
  4. 请求主体(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

响应报文

响应报文由以下几个部分组成:

  1. 状态行(Status Line)
    • 包含 HTTP 版本、状态码和状态描述。
    • 例如:HTTP/1.1 200 OK
  2. 响应头部(Response Headers)
    • 包含响应的元数据,如内容类型、内容长度等。
    • 例如:Content-Type: text/html Content-Length: 138ARCADE
  3. 空行(CRLF)
    • 用于分隔头部和主体部分。
  4. 响应主体(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 通信遵循请求-响应模式,基本过程如下:

  1. 客户端发起请求
    • 客户端(如 Web 浏览器)向服务器发送 HTTP 请求报文。
    • 请求报文包含请求行、请求头部、空行和请求主体(可选)。
  2. 服务器处理请求
    • 服务器接收到请求报文后,解析请求并处理请求内容。
    • 服务器执行相应的操作(如查找资源、执行程序等)。
  3. 服务器返回响应
    • 服务器生成响应报文并发送回客户端。
    • 响应报文包含状态行、响应头部、空行和响应主体。
  4. 客户端处理响应
    • 客户端接收到响应报文后,解析响应并呈现内容(如在浏览器中显示网页)。

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 加密数据,确保数据传输的安全性。
  • 身份验证:通过数字证书验证服务器身份,防止中间人攻击。

0 人点赞