
网络
文章平均质量分 73
柳清风09
这个作者很懒,什么都没留下…
展开
-
再次思考一下go网络包中的接口设计
我们经常使用的http包,无论是客户端还是服务端,都有很多值得推敲的地方。首先是服务端设计;上上篇 我们通过监听一个UDS提供一个http服务,代码大概是这样的 unixListener, err := net.Listen("unix", os.Args[1]) if err != nil { panic(err) } server.Serve(unixListener)这里创建一个listener,然后交给serve去处理。这就体现了接口的作用,把监听交给服务去处理,这里监听其实只原创 2020-12-09 19:54:40 · 340 阅读 · 0 评论 -
奇技淫巧之dummy网卡
在我们日常工作中,是否有这种需求,在断网的情况下,假装网络可以通,仍然可以通过类似192.168.1.1 这样的IP 访问服务 。除了我们经常使用本例换回口127.0.0.1以外,今天介绍一个神器:dummy网卡。ip link add nodelocaldns type dummyip addr add 169.254.20.10 dev nodelocaldnsip addr add 10.96.0.10 dev nodelocaldns创建网卡后,就可以本地ping通了# ip a1:原创 2020-12-09 19:19:16 · 2898 阅读 · 0 评论 -
通过unix socket建立http连接
除了我们熟知的tcp连接以外还可以通过本地socket建立通信,Unix Domain Socket的英文简称是UDS,就是一种常用的方式,但它只支持建立本地连接,它的好处是通过路径而非端口建立连接,好处是可以避免端口占用。首先看服务端代码package mainimport ( "fmt" "net" "net/http" "os")func main() { if len(os.Args) < 2 { fmt.Fprintln(os.Stderr, "usage:",原创 2020-12-05 16:00:27 · 2588 阅读 · 1 评论 -
http 301 302 303 307 308 傻傻分不清
http的重定向我们经常是张口就来,“小明,在nginx上做一个重定向就行了”。整个流程非常简单,服务端HTTP返回码是30x,头里面的Location字段代表新的URL。如下图所示:但重定向也还是有需要深入探讨地方,返回码不仅有我们经常使用301和303还有302 307 308 它们有啥区别呢。可以按照是否缓存和重定向方法,两个维度去拆分。缓存(永久重定向)不缓存(临时重定向)转GET301302、303方法保持308307如果是永久重定向那么浏览器客户端原创 2020-07-04 16:37:48 · 1936 阅读 · 1 评论 -
linux内核网络参数tcp_tw_recycle 和 tcp_tw_reuse 你搞清楚了吗?
今天在生产环境遇到了一个奇怪的网络现象,通过抓包发现,SYN包没有ACK。可以ping通,防火墙开放的情况下,基本确定对方服务器问题。首先排除端口是否已经耗尽,发现仍有很多富余那么可能就是linux内核网络参数tcp_tw_recycle捣鬼。登录对方主机发现这个参数的确被设置成1.# sysctl -a|grep tcp_tw_recyclenet.ipv4.tcp_tw_recycle...原创 2019-10-21 15:05:35 · 14676 阅读 · 0 评论 -
计算机网络之基础知识(二)
地址一个地址必须是一个明确的对象,就像你和被人交流,每个地址就像一个每个人有自己的一个ID号,如果ID号冲突了,那就不能正确的交流,这就是地址的唯一性。如果地址不多,有唯一地址就可以确定通信双方,当地址变的很多的时候,如何高效的从中找出目标地址是一个重要的问题,这就是地址的另一个特性,分层,这个分层就像是国家分层一样,省、市、县逐一向下,IP地址有主机号和网络号组成,通过子网掩码区分,网络号相同的I原创 2017-09-24 09:35:13 · 36350 阅读 · 0 评论 -
计算机网络之基础知识(一)
云计算的发展离不开网络的发展,没有发达的网络就不能提供计算的实时性。当今网络发展越来越快,新技术也是层出不穷,面对复杂的技术世界,我觉得还是要把一些基础的东西理清楚。网络发展历程如果是单机版就没有网络的必要,在计算机的世界里面最初是没有也没必要存在网络。为了解决更多人使用计算机出现了批处理系统,批处理就是顺序的一批一批的从磁带中读取任务并执行;后来就出现了分时系统,允许多个终端同时与计算机相连,允许原创 2017-09-23 14:56:18 · 36856 阅读 · 0 评论 -
计算机网络之基础知识(三)
数据链路层数据链路层规定了通过通信媒介互联的设备之间的传输规范,这里的通信媒介包括光纤、电缆、电波等,设备包括交换机、网桥、中继器等。众所周知计算机以0、1表示数据信息,物理层通过高低电压、光的闪灭、以及电波的强弱等处理信号。 数据链路层传输必须提到一个概念是mac地址,这个和下面要说的网络层的IP地址类似。mac地址用于标识数据链路中互联的节点,48个比特,一般烧录到网卡的ROM里面,一般情况是原创 2017-09-24 15:34:18 · 37461 阅读 · 0 评论 -
记录一次奇怪的tcpdump
tmpdump在我们日常的工作中经常使用,先介绍一下基本使用tcpdump -i eth0 icmp-i 是指定网卡, icmp是协议。 还有一些其他常用参数譬如 -b在数据-链路层上选择协议,包括ip、arp、rarp、ipx都是这一层的。tcpdump -b arp 将只显示网络中的arp即地址转换协议信息;-l使标准输出变为缓冲行形式,如tcpdump -l >...原创 2018-08-15 08:21:21 · 3607 阅读 · 0 评论 -
linux的网络hack用法之arp
arp我们都知道arp协议在网络中重要位置,如果没有arp整个二层和三层的网络将全部瘫痪,那么linux 内核在arp上面有哪些细节和特殊用法吗,下面我们逐一介绍 首先看一下各种状态 这里我们看到arp表所有的状态信息,我特地标注黄色的stale状态是一个最特殊的状态。 然后再看看各个状态的切换图 首先是arp的表的配置在/proc/sys/net/ipv4/neigh/*...原创 2018-09-03 10:23:26 · 1559 阅读 · 1 评论 -
linux网络hack用法之onlink路由
在单网卡机器上,如果配置eth0的地址为192.168.40.249/32,那么别指望用常规的方式添加任何路由,这是因为链路层直连路由已经不存在了,我们如下的尝试: route add -net 192.168.0.0/16 gw 192.168.40.254 将失败,因为网关地址并不和本地地址同在任何一个网段,那么如何是好呢?Linux的iproute2工具包提供了一个onlink参数,可以...原创 2018-09-12 10:53:54 · 6756 阅读 · 0 评论 -
flannel 最新版网络实现解析
我发布在公司网站上,在此连接记录一下:http://college.creditease.cn/#/detail/15/176原创 2018-10-25 08:46:18 · 1130 阅读 · 0 评论 -
容器CNI完全解读calico实现(三)
上一篇介绍了bridge的实现,这里介绍一下calico的实现。和上一篇的结构一样的,先看add然后看del,具体添加网卡的代码如下:func cmdAdd(args *skel.CmdArgs) error { // Unmarshal the network config, and perform validation conf := NetConf{} if err :原创 2017-07-18 09:16:23 · 22806 阅读 · 2 评论 -
容器CNI完全解读bridge实现(二)
之前介绍CNI基本操作,现在介绍一个bridge的实现。 它也实现了创建和删除接口。 先看创建接口:func cmdAdd(args *skel.CmdArgs) error { n, cniVersion, err := loadNetConf(args.StdinData) if err != nil { return err } if n.Is原创 2017-07-17 14:46:35 · 19312 阅读 · 0 评论 -
Floodlight源码阅读之TreeMap存储ACL(一)
Floodlight 控制器是一个企业级的,使用apache协议的,使用Java开发的OpenFlow控制器Floodlight的所有ACL的规则都存储在TreeMap中,提供存储和删除接口。ok,下面直接看代码提供一个保存的方法 @Post public String store(String json) { IACLService aclService = (IACLSe原创 2016-06-01 18:37:18 · 2908 阅读 · 0 评论 -
Floodlight源码阅读之链路发现
Floodlight的链路发现基于LLDP,LLDP并不是Floodlight发明的,他全称叫做链路层发现协议,一个和厂商无关的二层协议链路发现的核心代码在LinkDiscoveryManager这个类里面。它实现了IOFMessageListener用于接收消息,还实现了IFloodlightModule,那么它就是Floodlight的一个模块了,整个Floodlight都是模块化的,后续原创 2016-06-12 09:51:29 · 3114 阅读 · 1 评论 -
SDN开发环境搭建之ryu+ovs+mininet
SDN开发环境搭建之ryu+ovs+mininet原创 2016-09-12 17:15:21 · 11552 阅读 · 0 评论 -
网络基础之网络怎样联通的
网络基础之网络怎样联通的原创 2016-09-18 17:29:42 · 8033 阅读 · 0 评论 -
iptables 日志拦截
IPtable是Linux防火墙,有个非常重要的图和大家分享一下: 上面的图详细介绍了IPtables数据流向,非常直观。 当规则很多的时候很难确定哪些链被使用了,iptables支持log动作,下面是自己使用例子iptables -t raw -I OUTPUT -d 10.254.51.153 -j LOG --log-level 7 --log-prefix "raw out: "i原创 2017-04-06 19:21:56 · 10236 阅读 · 1 评论 -
flannel udp和vxlan性能测试
flannel是kubernetes默认使用的网络,它是一种overlay网络,它有两种网络模式分别是UDP和vxlan。本实验测试这两种方式的性能差别:测试环境本身是万兆网。UDP模式:60秒单线程测试iperf3 -c x.x.x.x -t 60 结果: [ 4] 0.00-60.00 sec 3.33 GBytes 477 Mbits/sec 15716原创 2017-04-06 16:50:29 · 15804 阅读 · 0 评论 -
flannel 实战与源码分析(四)
上一篇介绍了flannel服务的启动。下面看看flanneld怎个进程是怎样运行的。设计到backend部分已vxlan为例。 每个节点的网段分配是上一篇说的RegisterNetwork,但具体怎么做的呢?这样确定自己网段呢?subnetAttrs, err := newSubnetAttrs(be.extIface.ExtAddr, dev.MACAddr()) if err != n原创 2017-04-25 19:48:08 · 22891 阅读 · 0 评论 -
flannel 实战与源码分析(五)
上一篇介绍的vxlan模式,本篇还想介绍一个host-gw模式,顾名思义,就是主机网关模式。这个和calico的路由模式中主机网关是一样的,只不过没有BGP罢了。 先介绍一下怎么使用,然后分析了源码。先设置一下网络模式etcdctl set /flannel/network/config '{"Network": "192.168.0.0/16","SubnetLen": 24,"Subnet原创 2017-04-26 15:07:40 · 21711 阅读 · 0 评论 -
flannel 实战与源码分析(六)
其实flannel的东西基本都说完了,还有一个功能点由于和kubernetes紧密结合的,所以在这里解释一下。相信大家都还记得之前写的创建SubnetManagerfunc newSubnetManager() (subnet.Manager, error) { if opts.kubeSubnetMgr { return kube.NewSubnetManager()原创 2017-04-26 17:33:28 · 20390 阅读 · 0 评论 -
flannel 实战与源码分析(三)
之前一直介绍flannel的使用,现在正是进入代码讲解,看看flannel是如何实现的,先看启动func main() { flag.Set("logtostderr", "true") // 解析参数 flag.Parse() if flag.NArg() > 0 || opts.help { fmt.Fprintf(os.Stderr, "Usage原创 2017-04-25 10:06:35 · 21992 阅读 · 0 评论 -
flannel 实战与源码分析(七)
这是flannel最后一篇,我原本不准备介绍UDP,因为这种方案的网络损耗实在是太多,大约一半损耗,vxlan大约是30%损耗。但基本的UDP使用我还是想和大家分享一下的,主要是tun设备的使用。 像UDP的RegisterNetwork和VXLAN一样,我就不单独说了backend/udp/udp_network.go。func (n *network) Run(ctx context.Con原创 2017-04-26 19:19:28 · 18801 阅读 · 0 评论 -
Tcp关闭
CLOSE_WAIT 和 TIME_WAIT原创 2014-12-30 14:33:10 · 860 阅读 · 0 评论