大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。
Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺
看了一周的sdn,写下一点总结和心得体会。
1.sdn中不一定非得用openflow来作为南向协议,其他的南向接口协议还有很多,比如pcep,netconf,snmp,bgp-ls
2.segment routing也需要一个集中的控制器,只要硬件条件支持,sr可以和sdn进行结合
3.ECMP通过对流的数据包头部进行哈希取模运算,将数据流映射到不同的转发路径
4.谷歌的B4采取的是ip-in-ip的形式进行的
5.一些论文:
1)http://www.jos.org.cn/jos/ch/reader/create_pdf.aspx?file_no=16039&year_id=2016&quarter_id=S2&falg=1
2)http://www.jsjkx.com/jsjkx/ch/reader/create_pdf.aspx?file_no=20176A061&year_id=2017&quarter_id=6A&falg=1
3)http://www.jos.org.cn/josen/ch/reader/create_pdf.aspx?file_no=4935&year_id=2016&quarter_id=2&falg=1
4)https://patentimages.storage.proxy.ustclug.org/57/59/4a/b7a6cd6ab20796/CN107070792A.pdf
5)https://patentimages.storage.proxy.ustclug.org/9b/7f/50/d733c3bb64f443/CN104468352A.pdf
6.
7.**Linux网络配置
Linux网络配置方法简介。**
配置IP地址
使用ipconfig
ifconfig eth0 192.168.1.3 netmask 255.255.255.0
使用用ip命令增加一个IP
ip addr add 192.168.1.4/24 dev eth0
使用ifconfig增加网卡别名
ifconfig eth0:0 192.168.1.10
这样配置的IP地址重启机器后会丢失,所以一般应该把网络配置写入文件中。如Ubuntu可以将网卡配置写入/etc/network/interfaces(Redhat和CentOS则需要写入/etc/sysconfig/network-scripts/ifcfg-eth0中):
auto lo
iface lo inet loopback
auto eth0
iface eth0 inet static
address 192.168.1.3
netmask 255.255.255.0
gateway 192.168.1.1
auto eth1
iface eth1 inet dhcp
配置默认路由
使用route命令
route add default gw 192.168.1.1
也可以使用ip命令
ip route add default via 192.168.1.1
配置VLAN
安装并加载内核模块
apt-get install vlan
modprobe 8021q
添加vlan
vconfig add eth0 100
ifconfig eth0.100 192.168.100.2 netmask 255.255.255.0
删除vlan
vconfig rem eth0.100
配置硬件选项
改变speed
ethtool -s eth0 speed 1000 duplex full
关闭GRO
ethtool -K eth0 gro off
开启网卡多队列
ethtool -L eth0 combined 4
开启vxlan offload
ethtool -K ens2f0 rx-checksum on
ethtool -K ens2f0 tx-udp_tnl-segmentation on
查询网卡统计
ethtool -S eth0
8.网桥(bridge)
网桥是一个二层设备,工作在链路层,主要是根据MAC学习来转发数据到不同的port。
创建网桥
brctl addbr br0
添加设备到网桥
brctl addif br0 eth1
查询网桥mac表
brctl showmacs br0
veth
veth pair是一对虚拟网络设备,一端发送的数据会由另外一端接受,常用于不同的网络命名空间。
创建veth pair
ip link add veth0 type veth peer name veth1
将veth1放入另一个netns
ip link set veth1 netns newns
TAP/TUN
TAP/TUN设备是一种让用户态程序向内核协议栈注入数据的设备,TAP等同于一个以太网设备,工作在二层;而TUN则是一个虚拟点对点设备,工作在三层。
ip tuntap add tap0 mode tap
ip tuntap add tun0 mode tun这里写代码片
10**.lvs**
Linux Virtual Server (lvs) 是Linux内核自带的负载均衡器,也是目前性能最好的软件负载均衡器之一。lvs包括ipvs内核模块和ipvsadm用户空间命令行工具两部分。
在lvs中,节点分为Director Server和Real Server两个角色,其中Director Server是负载均衡器所在节点,而Real Server则是后端服务节点。当用户的请求到达Director Server时,内核netfilter机制的PREROUTING链会将发往本地IP的包转发给INPUT链(也就是ipvs的工作链),在INPUT链上,ipvs根据用户定义的规则对数据包进行处理(如修改目的IP和端口等),并把新的包发送到POSTROUTING链,进而再转发给Real Server。
11.https://nginx.org/en/
https://mp.weixin.qq.com/s?__biz=MzA3OTgyMDcwNg%3D%3D&idx=1&mid=2650625837&sn=2b86df07eabba8ff2035583913a0ef41
12.scapy
scapy是一个强大的python网络数据包处理库,它可以生成或解码网络协议数据包,可以用来端口扫描、探测、网络测试等。
scapy安装
pip install scapy
简单使用
scapy提供了一个简单的交互式界面,直接运行scapy命令即可进入。当然,也可以在python交互式命令行中导入scapy包进入
from scapy.all import *
查看所有支持的协议和预制工具:
ls()
lsc()
构造IP数据包
pkt=IP(dst=”8.8.8.8”)
pkt.show()
print pkt.dst # 8.8.8.8
str(pkt) # hex string
hexdump(pkt) # hex dump
输出HEX格式的数据包
import binascii
from scapy.all import *
a=Ether(dst=”02:ac:10:ff:00:22”,src=”02:ac:10:ff:00:11”)/IP(dst=”172.16.255.22”,src=”172.16.255.11”, ttl=10)/ICMP()
print binascii.hexlify(str(a))
TCP/IP协议的四层模型都可以分别构造,并通过/连接
Ether()/IP()/TCP()
IP()/TCP()
IP()/TCP()/”GET / HTTP/1.0\r\n\r\n”
Ether()/IP()/IP()/UDP()
Ether()/IP(dst=”www.slashdot.org”)/TCP()/”GET /index.html HTTP/1.0 \n\n”
从PCAP文件读入数据
a = rdpcap(“test.cap”)
发送数据包
三层发送,不接收
send(IP(dst=”8.8.8.8”)/ICMP())
二层发送,不接收
sendp(Ether()/IP(dst=”8.8.8.8”,ttl=10)/ICMP())
三层发送并接收
二层可以用srp, srp1和srploop
result, unanswered = sr(IP(dst=”8.8.8.8”)/ICMP())
发送并只接收第一个包
sr1(IP(dst=”8.8.8.8”)/ICMP())
发送多个数据包
result=srloop(IP(dst=”8.8.8.8”)/ICMP(), inter=1, count=2)
嗅探数据包
sniff(filter=”icmp”, count=3, timeout=5, prn=lambda x:x.summary())
a=sniff(filter=”tcp and ( port 25 or port 110 )”,
prn=lambda x: x.sprintf(“%IP.src%:%TCP.sport% -> %IP.dst%:%TCP.dport% %2s,TCP.flags% : %TCP.payload%”))
SYN扫描
sr1(IP(dst=”172.217.24.14”)/TCP(dport=80,flags=”S”))
ans,unans = sr(IP(dst=[“192.168.1.1”,”yahoo.com”,”slashdot.org”])/TCP(dport=[22,80,443],flags=”S”))
TCP traceroute
ans,unans=sr(IP(dst=”www.baidu.com”,ttl=(2,25),id=RandShort())/TCP(flags=0x2),timeout=50)
for snd,rcv in ans:
print snd.ttl,rcv.src,isinstance(rcv.payload,TCP)
ARP Ping
ans,unans=srp(Ether(dst=”ff:ff:ff:ff:ff:ff”)/ARP(pdst=”192.168.1.0/24”),timeout=2)
ans.summary(lambda (s,r): r.sprintf(“%Ether.src% %ARP.psrc%”) )
ICMP Ping
ans,unans=sr(IP(dst=”192.168.1.1-254”)/ICMP())
ans.summary(lambda (s,r): r.sprintf(“%IP.src% is alive”) )
TCP Ping
ans,unans=sr( IP(dst=”192.168.1.*”)/TCP(dport=80,flags=”S”) )
ans.summary( lambda(s,r) : r.sprintf(“%IP.src% is alive”) )
发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/196582.html原文链接:https://javaforall.cn
【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛
【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...