TCP、UDP、HTTP和WebSocket 之间的区别
TCP(Transmission Control Protocol): TCP是一种可靠的、面向连接的传输层协议。 TCP提供数据传输的可靠性保证,通过序列号、确认应答、重传等机制来确保数据的可靠性和顺序性。 TCP适用于对数据传输可靠性要求较高的场景,如文件传输、电子邮件等。 UDP(User Datagram Protocol): UDP是一种不可靠的、面向无连接的传输层协议。 UDP不提供数据传输的可靠性保证,数据包可能会丢失、乱序或重复。 UDP适用于对实时性要求较高、数据传输速度更重要的场景,如音视频传输、实时游戏等。 HTTP(Hypertext Transfer Protocol): HTTP是基于TCP协议的应用层协议,用于在客户端和服务器之间传输超文本数据。 HTTP是一种无状态的请求-响应协议,每个请求和响应之间是相互独立的。 HTTP适用于传输网页、图片、文本等静态资源,以及进行简单的数据交互。 WebSocket: WebSocket是一种全双工通信协议,建立在HTTP协议之上。 WebSocket允许客户端和服务器之间进行双向实时通信,相比于H...
常见的容器技术有哪些
常见的容器技术主要有以下几种: Docker:Docker是目前最为流行的容器技术之一。它使用了轻量级的虚拟化技术,可以将应用程序及其依赖项打包成一个独立的可移植的容器,使得应用程序的部署、运行和管理变得更加简单和高效。 Kubernetes:Kubernetes是一种用于容器编排和管理的开源平台,可以帮助用户自动化部署、扩展和管理容器化应用程序。它提供了一套完整的容器编排和管理工具,可以轻松地管理大规模的容器化应用程序。 Apache Mesos:Apache Mesos是一个开源的集群管理系统,可以提供高效的资源管理和任务调度。它支持多种应用程序框架,包括Docker、Hadoop和Spark等,可以帮助用户轻松地管理和调度容器化应用程序。 LXC/LXD:LXC(Linux Containers)是一种轻量级的虚拟化技术,它可以在一个Linux系统上运行多个独立的容器。LXD是LXC的管理工具,可以帮助用户轻松地管理和部署LXC容器。 除了以上几种常见的容器技术,还有一些其他的容器技术,比如rkt、OpenVZ、Linux-VServer等,但它们的使用率相对较低。...
PHP 获取客户端ip地址
PHP 获取客户端ip地址 一、如果没有使用代理服务器,REMOTE_ADDR = 客户端IPHTTP_X_FORWARDED_FOR = 没数值或不显示 $ip = $_SERVER['REMOTE_ADDR']; 二、使用透明代理,REMOTE_ADDR = 最后一个代理服务器 IPHTTP_X_FORWARDED_FOR = 客户端真实 IP (经过多个代理服务器时,这个值类似:221.5.252.160, 203.98.182.163, 203.129.72.215) 这类代理还会将客户真实ip发送到请求对象,无法隐藏真实ip。 $ip = $_SERVER['HTTP_X_FORWARDED_FOR']; 三、使用普通匿名代理服务器,REMOTE_ADDR = 最后一个代理服务器 IPHTTP_X_FORWARDED_FOR = 代理服务器 IP (经过多个代理服务器时,这个值类似:203.98.182.163, 203.98.182.163, 203.12...
X-Forwarded-For IP伪造问题处理
这个文章放在云笔记里面半年多了, 出现问题场景是我们从 aws 迁移至 阿里云 之后;优化 api服务 发现有大量用户通过 X-Forwarded-For 仿造客户端IP 从而跨过我们后端对IP做的频率限制. 原理很简单 一般公司服务器都是 在服务最前端放 slb/lvs 这种负载均衡服务, 用户请求的IP 插入 X-Forwarded-For 前面 我们使用加速通道 多层的代理 ; 后端按照如下顺序获取客户端的真实IP HTTP_ALI_CDN_REAL_IP;HTTP_CF_CONNECTING_IP;HTTP_X_CONNECTING_IP;XXXX_Client_IP;USER_REAL_IP; (通过nodejs 将用户的真实ip 透传给用户中心内网) 上述变量详解 HTTP_ALI_CDN_REAL_IP 链路配置了阿里云CDN,则阿里云CDN会传递此变量给后端,变量内的值就是客户端的真实IP地址。 HTTP_CF_CONNECTING_IP 如上,该值是cloudflare提供的客户端真实IP地址。 HTTP_X_CONNECTING_IP 如上,该值是加速乐...
基于acme.sh从Let's encrypt生成免费SSL证书
基于acme.sh从Let’s encrypt生成免费且自动更新的SSL证书0x01 安装 acme.sh$ curl https://get.acme.sh | sh# Or$ wget -O - https://get.acme.sh | sh 执行上面的命令,它会:从 GitHub 上下载 sh 脚本并执行把文件解压到用户的 ~/.acme.sh目录下给命令行设置一个acme.sh的 alias 别名最后注册一个 cron 定时任务来自动更新证书。 安装完成后要自行重启命令行,或者重新加载一下.bashrc文件(source ~/.bashrc)。然后看一下有没有生效。 $ acme.sh -hhttps://github.com/acmesh-official/acme.shv2.8.6Usage: acme.sh command ...[parameters]....Commands: --help, -h Show this help message. --version, -v Show ve...
yum 安装 Redis
YUM安装Redis:由于Centos官方yum源里面没有Redis,我们需要安装一个第三方的yum源,这里用了Fedora的epel仓库,执行命令安装,这里要注意一点,yum 安装的redis 版本不一定是最新的,可以用 yum search redis 来查询安装源中的 redis 版本,默认情况,版本较老。 安装epel仓库: yum install -y epel-release 然后使用 yum install -y redis 安装 redis,yum 安装操作非常简单。 下面使用 cetnos7 systemctl 启动 redis,命令如下: systemctl start redis



