本文最后更新于:2023年12月5日 晚上
Socket 套接字
套接字 Socket 是进程间通信 IPC 的一种实现,允许位于不同主机(或同一主机)上不同进程之间进行通信和数据交换,SocketAPI 出现于 1983 年 BSD 4.2 实现
在建立通信连接的每一端,进程间的传输要有两个标志:IP 地址和端口号,合称为套接字地址 socket address
客户机套接字地址定义了一个唯一的客户进程
服务器套接字地址定义了一个唯一的服务器进程
Socket API
封装了内核中所提供的 socket 通信相关的系统调用
Socket Domain:根据其所使用的地址
Socket Type:根据使用的传输层协议
客户/服务器程序的套接字函数
http 协议及报文头部结构
Method 方法
请求方法,标明客户端希望服务器对资源执行的动作
- GET: 从服务器获取一个资源
- HEAD: 只从服务器获取文档的响应首部
- POST: 向服务器输入数据,通常会再由网关程序继续处理
- PUT: 将请求的主体部分存储在服务器中,如上传文件
- DELETE: 请求删除服务器上指定的文档
- TRACE: 追踪请求到达服务器中间经过的代理服务器
- OPTIONS:请求服务器返回对指定资源支持使用的请求方法
- CONNECT:建立一个到由目标资源标识的服务器的隧道
- PATCH:用于对资源应用部分修改
status 状态码
参考资料:https://developer.mozilla.org/zh-CN/docs/Web/HTTP/Status
关于 301 和 302:
用户输入了你不希望输入的 url 或者说是没用的 url,用 301 重定向,例如 http 转到 https、旧域名转到新域名;
因为业务逻辑临时跳转,用 302 重定向,例如用户直接访问管理后台就临时跳转到登录页面
web 相关工具
links
wget
常用选项:
curl
curl 是基于 URL 语法在命令行方式下工作的文件传输工具,它支持 FTP,FTPS,HTTP,HTTPS,GOPHER,TELNET,DICT,FILE 及 LDAP 等协议。curl 支持 HTTPS 认证,并且支持 HTTP 的 POST、PUT 等方法,FTP 上传,kerberos 认证,HTTP 上传,代理服务器,cookies,用户名/密码认证,下载文件断点续传,上载文件断点续传,http 代理服务器管道( proxy tunneling),还支持 IPv6,socks5 代理服务器,通过 http 代理服务器上传文件到 FTP 服务器等,功能十分强大
httpie
httpie 工具是现代的 HTTP 命令行客户端,它能通过命令行界面与 Web 服务进行交互。它提供一个简单的 http 命令,允许使用简单而自然的语法发送任意的 HTTP 请求,并会显示彩色的输出
httpie 能用于测试、调试及与 HTTP 服务器交互
- 具表达力的和直观语法
- 格式化的及彩色化的终端输出
- 内置 JSON 支持
- 表单和文件上传
- HTTPS、代理和认证任意请求数据
- 自定义头部
- 持久化会话
- 类似 wget 的下载
- 支持 Python 2.7 和 3.x
官方网站:https://httpie.org
安装:基于 EPEL(CentOS 8 目前还不支持)
范例:
范例:查看信息及相应头
范例:查看请示和响应头部及信息
范例:查看响应报文头部
范例: 查看请求和响应报文头部
范例:指定请求头部的首部字段
范例:下载资源
范例:用 POST 方法提交 json 格式的数据
范例:用 POST 方法,指交表单数据
压力测试工具
ab 来自 httpd-tools 包
option:
- -n:总请求数
- -c:模拟的并发数
- -k:以持久连接模式测试