分类 Network 中的文章

Iperf3 小结

定义 iPerf3 是用于主动测量 IP 网络上可达到的最大带宽的工具。 它支持与时序,缓冲区和协议(TCP,UDP,带有 IPv4 和 IPv6 的 SCTP)相关的各种参数的调整。 对于每个测试,它都会报告带宽,损耗和其他参数。 不向后兼容——可以说已经不是 iperf 功能 基本——Iperf2 也有 TCP 和 UDP 测试 (-u) 设置端口(-p) 设……

阅读全文

OpenvSwitch 初探

定义 一句话:openvswitch 就是软件(虚拟)交换机。 Open vSwitch 是一个高质量的、多层虚拟交换机, 使用开源 Apache2.0 许可协议,由 Nicira Networks 开发,主要实现代码为可移植的 C 代码。 目的是让大规模网络自动化可以通过编程扩展,同时仍然支持标准的管理接口和协议(例如 NetFlow, sFlow, SPAN, RSPAN, CLI, LACP, 802.1ag)。 此外,它被设计……

阅读全文

单播 广播 组播

概念准备 只有 UDP 套接字允许广播或多播 无状态 无连接 使用 UDP 协议进行信息的传输之前不需要建议连接。换句话说就是客户端向服务器发送信息,客户端只需要给出服务器的 ip 地址和端口号,然后将信息封装到一个待发送的报文中并且发送出去。至于服务器端是否存在,或者能否收到该报文,客户端根本不用管。 单播用……

阅读全文

常见 IO 模型研究

核心信息 IO 发生时涉及的对象和步骤。对于一个 network IO (这里我们以 read 举例),它会涉及到两个系统对象,一个是调用这个 IO 的 process (or thread),另一个就是系统内核 (kernel)。当一个 read 操作发生时,它会经历两个阶段: 等待数据准备 (Waiting for the data to be ready) 将数据从内核拷贝到进程中 (Copying the data from the kernel to the process) 记住这两……

阅读全文

Rpc 标准库的几种实现方式

server server.go package main import ( "errors" "fmt" "net" "net/http" "net/rpc" ) type Args struct { A, B int } type Quotient struct { Quo, Rem int } type Arith int func (t *Arith) Multiply(args *Args, reply *int) error { *reply = args.A * args.B return nil } func (t *Arith) Divide(args *Args, quo *Quotient) error { if args.B == 0 { return errors.New("divide by zero") } quo.Quo = args.A / args.B quo.Rem = args.A % args.B return nil } func main() { arith := new(Arith) rpc.Register(arith) rpc.HandleHTTP() // http 实现 err := http.ListenAndServe(":1234", nil) // http rpc 监听 if err != nil { fmt.Println(err.Error()) } } // TCP 实现 //func main() { // arith := new(Arith) // rpc.Register(arith) // tcpAddr, err := net.ResolveTCPAddr("tcp", ":1234") // checkError(err) // listener, err := net.ListenTCP("tcp", tcpAddr) // checkError(err) // for……

阅读全文

Iptables 使用

是什么 Linux 上常用的防火墙软件,是 netfilter 项目的一部分。 可以直接配置,也可以通过许多前端和图形界面配置 语法 iptables(选项)(参数) 选项 -t, –table table 对指定的表 table 进行操作, table 必须是 raw, nat,filter,mangle 中的一个。如果不指定此选项,默认的是 filter 表。 通用匹配:源地址目标地址的匹……

阅读全文

Tcpdump 使用

是什么 用简单的话来定义 tcpdump,就是:dump the traffic on a network,根据使用者的定义对网络上的数据包进行截获的包分析工具。 tcpdump 可以将网络中传送的数据包的“头”完全截获下来提供分析。 它支持针对网络层、协议、主机、网络或端口的过滤,并提供 and、or、not 等逻辑语句来帮助你去……

阅读全文

TCP 总结

通信过程 ![通信过程](/image/network/tcp 通信过程。png) 服务端: socket:建立 socket bind:绑定服务端 ip listen:开始监听 accept:等待连接(阻塞) read/write:通信 close:关闭连接 三次握手——建立通信过程 参考:TCP 的三次握手与四次挥……

阅读全文

TCP UDP 总结

UDP 用户数据报协议,是一个无连接的简单的面向数据报的运输层协议。 UDP 不提供可靠性,它只是把应用程序传给 IP 层的数据报发送出去,但是并不能保证它们能到达目的地。由于 UDP 在传输数据报前不用在客户和服务器之间建立一个连接,且没有超时重发等机制,故而传输速度很快。 UDP 特点 无连接:UDP 是面向无连接……

阅读全文