网络的造诣
文章平均质量分 75
爱神CODE
用你想用的,干你想干的,满嘴跑马车的没一个好东西。
展开
-
Golang在Linux环境下的POSIX风格socket编程
这里给出一个服务端和客户端,服务端可以接收多个连接,并且利用Go的杀手特性go和channel来替代select进行数据的接受。服务端:package mainimport ( "fmt" . "syscall")func RecvRoutine(sockfd int, session chan string) { var buffer []byte = make(原创 2014-06-22 12:26:57 · 3082 阅读 · 0 评论 -
SDN控制器的拓扑管理与LLDP链路发现
SDN控制器通过LLDP(Link Layer Discovery Protocol,链路发现协议)协议进行链路发现,然后根据发现协议搜集的信息来识别和管理网络拓扑结构。LLDP协议为了讲解SDN控制器的发现原理,首先简要介绍LLDP协议的相关内容,先关内容来自百度百科和这篇博文:LLDP帧的格式如下:图中的TLV都属于LLDP帧的的数据字段。这张图中显示的LLDP原创 2014-09-22 13:04:39 · 12996 阅读 · 1 评论 -
用Golang自己构造ICMP数据包
ICMP是用来对网络状况进行反馈的协议,可以用来侦测网络状态或检测网路错误。限于当前Golang在网络编程方面的代码稀缺,资料甚少,所以分享一个用Golang来构造ICMP数据包并发送ping程序的echo消息的实例:package mainimport ( "bytes" "encoding/binary" "fmt" "net")type ICMP struc原创 2014-03-18 21:41:51 · 12667 阅读 · 4 评论 -
Golang实现发送DNS请求
package mainimport ( "bytes" "encoding/binary" "fmt" "net")type DNSHeader struct { ID uint16 Flag uint16 QuestionCount uint16 AnswerRRs uint16 //RRs is Resource Re原创 2014-04-04 16:03:41 · 7294 阅读 · 3 评论 -
Go如何发送广播包
网络数据包的发送分为三种方式,分别是单播、组播、广播。广播通俗地讲,就是让你的机器发送的数据包可以被同一个网络内的所有主机都接收到。在讲解如何发送广播包之前,先来看看跟广播有关的知识:我们都知道IP地址的作用是用来在网络中定位某个网络接口的(没错,准确的讲,IP并不是定位某一台主机)。我们通常见到的IP地址的形式都是如下这样子的:原创 2014-07-12 21:49:27 · 6024 阅读 · 0 评论 -
Go语言linux下构造tcp数据包(不使用net包和Cgo)
Golang可以通过syscall包中的相关socket函数(Windows和Linux中syscall中网络编程的函数不太一样)来进行网络编程,可以用我们熟悉的方法使用raw socket,因为最近在搞一些协议的学习,所以特意试了试,和普通的linux+C的socket编程基本没什么区别。代码如下:package mainimport ( "bytes"原创 2014-03-03 19:54:07 · 9955 阅读 · 3 评论 -
用Golang编写的网际校验和算法
func CheckSum(data []byte) uint16 { var ( sum uint32 length int = len(data) index int ) //以每16位为单位进行求和,直到所有的字节全部求完或者只剩下一个8位字节(如果剩余一个8位字节说明字节数为奇数个) for length > 1 { sum += uint32(data[i原创 2014-03-18 20:12:59 · 3485 阅读 · 1 评论 -
Golang发送post表单请求
先写一个可以接收post请求的服务器:package mainimport ( "fmt" "net/http")func main() { http.HandleFunc("/postpage", func(w http.ResponseWriter, r *http.Request) { //接受post请求,然后打印表单中key和value字段的值 if r.Me原创 2014-04-03 14:48:28 · 22380 阅读 · 0 评论 -
Golang在windows下的socket编程(不使用net包和Cgo)
go也可以想普通的socket编程那样: 创建套接字 -> 绑定 -> 监听 …当然,go中有net包可以使用,但是如果要实现一些比较底层的操作,例如自己构造数据包,就可以通过这种比较原始的方式来进行socket编程。代码如下:package mainimport ( . "fmt" "strconv" "strings"原创 2014-01-22 17:00:55 · 5546 阅读 · 2 评论 -
SDN的基本概念和基本架构
SDN是一种原创 2014-09-02 11:00:24 · 28167 阅读 · 1 评论