iNet

centos8平台用NetworkManager/nmcli管理网络

∥☆過路亽.° 提交于 2020-05-04 23:43:13
一,centos8上,网络服务的管理需要NetworkManager服务 1,NetworkManager的服务操作 启动 [root@localhost network-scripts]# systemctl start NetworkManager 停止 [root@localhost network-scripts]# systemctl stop NetworkManager 查看状态 [root@localhost network-scripts]# systemctl status NetworkManager 2,NetworkManager和nmcli所属的包: [root@localhost network-scripts]# whereis nmcli nmcli: /usr/bin/nmcli /usr/share/ man /man1/nmcli. 1 .gz [root@localhost network -scripts]# rpm -qf /usr/bin/ nmcli NetworkManager - 1.20 . 0 - 5 .el8_1.x86_64 centos8系统默认已安装了这个rpm包,无需手动安装, 如果误删除了可以用yum命令安装 [root@localhost yum .repos.d]# yum install

聊聊select, poll 和 epoll

荒凉一梦 提交于 2020-05-04 11:52:21
聊聊select, poll 和 epoll 假设项目上需要实现一个TCP的客户端和服务器从而进行跨机器的数据收发,我们很可能翻阅一些资料,然后写出如下的代码。 服务端 void func( int sockfd) { char buff[MAX]; int n; // infinite loop for chat for (;;) { bzero(buff, MAX); // read the message from client and copy it in buffer read(sockfd, buff, sizeof (buff)); // print buffer which contains the client contents printf( " From client: %s\t To client : " , buff); bzero(buff, MAX); n = 0 ; // copy server message in the buffer while ((buff[n++] = getchar()) != ' \n ' ) ; // and send that buffer to client write(sockfd, buff, sizeof (buff)); // if msg contains "Exit" then server exit

SSH 的原理与应用

↘锁芯ラ 提交于 2020-05-03 21:32:15
本文档介绍 SSH 的原理与应用,这是企业级非常实用的技术,希望能给大家带来帮助。 一、SSH简介 SSH是Secure Shell 的缩写,也叫做安全外壳协议。SSH的主要目的是实现安全远程登录。 二 、SSH工作原理 SSH的安全性比较好,其对数据进行加密的方式主要有两种:对称加密(密钥加密)和非对称加密(公钥加密)。 对称加密指加密解密使用的是同一套秘钥。Client端把密钥加密后发送给Server端,Server用同一套密钥解密。对称加密的加密强度比较高,很难破解。但是,Client数量庞大,很难保证密钥不泄漏。如果有一个Client端的密钥泄漏,那么整个系统的安全性就存在严重的漏洞。为了解决对称加密的漏洞,于是就产生了非对称加密。非对称加密有两个密钥:“公钥”和“私钥”。公钥加密后的密文,只能通过对应的私钥进行解密。想从公钥推理出私钥几乎不可能,所以非对称加密的安全性比较高。 SSH的加密原理中,使用了RSA非对称加密算法。 整个过程是这样的: (1)远程主机收到用户的登录请求,把自己的公钥发给用户。 (2)用户使用这个公钥,将登录密码加密后,发送回来。 (3)远程主机用自己的私钥,解密登录密码,如果密码正确,就同意用户登录。 三、中间人攻击 SSH之所以能够保证安全,原因在于它采用了公钥加密,这个过程本身是安全的,但是实际用的时候存在一个风险:如果有人截获了登录请求

不要启用 net.ipv4.tcp_tw_recycle

牧云@^-^@ 提交于 2020-05-03 19:47:09
本文为翻译英文BLOG《 Coping with the TCP TIME-WAIT state on busy Linux servers 》,但并非完整的翻译,译者CFC4N对原文理解后,进行了调整,增加了相关论点论据,跟原文稍有不同。翻译的目的,是为了加深自己知识点的记忆,以及分享给其他朋友,或许对他们也有帮助。文章比较长,没耐心请点关闭。 不要启用 net.ipv4.tcp_tw_recycle linux 内核文档中,对 net.ipv4.tcp_tw_recycle的描述并不是很明确。 tcp_tw_recycle (Boolean; default: disabled; since Linux 2.4)[译者注:来自linux man tcp的描述] Enable fast recycling of TIME-WAIT sockets. Enabling this option is not recommended since this causes problems when working with NAT (Network Address Translation). 启用TIME-WAIT状态sockets的快速回收,这个选项不推荐启用。在NAT(Network Address Translation)网络下,会导致大量的TCP连接建立错误。 与其功能相似的参数

面试官问我TIME_WAIT和CLOSE_WAIT,我这样回答能进大厂吗?

徘徊边缘 提交于 2020-05-02 17:41:55
目录 写在前面 面试这样问,我人傻了 👇⬇️⬇️ 你知道TCP状态机里为什么需要TIME_WAIT吗? 你遇到过TIME_WAIT的问题吗? 什么是TIME-WAIT和CLOSE-WAIT? TIME_WAIT状态为什么会持续2MSL(2倍的max segment lifetime)呢? 你真的觉得TIME_WAIT很多不可怕吗,这些底层知识你还不了解! TIME_WAIT会占用内存吗?当然! TIME_WAIT会消耗CPU吗?当然! 说了这么多,怎么减少或者避免TIME_WAIT带来的影响呢? TIME_WAIT调优,你必须理解的几个调优参数 众所周知人人都会的几个常见的问题(自问自答系列) 跟面试官唠家常的时间总是这么短暂,我的面试结束了,就不知道OFFER能不能拿到了! ​ 写在前面 如标题所见,众所周知,面试后端开发的同学们都知道,面试中除了TCP三握手和四次挥手之外,TIME_WAIT和CLOSE_WAIT也算是众多网络相关题目中被问到频率超高的题目之一了,TCP三握手和四挥手你可能已经记烂了,但是TIME_WAIT和CLOSE_WAIT你却不一定真的懂。不然试试下面这几个面试问题,你能说明白几个? 面试这样问,我人傻了 👇⬇️⬇️ 你知道 TCP状态机里为什么需要TIME_WAIT吗? 你这时候不会还在想TCP状态机是什么吧,那完了,赶紧去复习复习吧。 真香时刻:

理解 Linux 网络栈(1):Linux 网络协议栈简单总结

为君一笑 提交于 2020-05-02 08:32:28
引自:https://www.cnblogs.com/sammyliu/p/5225623.html 本系列文章总结 Linux 网络栈,包括: (1) Linux 网络协议栈总结 (2) 非虚拟化Linux环境中的网络分段卸载技术 GSO/TSO/UFO/LRO/GRO (3) QEMU/KVM + VxLAN 环境下的 Segmentation Offloading 技术(发送端) (4)QEMU/KVM + VxLAN 环境下的 Segmentation Offloading 技术(接收端) 1. Linux 网络路径 1.1 发送端 1.1.1 应用层 (1) Socket 应用层的各种网络应用程序基本上都是通过 Linux Socket 编程接口来和内核空间的网络协议栈通信的。Linux Socket 是从 BSD Socket 发展而来的,它是 Linux 操作系统的重要组成部分之一,它是网络应用程序的基础。从层次上来说,它位于应用层,是操作系统为应用程序员提供的 API,通过它,应用程序可以访问传输层协议。 socket 位于传输层协议之上,屏蔽了不同网络协议之间的差异 socket 是网络编程的入口,它提供了大量的系统调用,构成了网络程序的主体 在Linux系统中,socket 属于文件系统的一部分,网络通信可以被看作是对文件的读取

Python学习之旅(二十九)

耗尽温柔 提交于 2020-05-02 08:27:02
Python基础知识(28):常用第三方模块 一、Pillow PIL(Python Imaging Library):提供了强大的图像操作功能,可以通过简单的代码完成复杂的图像处理,是Python平台事实上的图像处理库,支持Python 2.7以及更低的版本 Pillow:在PIL基础上创建的兼容版本,同时加入了更多新特性,支持Python 3.x 1、安装Pillow 如果安装了Anaconda,Pillow就已经可用了。否则,需要在命令行下通过pip安装 2、操作图像 (1)图像缩放 from PIL import Image # 在当前路径下,打开一个jpg图像文件 im = Image.open( ' test.jpg ' ) # 获得图像尺寸 w, h = im.size print ( ' Original image size: %sx%s ' % (w, h)) # 缩放50% im.thumbnail((w//2, h//2 )) print ( ' Resize image to: %sx%s ' % (w//2, h//2 )) # 把缩放后的图像用jpeg格式保存 im.save( ' thumbnail.jpg ' , ' jpeg ' ) 结果: Original image size: 100 0x1000 Resize image to: 50

python获取linux系统内存、cpu、网络使用情况

落花浮王杯 提交于 2020-05-02 06:02:01
05 Jul python获取linux系统内存、cpu、网络使用情况 做个程序需要用到系统的cpu、内存、网络的使用情况,百度之后发现目前使用python获取这些信息大多是调用系统命令(top、free等)。其实多linux命令也是读取/proc下的文件实现的,索性不如自己写一个。 一、计算cpu的利用率 要读取cpu的使用情况,首先要了解/proc/stat文件的内容,下图是/proc/stat文件的一个例子: cpu、cpu0、cpu1……每行数字的意思相同,从左到右分别表示user、nice、system、idle、iowait、irq、softirq。根据系统的不同,输出的列数也会不同,比如ubuntu 12.04会输出10列数据,centos 6.4会输出9列数据,后边几列的含义不太清楚,每个系统都是输出至少7列。没一列的具体含义如下: user:用户态的cpu时间(不包含nice值为负的进程所占用的cpu时间) nice:nice值为负的进程所占用的cpu时间 system:内核态所占用的cpu时间 idle:cpu空闲时间 iowait:等待IO的时间 irq:系统中的硬中断时间 softirq:系统中的软中断时间 以上各值的单位都是jiffies,jiffies是内核中的一个全局变量,用来记录自系统启动一来产生的节拍数,在这里我们把它当做单位时间就行。

最基础的Python的socket编程入门教程

馋奶兔 提交于 2020-05-02 00:31:52
最基础的Python的socket编程入门教程 本文介绍使用Python进行Socket网络编程,假设读者已经具备了基本的网络编程知识和Python的基本语法知识,本文中的代码如果没有说明则都是运行在Python 3.4下。 Python的socket功能封装在socket库中,要使用socket,记得先import socket,socket库的详细介绍参见官方文档。 创建Socket 首先创建一个socket,使用socket库中得socket函数创建。 import socket # create an INET, STREAM socket s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) 例子中创建了一个TCP socket,socket.socket函数的前两个参数的默认值是socket.AF_INET和socket.SOCK_STREAM,创建TCP socket时可以直接写成socket.socket()。 连接服务器 使用socket的connect函数连接到服务器,以下几种参数都是合法的。 s.connect(('localhost', 8000)) s.connect(('127.0.0.1', 8000)) s.connect(('www.baidu.com', 80)) 发送数据

python应用之socket编程

落爺英雄遲暮 提交于 2020-05-01 23:06:08
tcp/udp下的socket的基本使用 基于 tcp 的 socket Tcp 是基于链接的 , 必须先启动服务端 , 然后启动客户端进行链接 服务端: ss = socket() # 创建服务器套接字 ss.bind() # 把地址绑定到套接字 ss.listen() # 监听链接 inf_loop: # 服务器无限循环 cs = ss.accept() # 接受客户端链接 comm_loop: # 通讯循环 cs.recv()/cs.send() # 对话(接收与发送) cs.close() # 关闭客户端套接字 ss.close() # 关闭服务器套接字(可选) 客户端: cs = socket() # 创建客户套接字 cs.connect() # 尝试连接服务器 comm_loop: # 通讯循环 cs.send()/cs.recv() # 对话(发送/接收) cs.close() # 关闭客户套接字 简单的实现: 这里是单个的 一次通信 mport socket # AF_INET 基于网络通信, SOCK_STREAM(基于流的,tcp) phone = socket.socket(socket.AF_INET, socket.SOCK_STREAM) # 买手机 phone.bind(( ' 127.0.0.1 ' , 8000)) # 绑定手机卡 phone