accept

Socket通讯编程

大憨熊 提交于 2019-12-06 13:07:20
此随笔是站在巨人的肩膀上总结的! 1)socket的概念   Socket也称‘套接字’,用于描述IP地址和端口,是一个通讯链的句柄,可以用来实现不同虚拟机或不同计算机之间的通信。网络上的两个程序通过一个双向的通信连接实现数据的交换,这个连接的一端称为一个Socket。建立网络通信连接至少是要一对端口号(Socket)。   Socket本质是编程接口,是对TCP/IP的封装。Socket编程接口——程序员进行网络开发所用接口。比喻一番:如果说HTTP是轿车,提供了封装或者显示数据的具体形式;那么Socket是发动机,提供了网络通信的能力。   那么Socket跟TCP/IP协议之间是怎么个关系呢?先来看看下面那张图:                       图一 2)Socket起了什么作用?     Socket是应用层与 TCP/IP协议族(包括运输层、网络层、链路层)通信的中间软件抽象层,它是一组接口。在设计模式中, Socket其实就是一个门面模式,它把复杂的 TCP/IP协议族隐藏在 Socket接口后面,对用户来说,一组简单的接口就是全部,让 Socket去组织数据,以符合指定的协议。 3)Socket编程的工作原理   举个生活中的场景: 你要打电话给一个朋友,先拨号,朋友听到电话铃声后提起电话,这时你和你的朋友就建立起了连接,就可以讲话了。等交流结束

restful风格详解

拟墨画扇 提交于 2019-12-06 05:51:29
一.概念 RESTful架构,就是目前最流行的一种互联网软件架构。它结构清晰、符合标准、易于理解、扩展方便 ,所以正得到越来越多网站的采用。 REST这个词,是 Roy Thomas Fielding 在他2000年的博士论文中提出的. Fielding将他对互联网软件的架构原则,定名为 REST ,即 Representational State Transfer 的缩写。即" 表现层状态转化 "。如果 一个架构符合REST原则,就称它为RESTful架构。 二.理解 RESTful架构 , Representational State Transfer : 表现层状态转化 1.资源(Resources) : 每种资源对应一个特定的URI(统一资源定位符),URI为每一个资源的地址或独一无二的识别符; 2.表现层(Representation) : 把"资源"具体呈现出来的形式,叫做它的"表现层" ,URI只代表"资源"的位置。它的具体表现形式,应该在HTTP请求的头信息中用 Accept 和 Content-Type 字段指定,这两个字段才是对"表现层"的描述。 3.状态转化(State Transfer) :客户端想要操作服务器,必须通过某种手段,让服务器端发生"状态转化"。而这种转化是建立在表现层之上的,所以就是"表现层状态转化"。客户端用到的手段就是HTTP协议里面

python实现一个简单的网络聊天程序

那年仲夏 提交于 2019-12-06 05:47:21
一、Linux Socket 1.Linux Socke基本上就是BSD Socket(伯克利套接字) 伯克利套接字的应用编程接口(API)是采用C语言的进程间通信的库,经常用在计算机网络间的通信。BSD Socket的应用编程接口已经是网络套接字的抽象标准。大多数其他程序语言使用一种相似的编程接口。由于伯克利套接字是第一个socket,大多数程序员很熟悉它们,所以大量系统把伯克利套接字作为其主要的网络API。 主要的头文件如下,不同的系统可能具体不同。 <sys/socket.h> BSD socket 核心函数和数据结构。 <netinet/in.h> AF_INET 和AF_INET6 地址家族和他们对应的协议家族PF_INET 和PF_INET6。在互联网编程中广泛使用,包括IP地址以及TCP和UDP端口号。 <sys/un.h> PF_UNIX/PF_LOCAL 地址家族。用于运行在一台计算机上的程序间的本地通信,不用在网络中。 <arpa/inet.h> 和IP地址相关的一些函数。 <netdb.h> 把协议名和主机名转化成数字的一些函数。 2.API函数 这些是伯克利套接字提供的库函数: (1)socket() 创造某种类型的套接字,分配一些系统资源,用返回的整数识别。 (2)bind() 一般是用在服务器这边,和一个套接字地址结构相连

Nginx为什么可以支持高并发

元气小坏坏 提交于 2019-12-05 17:39:14
Nginx为什么可以支持高并发 nginx 采用的是多进程+epoll,能实现高并发,其可以支持的并发上限大概是同时支持5W个连接 多进程 nginx 在启动后,会有一个 master 进程和多个相互独立的 worker 进程,master进程接收来自外界的连接,并向各worker进程发送信号,每个进程都有可能来处理这个连接,master进程能监控worker进程的运行状态,当 worker 进程退出后(异常情况下),会自动启动新的worker进程 惊群现象 master进程首先通过 socket() 来创建一个socket文件描述符用来监听,然后fork生成子进程(workers 进程),那么当连接进来时,所有子进程都将收到master进程的 通知并“争着”与它建立连接,这就叫“惊群现象”。大量的进程被激活又挂起,只有一个进程可以accept() 到这个连接,这当然会消耗系统资源 nginx对惊群现象的处理accept_mutex(加锁) nginx 提供了一个 accept_mutex 这个东西,即每个 worker 进程在执行accept之前都需要先获取锁,获取不到就放弃执行accept()。有了这把锁之后,同一时刻,就只会 有一个进程去accpet(),这样就不会有惊群问题了 来源: https://www.cnblogs.com/ghl666/p/11937666

Java 8 Stream Api 中的 peek 操作

浪子不回头ぞ 提交于 2019-12-05 15:31:19
1. 前言 我在 Java8 Stream API 详细使用指南 中讲述了 Java 8 Stream API 中 map 操作和 flatMap 操作的区别。然后有小伙伴告诉我 peek 操作 也能实现元素的处理。但是你知道 map 和 peek 的区别吗? map 我们在开头文章已经讲过了,你可以去详细了解一下它,本文将重点讲解一下 peek 操作。 2. peek peek 操作接收的是一个 Consumer<T> 函数。顾名思义 peek 操作会按照 Consumer<T> 函数提供的逻辑去消费流中的每一个元素,同时有可能改变元素内部的一些属性。 这里我们要提一下这个 Consumer<T> 以理解 什么时消费。 2.1 什么是消费 (Consumer) package java.util.function; import java.util.Objects; @FunctionalInterface public interface Consumer<T> { void accept(T t); // 嵌套accept , 顺序为先执行 accept 后执行参数里的 after.accpet default Consumer<T> andThen(Consumer<? super T> after) { Objects.requireNonNull(after);

iptables

牧云@^-^@ 提交于 2019-12-05 09:10:20
一、四表五链理论 四表,filter表( 包过滤 )、nat表( 网络地址转换 )、mangle表( 包重构,修改 ) raw表(数据跟踪处理) 五链(chains)是数据包传播的路径, 1.INPUT——进来的数据包应用此规则链中的策略 2.OUTPUT——外出的数据包应用此规则链中的策略 3.FORWARD——转发数据包时应用此规则链中的策略 4.PREROUTING——对数据包作路由选择前应用此链中的规则 (所有的数据包进来的时侯都先由这个链处理) 5.POSTROUTING——对数据包作路由选择后应用此链中的规则 (所有的数据包出来的时侯都先由这个链处理) 每一条链其实就是众多规则中的一个检查清单,每一条链中可以有一条或数条规则。当一个数据包到达一个链时,iptables就会从链中第一条规则开始检查,看该数据包是否满足规则所定义的条件。如果满足,系统就会根据 该条规则所定义的方法处理该数据包;否则iptables将继续检查下一条规则,如果该数据包不符合链中任一条规则,iptables就会根据该链预先定义的默认策略来处理数据包。 二、常用设置 1、放行ssh端口: 1 iptables -A INPUT -p tcp –dport 22 -j ACCEPT 2 iptables -A OUTPUT -p tcp –sport 22 -j ACCEPT 注:/etc/rc.d

Linux\\CentOS 安装 vsftpd 服务器

…衆ロ難τιáo~ 提交于 2019-12-05 07:37:34
安装 查看电脑是否存在 vsftpd 服务器 rmp -qa|grep vsftpd 如果有就删除,没有就使用yum 安装 vsftpd yum -y install vsftpd 配置 在根目录下创建 ftpfile 目录: cd \ # 回到根目录 mkdir ftpfile # 创建 ftpfile 文件夹 为 ftpfile 创建用户 sudo useradd ftpuser -d /ftpfile/ -s /sbin/nologin 给用户赋予权限 sudo chown -R ftpuser.ftpuser /ftpfile/ 回到根目录 cd \ 修改刚创建的用户密码 sudo passwd ftpuser 查看 vsftpd 的路径 whereis vsftpd 配置 vsftpd vim /etc/vsftpd/vsftpd.conf 在 vsftpd.conf 中添加\修改以下信息 # 匿名访问 anonymous_enable=NO # 新增节点 ftpd_banner=Welcome to huaianmall FTP service. local_root=/ftpfile anon_root=/ftpfile use_localtime=yes #chroot_local_user=YES chroot_list_enable=YES # (default

安装  Dubbo  注 册中心(Zookeeper-3.4.6)(一)

亡梦爱人 提交于 2019-12-05 06:42:29
基于 Dubbo 的分布式系统架构视频教程 作者:(原著)吴水成,840765167@qq.com,wu-sc@foxmail.com 只是通过大神经验可以学到一些牛逼的技术。绝无商业用途。哭哭哭......... 节点角色说明: Provider: 暴露服务的 服务提供方——暴漏的服务也是需要容器环境运行。( Container:服务运行环境 ) •Consumer: 调用远程服务的 服务消费方 •Registry: 服务注册与发现的 注册中心————服务在服务运行环境中需要往注册中心去注册,供服务消费方去调用。 •Monitor: 统计服务的调用次数和调用时间的 监控中心 —— 统计服务的调用信息 •Container: 服务运行容器 调用关系说明: 0. 服务容器负责启动,加载,运行服务提供者。 1. 服务提供者在启动时,向注册中心注册自己提供的服务。 2. 服务消费者在启动时,向注册中心订阅自己所需的服务。 3. 注册中心返回服务提供者地址列表给消费者,如果有变更,注册中心将基于长连接推送变更数据给消费者。 4. 服务消费者,从提供者地址列表中,基于软负载均衡算法,选一台提供者进行调用,如果调用失败, 再选另一台调用。 5. 服务消费者和提供者,在内存中累计调用次数和调用时间,定时每分钟发送一次统计数据到监控中心。 注册中心:超级重要 方案:以zookeeper

iptables_超解

 ̄綄美尐妖づ 提交于 2019-12-05 06:35:46
查询: -t选项,指定要操作的表,使用-L选项,查看-t选项对应的表的规则,-L选项的意思是,列出规则,所以,上述命令的含义为列出filter表的所有规则 显示出了3条链INPUT链、FORWARD链、OUTPUT链,每条链中都有自己的规则,上图中可以看出,INPUT链、FORWARD链、OUTPUT链都拥有"过滤"的能力,所以,当我们要定义某条"过滤"的规则时,我们会在filter表中定义,但是具体在哪条"链"上定义规则呢?这取决于我们的工作场景。比如,我们需要禁止某个IP地址访问我们的主机,我们则需要在INPUT链上定义规则。报文发往本机时,会经过PREROUTING链与INPUT链,所以,如果我们想要禁止某些报文发往本机,我们只能在PREROUTING链和INPUT链中定义规则,但是PREROUTING链并不存在于filter表中,所以,我们只能在INPUT链中定义 注意:其他表可以类似查询 iptables -t raw -L iptables -t mangle -L iptables -t nat -L [root@#quan#Better ~]$iptables -t raw -L Chain PREROUTING (policy ACCEPT) target prot opt source destination Chain OUTPUT (policy

Linux下防御或减轻DDOS攻击方法

牧云@^-^@ 提交于 2019-12-05 00:55:57
今天上午服务器被ddos攻击,还好对方只是使用了一台电脑,没有搞成千上万个木马来,要不然那服务器直接就垮了。在网上找了教程,成功解决。于是把本次防御ddos的方法记录一下了。 查看攻击IP 首先使用以下代码,找出攻击者IP netstat -ntu | awk '{print $5}' | cut -d: -f1 | sort | uniq -c | sort -n 将会得出类似如下的结果: 1 114.226.9.132 1 174.129.237.157 1 58.60.118.142 1 Address 1 servers) 2 118.26.131.78 3 123.125.1.202 3 220.248.43.119 4 117.36.231.253 4 119.162.46.124 6 219.140.232.128 8 220.181.61.31 2311 67.215.242.196 前面的数字表示IP连接的次数,可见最后一个IP 67.215.242.196连接服务器2311次,每个IP几个、十几个或几十个连接数都还算比较正常,如果像上面成百上千肯定就不正常了。 解决方法,使用DDoS deflate+iptables DDoS deflate是一款免费的用来防御和减轻DDoS攻击的脚本。它通过netstat监测跟踪创建大量网络连接的IP地址