
网络编程
文章平均质量分 93
zzhongcy
因为站在了巨人的肩上,所以我看得更远。
当你发现自己的才华撑不起野心时,就请安静下来学习吧
展开
-
TLS1.3比TLS1.2更安全在哪里
目前普遍采用的方案都是TLS1.2,据了解,由于技术和成本的限制,目前还没有采用TLS1.3协议,不知在未来的信息安全技术选择上是否会有所改变。从图中可以看到,SSL/TSL层的加入,建立了一个安全连接(对传输的数据提供加密保护,可防止被中间人嗅探到可见的明文;通过对数据完整性的校验,防止传输数据被中间人修改)和一个可信的连接(对连接双方的实体提供身份认证)。图2:TLS1.2的握手图解。该协议由两部分组成: TLS记录协议(TLS Record)和 TLS握手协议(TLS Handshake)。转载 2023-09-11 15:07:40 · 1062 阅读 · 0 评论 -
cookie和localStorage详解
网上看到这篇文章,这里记录学习一下。一文带你看懂cookie,面试前端不用愁 - 知乎前言 在前端面试中,有一个必问的问题:请你谈谈cookie和localStorage有什么区别啊? localStorage是H5中的一种浏览器本地存储方式,而实际上,cookie本身并不是用来做服务器存储的。但在 localStorage 出现之前,cookie被滥用当做了存储工具,什么数据都放在cookie中,即使这些数据只在页面中使用、而不需要随请求传送到服务端(当然cooki...转载 2022-03-31 16:57:06 · 6267 阅读 · 3 评论 -
LVS集群-NAT模式、DR模式、IP-TUN模式详解
LVS系列一、LVS集群-NAT模式一、集群概述1、什么是集群? 一组各自相互独立且又相互依赖的,通过高速网络互联的计算机组成的一个计算机组, 以单一的系统模式加以管理, 为用户提供服务, 对用户来说, 用户只会认为对方是一个服务. 这个里面, 一组计算机的一台计算机就是集群的一个节点2、 集群的特性: 可伸缩性, 可靠性, 可管理性...转载 2020-03-20 11:13:17 · 3765 阅读 · 0 评论 -
GTM(Global Traffic Manager)和GSLB(Global Server Load Balancing)服务介绍
最近看到一篇关于GSLB的文章,写的非常不错,学习了一下,这里做一些记录。一、GTM介绍GTM(Global Traffic Manager的简写)即全局流量管理,基于网宿智能DNS、分布式监控体系,实现实时故障切换及全球负载均衡,保障应用服务的持续高可用性。GTM基于资源的健康状况及流量负载做智能调度决策,为用户提供最佳访问IP。网宿GTM,提供更可靠、稳定和安全的流量调度服务,助您轻松...转载 2020-01-14 16:24:50 · 5664 阅读 · 0 评论 -
使用redis来调用iptables,封禁恶意IP
话不多说,通常大多数站点都会有被薅羊毛的情况,防护无非也就是业务层做处理,短时内不再响应恶意请求啦.虽然不响应了,可还是会消耗资源的,比如我要从数据库(当然也可能是内存数据库)去查询下,你是不是恶意的IP. 那么能否网络层或应用层去处理呢?在前几篇文章有写过应用层方案,今天就写下网络层方法. 说起iptables 除非是专业人员,像普通开发者是不会使用的,一堆表一堆链的一...转载 2019-04-02 16:56:01 · 399 阅读 · 0 评论 -
负载均衡说明(二层/三层/四层/七层负载), 以及Nginx/LVS/HAProxy负载均衡软件的优缺点详解(总结)
一. 什么是负载均衡 1)负载均衡(Load Balance)建立在现有网络结构之上,它提供了一种廉价有效透明的方法扩展网络设备和服务器的带宽、增加吞吐量、加强网络数据处理能力、提高网络的灵活性和可用性。负载均衡有两方面的含义:首先,大量的并发访问或数据流量分担到多台节点设备上分别处理,减少用户等待响应的时间;其次,单个重负载的运算分担到多台节点设备上做并行处理,每个节点设备处理结束后...转载 2014-10-13 15:48:56 · 12860 阅读 · 3 评论 -
LVS负载均衡(LVS简介、三种工作模式、十种调度算法)
负载均衡集群是 load balance 集群的简写,翻译成中文就是负载均衡集群。常用的负载均衡开源软件有nginx、lvs、haproxy,商业的硬件负载均衡设备F5、Netscale。这里主要是学习 LVS 并对其进行了详细的总结记录。一、LVS简介LVS(Linux Virtual Server)即Linux虚拟服务器,是由章文嵩博士主导的开源负载均衡项目,目...转载 2019-03-26 16:00:42 · 1617 阅读 · 0 评论 -
亿级Web系统搭建:单机到分布式集群
当一个Web系统从日访问量10万逐步增长到1000万,甚至超过1亿的过程中,Web系统承受的压力会越来越大,在这个过程中,我们会遇到很多的问题。为了解决这些性能压力带来问题,我们需要在Web系统架构层面搭建多个层次的缓存机制。在不同的压力阶段,我们会遇到不同的问题,通过搭建不同的服务和架构来解决。一、Web负载均衡 Web负载均衡(Load Balancing),简单...转载 2019-03-26 15:35:50 · 407 阅读 · 0 评论 -
超时与重试机制
网上发现这篇好文章,这里记录学习。介绍 在实际开发过程中,笔者见过太多故障是因为超时没有设置或者设置的不对而造成的。而这些故障都是因为没有意识到超时设置的重要性而造成的。如果应用不设置超时,则可能会导致请求响应慢,慢请求累积导致连锁反应,甚至应用雪崩。而有些中间件或者框架在超时后会进行重试(如设置超时重试两次),读服务天然适合重试,但写服务大多不能重试(如写订单,如果写服务是幂等...转载 2019-03-15 17:21:16 · 7711 阅读 · 1 评论 -
Linux下高性能网络编程中的几个TCP/IP选项
_SO_REUSEADDR、SO_RECVBUF、SO_SNDBUF、SO_KEEPALIVE、SO_LINGER、TCP_CORK、TCP_NODELAY等 最近在新的平台上测试程序,以前一些没有注意到的问题都成为了性能瓶颈,通过设置一些TCP/IP选项能够解决一部分问题,当然根本的解决方法是重构代码,重新设计服务器框架。先列出几个TCP/IP选项:转载 2014-03-24 22:18:16 · 1202 阅读 · 0 评论 -
WSAEventSelect模型
WSAEventSelect模型 WSAEventSelect模型也是I/O模型中较为常用的一个异步模型,它也允许应用程序在一个或多个套接字上,接收以事件为基础的网络事件通知。该模型最主要是将网络事件投递至一个事件对象句柄。 事件通知 事件通知模型要求我们的应用程序针对打算使用的每一个套接字,首先创建一个事件对象。创建方法是调用WSACreateEv转载 2014-03-24 22:20:56 · 1275 阅读 · 0 评论 -
WinSock IO模型 实例
WSAEventSelect模型事件触发条件说明1. FD_READ事件 调用WSAEventSelect函数时,如果当前有数据可读 有数据到达时,并且没有发送过FD_READ事件 调用recv/recvfrom函数后,仍然有数据可读时2. RD_WRITE事件 调用WSAEventSelect函数时,如果调用能够发送数据时 调用con原创 2014-03-24 22:19:54 · 1315 阅读 · 0 评论 -
再论Tcp Udp 发送、接收 0字节问题
再论Tcp Udp 发送、接收 0字节问题发送时Tcp建立连接时,3次握手的每个报文都是data区为0字节,所以说发送0字节没有问题。建立连接后,再发送0字节大小也没有问题(api:send,发送后返回值为发包的大小) Udp可以发送0字节大小报文。(api:转载 2014-08-03 21:43:18 · 3578 阅读 · 0 评论 -
同步,异步,阻塞,非阻塞
转自:http://www.cnblogs.com/ayanmw/archive/2012/03/28/2421211.html 同步(synchronous) IO和异步(asynchronous) IO,阻塞(blocking) IO和非阻塞(non-blocking)IO分别是什么,到底有什么区别?这个问题其实不同的人给出的答案都可能不同,比如wiki,就认为asynchr转载 2014-07-31 10:01:50 · 778 阅读 · 0 评论 -
端口状态 LISTENING、ESTABLISHED、TIME_WAIT及CLOSE_WAIT详解,以及三次握手,滑动窗口
网上查了一下端口状态的资料,我下面总结了一下,自己学习学习:TCP状态转移要点 TCP协议规定,对于已经建立的连接,网络双方要进行四次握手才能成功断开连接,如果缺少了其中某个步骤,将会使连接处于假死状态,连接本身占用的资源不会被释放。网络服务器程序要同时管理大量连接,所以很有必要保证无用连接完全断开,否则大量僵死的连接会浪费许多服务器资源。在众多TCP状态中,最值得注意的状态有两个:C......原创 2014-08-26 17:45:36 · 179836 阅读 · 9 评论 -
ET(边缘触发)LT(水平触发)区别
边缘触发(Edge Trigger)和水平chuf条件触发(Level Trigger)转载 2014-08-18 12:53:08 · 3224 阅读 · 0 评论 -
Win socket编程--IOCP完成端口模型
一、为什么选用完成端口网络通信方式大致有以下几种:同步方式:所有操作在一个线程内顺序执行,则通信操作会阻塞同一线程其他操作。同步+多线程方式:服务器端为每一个连入的客户端建立一个线程进行通信,但当客户端过多时,建立大量线程占用过多资源,而且CPU需要很多时间进行线程的切换。完成端口:让所有的通信请求排到队列中,利用事先建立的少量几个线程依次处理队列中的请求,因为线程数量少,无需用大转载 2014-08-18 11:22:49 · 4119 阅读 · 1 评论 -
IO设计模式介绍
本文译自http://chamibuddhika.wordpress.com/2012/08/11/io-demystified/原作者:Buddhika Chamith译者:54chen翻译 2014-10-17 11:29:28 · 1930 阅读 · 0 评论 -
TCP_NODELAY/SO_LINGER/SO_NOSIGPIPE/MSG_NOSIGNAL设置
下面是TCP_NODELAY/SO_LINGER/SO_NOSIGPIPE/MSG_NOSIGNAL的设置方法:其中由于平台的不同,区分SO_NOSIGPIPE和MSG_NOSIGNAL有所分区: int optval = 1; // turn off SIGPIPE signal#ifdef __linux__ setsockopt(m_Sockfd,原创 2015-01-27 11:38:43 · 5307 阅读 · 0 评论 -
TCP socket如何判断连接断开
1、SocketSO_KEEPALIVE不能取代心跳线程的原因(1)SO_KEEPALIVE是系统底层的机制,用于系统维护每一个tcp连接的。(2)心跳线程属于应用层,主要用于终端和服务器连接的检查。 即使SO_KEEPALIVE检测到连接正常,但并不能保证终端和服务器连接的正常。有一种情况,服务器进程死了,但它和客户端的tcp连接还连着(该连接由系统维护的)。...原创 2014-03-24 22:13:25 · 50287 阅读 · 5 评论 -
网络服务器-解决服务器大量TIME_WAIT而无法访问的方法
前段时间我在进行线上项目压力测试的时候,遇到了一个吞吐量的性能问题,当时我的Server和Client之间的通信协议采用了Json Over HTTP的方式(并且在同一个机器上面,其实应该是出现在Client的那个机器上),而且由于Client的实现原因,没有任何KeepAlive机制,同时必须有大量的请求,这样就造成一个问题,客户端的请求端口会迅速被使用完成,然后系统会有大量的TIME_WAIT转载 2015-05-13 12:06:01 · 2701 阅读 · 0 评论 -
不同机子tcp报文转发
服务器A只配置有内网IP,服务器B配置有内外网IP,但是与服务器A处在不同网段内且ping不通。现在有这么个需求,服务器B需要与服务器A的某个应用程序通讯,有下面几种办法:1. iptables端口映射2. SSH隧道这两种方法不在这里介绍了。3. 代理在既可以与服务器A通讯又可以与服务器B通讯的服务器上配置一个tcp代理。把访问本机的2013端口的所有请求代理到10.1.27转载 2015-06-10 17:30:22 · 1452 阅读 · 0 评论 -
开源C/C++网络库比较:ACE、livevent、mongoose和Boost
这几天一直在做linux大批量数据的解决方案,不断的深入了解了一下aio,epoll,libevent,boost::asio。以前只知道他们都是做异步/非阻塞的,但是具体解决的问题的关键点是什么,通过这几天的深入了解,把他们总结一下: aio是linux2.6以后内核实现的异步IO,或者说他才是真正意义上的异步IO。 epoll作为select的linux的替代品,解决了select...转载 2019-01-02 14:02:33 · 4979 阅读 · 0 评论 -
Nginx根据Status保存日志,及ngx_http_log_module 模块介绍
前言 Nginx日志对于统计、系统服务排错很有用。Nginx日志主要分为两种:access_log(访问日志)和error_log(错误日志)。通过访问日志我们可以得到用户的IP地址、浏览器的信息,请求的处理时间等信息。错误日志记录了访问出错的信息,可以帮助我们定位错误的原因。本文将详细描述一下如何配置Nginx日志。设置access_log访问日志主要记录客户端的请求...原创 2019-01-10 09:55:27 · 2716 阅读 · 0 评论 -
在write或send过程中——网络断了
(iptables封端口,拔网线,对端宕机)—此时应用程序和操作系统都认为连接还是存在的。 Client端在没有收到Server端的ACK的情况下,会连续重传。 Linux2.6内核下测试结果为重传16次,总时常为15分钟左右,write或send将返回ETIMEOUT错误,同时发送RST包给Server端。 连续重传之间的时间差,分别是0.2、0原创 2014-03-24 22:16:37 · 2766 阅读 · 0 评论