七层架构 | 四层架构 | 对应网络协议 |
---|---|---|
应用层 | 应用层 | HTTP、TFTP、FTP、SMTP |
表示层 | Telnet | |
会话层 | SMTP、DNS | |
传输层 | 传输层 | TCP、UDP |
网络层 | 网络层 | IP、ICMP、ARP、UUCP |
数据链路层 | 数据链路层 | FDDI、Ethernet |
物理层 | IEEE 802.1A、IEEE 802.2 |
知名端口号:0-1023 动态端口号:1024-65535
端口 | 备注 |
---|---|
80 | HTTP |
443 | HTTPS |
3306 | MYSQL |
21 | FTP |
22 | SSH |
53 | DNS |
25 | SMTP |
1521 | ORADE 数据库 |
23 | telnet |
UDP | TCP | |
---|---|---|
连接 | 无连接 | 面向连接 |
速度 | 无需建立连接,速度较快 | 常需要建立连接,速度较快 |
目的主机 | 一对一,一对多 | 仅能一对一 |
带宽 | UDP 报头较短,消耗带宽更少 | 消耗更多带宽 |
消息边界 | 有 | 无 |
可靠性 | 低 | 高 |
顺序 | 无序 | 有序 |
三次握手四次挥手过程
组成:协议+域名+资源路径
get:
请求行 ----- 请求方式、请求路径、协议版本
请求头
空行
post:
请求行
请求头
空行
请求体
一个 HTTP 请求报文可以由请求行、请求头、空行和请求体 4 个部分组成。
请求行是由三部分组成:
- 请求方式
- 请求资源路径
- HTTP 协议版本
GET 方式的请求报文没有请求体,只有请求行、请求头、空行组成。
请求数据,参数长度有限制,参数在 url
POST 方式的请求报文可以有请求行、请求头、空行、请求体四部分组成,
提交数据,参数长度没有限制,参数在请求体
DELECT 删除
PUT 修改
状态类型 | 状态码和状态信息 | 含义 |
---|---|---|
1xx 信息 | 100 | 服务器收到了客户端的请求行和头部信息,告诉客户端继续发送数据部分,客户端通常需要先发送 Expect: 100-continue 头部字段告诉服务器自己还有数据要发送 |
2xx 成功 | 200 | 请求成功 |
3xx 重定向 | 301 | 资源被转移了,请求将被重定向 |
302 | 通知客户端资源能在别的地方找到,但需要使用 GET 方法来获得它 | |
304 | 表示被申请的资源没有更新,和之前获得的相同 | |
307 | 通知客户端资源能在其他地方找到,与 302 不同的是,客户端可以使用和原始请求相同的请求方法来访问目标资源 | |
4xx 客户端错误 | 400 | 通用客户请求错误 |
401 | 请求需要认证信息 | |
403 | 访问被服务器禁止,通常是由于客户端没有权限访问该资源 | |
404 | 资源没有找到 | |
407 | 客户端需要先获得代理服务器的认证 | |
5xx 服务器错误 | 500 | 通用服务器错误 |
503 | 暂时无法访问服务器 |
Host: | 请求的目标域名 | * | |
---|---|---|---|
Referer : | 防盗链 | 请求 | |
User-Agent: | 客户端信息 | * | 请求 |
Accept: | 客户端期望接受的数据类型 | 请求 | |
Accept-Encoding: | 客户端期望接受的压缩格式 | 请求 | |
Accept-Language: | 客户端可以接受的语言 | 请求 | |
Connection: | 如果值是 keep-alive 就是可以支持 TCP 长连接 | 请求/响应 | |
Connect-Type: | 标明请求体或响应体的数据类型 | * | 请求/响应 |
Content-Length: | 请求体响应体内数据长度 | * | 请求/响应 |
Date: | 服务器返回数据的时间 | 响应 | |
Cache-Contorl: | 缓存方式 | ||
Last-Modified: | 服务器资源最后一次修改的时间 | * | |
Cookie: | 表示用户身份信息 | * | 请求 |
Set-Cookie: | 服务器返回客户端之后请求需要携带的 Cookie 信息 | * | 响应 |