0%

2019年12月20日 下午11:17

网关

IP地址、网关地址、子网掩码地址
IP地址,子网掩码、默认网关,DNS服务器之间的联系与区别

  1. 在Internet中的网关一般是指用于连接两个或者两个以上网段的网络设备,通常使用路由器(Router)作为网关。在TCP/IP网络体系中,网关的基本作用是根据目的IP地址的网络号与子网号,选择最佳的出口对IP分组进行转发,实现跨网段的数据通信。
    • 有时候把网关也认为是这个具有数据转发设备的IP地址,网关与其子网的IP地址应该在同一网段。
  2. 比如有网络A和网络B,网络A的IP地址范围为“192.168.1.1192. 168.1.254”,子网掩码为255.255.255.0;网络B的IP地址范围为“192.168.2.1192. 168.2.254”,子网掩码为255.255.255.0。
    • 在没有路由器的情况下,两个网络之间是不能进行TCP_IP通信的,即使是两个网络连接在同一台交换机(或集线器)上,TCP_IP协议也会根据子网掩码(255.255.255.0)判定两个网络中的主机处在不同的网络里
    • ::而要实现这两个网络之间的通信,则必须通过网关::。
    • 如果网络A中的主机发现数据包的目的主机不在本地网络中,就把数据包转发给它自己的网关,再由网关转发给网络B的网关,网络B的网关再转发给网络B的某个主机。网络B向网络A转发数据包的过程也是如此 所以说,::只有设置好网关的IP地址,TCP/IP协议才能实现不同网络之间的相互通信::。
    • 那么这个IP地址是哪台机器的IP地址呢?
      • 网关的IP地址是具有路由功能的设备的IP地址,具有路由功能的设备有路由器、启用了路由协议的服务器(实质上相当于一台路由器)、代理服务器(也相当于一台路由器)。
  • 如何设置默认网关
    一台电脑的默认网关是不可以随随便便指定的,必须正确地指定,否则一台电脑就会将数据包发给不是网关的主机,从而无法与其他网络的主机通信。默认网关的设定有手动设置和自动设置两种方式。
    • 手动设置
      • 手动设置适用于电脑数量比较少、TCP/IP参数基本不变的情况,比如只有几台到十几台电脑。因为这种方法需要在联入网络的每台电脑上设置“默认网关”,非常费劲,一旦因为迁移等原因导致必须修改默认网关的IP地址,就会给网管带来很大的麻烦,所以不推荐使用。
      • 在Windows 9x中,设置默认网关的方法是在“网上邻居”上右击,在弹出的菜单中点击“属性”,在网络属性对话框中选择“TCP/IP协议”,点击“属性”,在“默认网关”选项卡中填写新的默认网关的IP地址就可以了。
      • ::需要特别注意的是:默认网关必须是电脑自己所在的网段中的IP地址,而不能填写其他网段中的IP地址。::
    • 自动设置
      • ::自动设置就是利用DHCP(Dynamic Host Configuration Protocol, 动态主机配置协议)服务器来自动给网络中的电脑分配IP地址、子网掩码和默认网关 。::这样做的好处是一旦网络的默认网关发生了变化时,只要更改了DHCP服务器中默认网关的设置,那么网络中所有的电脑均获得了新的默认网关的IP地址。这种方法适用于网络规模较大、TCP/IP参数有可能变动的网络。另外一种自动获得网关的办法是通过安装代理服务器软件(如MS Proxy)的客户端程序来自动获得,其原理和方法和DHCP有相似之处。由于篇幅所限,就不再详述了

ip 和 网络地址 的关系(涉及到子网掩码)

IP地址,子网掩码、默认网关,DNS服务器之间的联系与区别

  1. 为什么要计算网络地址
    • 一句话就是让网络中的计算机能够相互通讯
    • ::网络在设计的时候规定:只有在同一个网络地址的主机才可以进行通讯::
    • ip= 网络地址+主机号
  2. 如何计算网络地址 (子网掩码)

2019年12月20日 下午10:40
一流科技创始人袁进辉:深度学习引擎的最优架构 | 机器之心

  1. 把深度学习框架当成编译器去写,这其中的核心是:流水线技术,以及阿达姆刀原理
  2. 而tensorflow是类似于hadoop的master和worker结构,在阿达姆刻刀的原理下,master的调度能力反而成了瓶颈。



















2019年12月20日 下午4:00

linux shell 中 % # 的含义
Linux下批量修改文件名方法 - 酷酷的二连长 - 博客园

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
file=/dir1/dir2/dir3/my.file.txt
可以用${ }分别替换得到不同的值:
${file#*/}:删掉第一个 / 及其左边的字符串:dir1/dir2/dir3/my.file.txt
${file##*/}:删掉最后一个 / 及其左边的字符串:my.file.txt
${file#*.}:删掉第一个 . 及其左边的字符串:file.txt
${file##*.}:删掉最后一个 . 及其左边的字符串:txt
${file%/*}:删掉最后一个 / 及其右边的字符串:/dir1/dir2/dir3
${file%%/*}:删掉第一个 / 及其右边的字符串:(空值)
${file%.*}:删掉最后一个 . 及其右边的字符串:/dir1/dir2/dir3/my.file
${file%%.*}:删掉第一个 . 及其右边的字符串:/dir1/dir2/dir3/my
记忆的方法为:
# 是 去掉左边(键盘上#在 $ 的左边)
%是去掉右边(键盘上% 在$ 的右边)
单一符号是最小匹配;两个符号是最大匹配
${file:0:5}:提取最左边的 5 个字节:/dir1
${file:5:5}:提取第 5 个字节右边的连续5个字节:/dir2

同一文件夹下,批量修改文件名

1
2
for name in `ls *.txt`;do echo $name ${name:7:-1};done`
for name in `ls *.txt`;do echo $name ${name#*result_};done

多文件夹下

1
for name in `find ./ -name '*result_*'`;do mv  $name ${name%result_*}${name#*result_};done

2019年12月20日 下午3:09

2019年11月1日 下午4:04

  1. Find:按文件名称进行查找文件
    1. 文件的属性进行查找,如文件名,文件大小,所有者,所属组,是否为空,访问时间,修改时间等
    2. 需要记忆的参数:
      1. -name
  2. grep: 按文件内容来查找文件
    1. grep [-abcEFGhHilLnqrsvVwxy][-A<显示列数>][-B<显示列数>][-C<显示列数>][-d<进行动作>][-e<范本样式>][-f<范本文件>][—help][范本样式][文件或目录…]
    2. 需要记忆的参数:
      1. -i 或 —ignore-case : 忽略字符大小写的差别。
      2. -l 或 —file-with-matches : 列出文件内容符合指定的样式的文件名称。
      3. -L 或 —files-without-match : 列出文件内容不符合指定的样式的文件名称。
      4. -n 或 —line-number : 在显示符合样式的那一行之前,标示出该行的列数编号。
      5. -E 或 —extended-regexp : 将样式为延伸的正则表达式来使用。
      6. -c 或 —count : 计算符合样式的列数。
      7. -w 或 –word-regexp : 只显示全字符合的列
      8. -v 或 —revert-match : 显示不包含匹配文本的所有行。
      9. -r 或 —recursive : 以递归的方式查找符合条件的文件。
  3. sed:更适合编辑 行数据,类似于vim
    1. sed [-hnV][-e<script>][-f<script文件>][文本文件]
    2. 需要记忆的动作:类似于vim
      1. a :新增, a 的后面可以接字串,而这些字串会在新的一行出现(目前的下一行)~
      2. c :取代, c 的后面可以接字串,这些字串可以取代 n1,n2 之间的行!
      3. d :删除,因为是删除啊,所以 d 后面通常不接任何咚咚;
      4. i :插入, i 的后面可以接字串,而这些字串会在新的一行出现(目前的上一行);
      5. p :打印,亦即将某个选择的数据印出。通常 p 会与参数 sed -n 一起运行~
      6. s :取代,可以直接进行取代的工作哩!通常这个 s 的动作可以搭配正规表示法!例如 1,20s_old_new/g 就是啦!
  4. awk:更适合格式化行数据,类似于sql的的select,可以按行、列、条件进行筛选
    1. awk [option] ‘Pattern{action}’ file
      1. awk ‘{动作}’ 文件名
      2. awk ‘条件 {动作}’ 文件名
    2. 这里所谓的动作我们常用的就是{print}
      1. {}这个大括号里面就是写动作的地方,这里面写的是程序代码,awk中支持if,print等语言语法。这就是awk可以称之为一门语言的原因。
    3. 这里的条件有:
      1. 要查找的文件内容:awk -F ':' '/usr/ {print $1}' demo.txt
      2. 结合变量做条件:awk -F ':' 'NR % 2 == 1 {print $1}’ demo.txt

Find 和cp连用:mac上
xargs on OSX: illegal option – - Unix & Linux Stack Exchange
find ./ -name '*tld*' | xargs -I F cp 'F' ../result_opencv2/tld

2019年11月8日 下午3:12
find 与mv rm 的合用-菜鸟中的菜鸟-51CTO博客

  • 第一种:
    • find ./ -name "tet/“|xargs -I mv {} /tmp/
  • 第二种:
    • mv find /root/ -name “/.tar” /tmp/
  • 第三种:
    • find ./ -name test.tar.gz -exec mv {} /tmp \
  • 注:::一些简单的直接在mv中使用正则就行,不需要使用find::

第0部分:正则

linux下的find文件查找命令与grep文件内容查找命令 - 晨光静默 - 博客园
pattern正则表达式主要参数:
    1. \: 忽略正则表达式中特殊字符的原有含义。
    2. ^:匹配正则表达式的开始行。
    3. $: 匹配正则表达式的结束行。
    4. <:从匹配正则表达 式的行开始。
    5. >:到匹配正则表达式的行结束。
    6. [ ]:单个字符,如[A]即A符合要求 。
    7. [ - ]:范围,如[A-Z],即A、B、C一直到Z都符合要求 。
    8. .:所有的单个字符。
    9. * :有字符,长度可以为0。

第一部分:awk

2019年12月15日 下午10:43
awk 入门教程 - 阮一峰的网络日志

awk | 朱双印博客

  1. awk命令基础 看完
  2. awk分隔符详解看完
  3. awk变量详解
  4. awk格式化能力详解
  5. awk pattern详解-1
  6. awk pattern详解-2
  7. awk 动作详解-1
  8. awk 动作详解-2
  9. awk数组详解
  10. awk内置函数示例

第二部分:sed

Linux sed 命令 | 菜鸟教程看过

第三部分:find + grep

linux下的find文件查找命令与grep文件内容查找命令 - 晨光静默 - 博客园

  1. 区别
    • find是根据文件的属性进行查找,如文件名,文件大小,所有者,所属组,是否为空,访问时间,修改时间等。
    • grep是根据文件的内容进行查找,会对文件的每一行按照给定的模式(patter)进行匹配查找。
  2. find三种方式
    1. 按照文件名查找
      • find /etc -name '*srm*' 
      • 使用通配符*(0或者任意多个)。表示在/etc目录下查找文件名中含有字符串‘srm’的文件`
    2. 按照文件特征查找
      • 最后访问时间
      • 大小
    3. 使用混合查找方式查找文件
  3. Grep
    1. 学习连接中的参数就行
    2. Linux grep 命令 | 菜鸟教程看过

2019年12月18日 下午3:58
linux下查看进程占用端口和端口占用进程命令 - wanghetao - 博客园

第一步:进程名 ———> 进程号

查看程序对应进程号:ps –ef|grep 进程名

第二步:进程号 — — > 端口号

REDHAT :查看进程号所占用的端口号:netstat –nltp|grep 进程号
ubuntu:查看进程占用端口号:netstat -anp|grep pid

另:端口号 —> 进程号

Linux下查看端口号所使用的进程号:
使用lsof命令:lsof –I:端口号

端口是否开启

telnet ip 端口号 测试远程主机端口是否打开
如何优雅的使用telnet测试端口连通性 | 《Linux就该这么学》

补充:每天一个linux命令(58):telnet命令 - peida - 博客园telnet命令通常用来远程登录、确定远程服务的状态,比如确定远程服务器的某个端口是否能访问

检测你和相应IP是否能连通

Ping命令是不能检测端口,只能检测你和相应IP是否能连通.

2019年12月18日 下午2:51
ssh 反向代理 - 不拨牙 - 博客园

相关知识:

  1. nat和内网穿透的概念:
    • nat(网络地址转换方法)_百度百科
    • 内网穿透_百度百科
    • 关键词是:地址转换。表示:公网ip和局域网ip进行对应关系,这个关系是:多对一(一个公网ip对应n个内网ip)。这也导致会有内网穿透这个说法:用于确定将一个公网ip:port对应到局域网中的ip。
    • nat与内网穿透的关系
      • ::逆过程:从nat的说明中可看出,nat其实指的是多对一编码这个过程,而内网穿透强调了是一对多的解码过程::
      • nat:出去的过程
      • 内网穿透:回来的过程
    • NAT网关的工作步骤:

  2. ssh 代理和 vpn代理的区别:
    1. 该使用 SSH 还是该使用 VPN?
    2. vpn:
      • VPN 是虚拟专用网络,它虚拟了一个网卡,类似于一个数据隧道,使用 VPN 后,你连接到了一个新的网络连接,这个网络连接和你所使用的宽带连接、局域网连接等是平级的,(但实际上数据是先加密,再通过你其它的网卡发送的),如果你使用这种方式连接了网络,你的所有网络数据包都将通过 VPN 加密隧道发送。
    3. SSH:
      1. ::他不是一个单独的网络连接,只是在现有网络连接内的一个协议::
    4. VPN 更接近底层,相当于一个新的虚拟网卡,更有“专用”的性质,而 SSH 更像加密的代理服务器,是在你现有的网络上的一个普通的连接。
  3. 为什么VPN比SSH繁荣?
    1. 因为ssh做不了的事情,VPN都可以做;而ssh能做的,VPN也统统能做。
    2. ssh和vpn哪个好,区别是什么? | Mujj博客
  4. 其他:
    1. 其实ssh只是代理的一种,代理有很多种,例如http代理,反向代理等,这些之所以在国内的网络环境里不堪大用,主要是因为他们内容传输都是使用明文,不加密的内容很容易被第三方嗅探,然后截断连接
    2. ssh和vpn都是加密传输,相对安全,在国内恶劣的网络环境下,总算能够生存。

注:

  • 如果抱着登录服务器的目的来说,最简单的方法就依然还是必须有A、B服务器,但是没不要设置啥代理,直接先从Cssh登录到B,再从B登录到A一样可以完成连接。
  • 所以说,如果简单的连接一下A服务器,没必要弄得这么复杂!!!

理解核心

::一台linuxA,它不仅可以主动的连接B,也可以命令B来连接自己::

  • 这就是linux反向代理最难理解的地方,这个命令B来连接自己这个动作有点反直觉,谁会想到linux有这功能,这也体现了linux中的确有很多的设计哲学在里面。
  • 这两种的结果虽然都是B->A,但是不同点是:反向代理会使B机器启动一个ssh连接(B->A)对应的端口号。如果正向连接B->A,这个ssh在B上没有启动一个对应的接口,不好之处是:无法将B机器其他端口的内容转接到B->A之间的连接(eg:无法再在B机器上进行正向代理端口映射到已有的连接中)。

利用SSH代理访问内网资源 - DTeam的团队日志 - SegmentFault 思否

另一种理解:

正向代理与反向代理的区别? - 个人文章 - SegmentFault 思否
正向代理:代理的是客户端(服务器并不知道真正的客户端到底是谁)
反向代理:代理的是服务端(客户端也不知道真正的服务器是谁)

参数说明:

  1. 反向代理
    • ssh -fCNR
  2. 正向代理
    • ssh -fCNL
  • -f 后台执行ssh指令
  • -C 允许压缩数据
  • -N 不执行远程指令
  • -R 将远程主机(服务器)的某个端口转发到本地端指定机器的指定端口
    • 这就是反向两个字的意思!!!
  • -L 将本地机(客户机)的某个端口转发到远端指定机器的指定端口
    • 这就是正向两个字的意思!!!
  • -p 指定远程主机的端口

机器状况:

流程说明:

  1. 第一步:就是在机器A上做到B机器的反向代理
    1. 命令: ssh -fCNR 7280:localhost:22 root@123.123.123.123
    2. 步骤:
      1. 登录B机器:ssh root@123.123.123.123 注:这里是默认的22端口
      2. 在B机器中端口转发:B:7280->A:22,注:我认为这就是一个正向代理。也就说:反向代理中是正向代理的包装!
    3. 结果:
      1. 此时,AB之间的ssh连接一直保持(结果就像B ssh连接了A一样,只不过是由A要求B做的)
      2. 此时,可以在B机器中使用ssh -p 7280 localhost来登录
  2. 第二步:在B机器上做正向的代理实现本地端口的转发
    1. ssh -fCNL *:1234:localhost:7280 localhost
    2. 需要这次转发的原因是:B:7280是B机器与A进行通讯的ssh进程启动的端口(只有反向代理才会有),而不是登录B机器的端口,因此我们需要B机器上的另一个端口B:1234作为B机器的登录端口,并将此次登录的内容,转发到B:1234->B:7280
  3. 第三部:在另一台外网服务器C中通过B:1234端口来登录B
    1. ssh -p1234 gdut728@123.123.123.123

检验是否已经启动了可以使用ps aux | grep ssh指令来查看:

2019年12月17日 下午9:33

一文详解 Linux 系统常用监控工具(top,htop,iotop,iftop) - Jerry_Jin - 博客园
Iotop 是用来监控硬盘 IO 的使用情况,UI 界面和 top 类似,其中包括 PID、用户、I/O、进程 等相关信息。
Linux 下系统自带的 IO 统计工具如 iostat,nmon 等大多数是只能统计到 per 设备的读写情况,如果你想知道每个进程是如何使用 IO 的就比较麻烦,使用 iotop 命令可以很方便的查看。

2019年12月17日 下午9:31
一文详解 Linux 系统常用监控工具(top,htop,iotop,iftop) - Jerry_Jin - 博客园

Iftop 命令常用的参数如下,这里做个小规模总结:

  • -I 设定监测的网卡,如:# iftop -I eth1
  • -B 以 bytes 为单位显示流量 (默认是 bits),如:# iftop -B
  • -n 使 host 信息默认直接都显示 IP,如:# iftop -n
  • -N 使端口信息默认直接都显示端口号,如: # iftop -N
  • -F 显示特定网段的进出流量,如 # iftop -F 10.10.1.0/24 或 # iftop -F 10.10.1.0/255.255.255.0
  • -h( display this message ),帮助,显示参数信息
  • -p 使用这个参数后,中间的列表显示的本地主机信息,出现了本机以外的 IP 信息;
  • -b 使流量图形条默认就显示;
    再来总结一下,进入 iftop 视图画面后的一些操作命令 (注意大小写):
  • 按 h切换是否显示帮助;
  • 按 n切换显示本机的 IP 或主机名;
  • 按 s切换是否显示本机的 host 信息;
  • 按 d切换是否显示远端目标主机的 host 信息;
  • 按 t切换显示格式为 2 行 /1 行 /只显示发送流量 /只显示接收流量;
  • 按 N切换显示端口号或端口服务名称;
  • 按 S切换是否显示本机的端口信息;
  • 按 D切换是否显示远端目标主机的端口信息;
  • 按 p切换是否显示端口信息;
  • 按 P切换暂停 /继续显示;
  • 按 b切换是否显示平均流量图形条;
  • 按 T切换是否显示每个连接的总流量;
  • 按 l打开屏幕过滤功能,输入要过滤的字符,比如 ip,按回车后,屏幕就只显示这个 IP 相关的流量信息;
  • 按 L切换显示画面上边的刻度;刻度不同,流量图形条会有变化;
  • 按 j或按k可以向上或向下滚动屏幕显示的连接记录;
  • 按 1或2或3可以根据右侧显示的三列流量数据进行排序;
  • 按<根据左边的本机名或 IP 排序;
  • 按>根据远端目标主机的主机名或 IP 排序;
  • 按o切换是否固定只显示当前的连接;