iOS 开发 网络编程详解之基本网络通信过程

本文详细介绍了HTTP通信模型,包括客户端向服务器发起请求的过程和服务器响应的流程。具体讲解了请求行、请求头、请求体以及响应行、响应头、响应体的概念,并列举了常见的状态码。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

基本网络通信模型

这里写图片描述

请求

HTTP协议规定:一个完整的由客户端发给服务器的 HTTP 请求 需要包含以下内容

  • 请求行
  • 请求头
  • 请求体(可选)

这里写图片描述

  • 请求行
    请求行:指定 请求方法、请求资源路径 以及 HTTP协议版本.
GET / HTTP/1.1

GET / 后面的 / 表示访问根目录

  • 请求头
    请求头:对客户端的环境描述、客户端请求的主机地址等信息.至少包含以
//客户端要访问的服务器主机地址
Host: www.baidu.com

中还可以包含以下信息,告诉服务器一些额外的信息

# 访问结束后,是否断开连接
Connection: keep-alive
# 是否缓存数据
Cache-Control: max-age=0
# 客户端所能接收的数据类型
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
# 客户端的类型,客户端的软件环境
User-Agent: iPhone AppleWebKit
# 客户端支持的数据压缩格式
Accept-Encoding: gzip, deflate, sdch
# 客户端的语言环境
Accept-Language: zh-CN,zh;q=0.8,en;q=0.6
  • 请求体
    请求体(可选):客户端发给服务器的具体数据,例如要上传的文件数据

    • GET请求没有请求体.
    • POST请求有请求体.告诉服务器一些类似于用户名和密码的信息.比如注册和登陆.
  • 请求格式
    每一项请求信息末尾使用 \r\n
    最后一个请求项末尾使用 \r\n\r\n 表示请求结束

响应

HTTP协议规定:一个完整的 HTTP 响应包含以下内容:

  • 响应行
  • 响应头
  • 响应体

这里写图片描述

  • 状态行
    状态行:包含了HTTP协议版本、状态码、状态英文名称
# 请求成功
HTTP/1.1 200 OK
# 内容无变化
HTTP/1.1 304 Not Modified
  • 状态码
    1XX 消息
    2XX 成功
    3XX 更多选择
    4XX 客户端错误
    5XX 服务器错误

  • 响应头
    响应头:服务器告诉客户端一些信息.包含了对服务器的描述、对返回数据的描述

# 服务器的类型
Server: Apache/2.4.10 (Unix) PHP/5.5.20
# 返回数据的类型
Content-Type: text/html; charset=utf-8
# 返回数据的长度
Content-Length: 660
# 响应时间
Date: Thu, 04 Jun 2015 19:31:50 GMT
# ETag(HASH值,用于检测本地资源和服务器资源是否一致)
ETag: "294-4e1862f57e7c0"
  • 注意 :
    请求发送的和响应返回的额外信息都是键值对的形式.
    text/html : 大文件类型/小文件类型. 比如 : image/png.

  • 响应体
    响应体:服务器返回给客户端的二进制数据

这里写图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值