互联网协议
OSI七层
应用层 - 表示层 - 会话层 - 传输层 - 网络层 - 数据链路层 - 物理层
OSI五层
应用层 - 传输层 - 网络层 - 数据链路层 - 物理层
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ShbQ1F5R-1602577641704)(https://www.liwenzhou.com/images/Go/socket/osi.png)]
socket编程
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-m5wQCAbm-1602577641706)(https://www.liwenzhou.com/images/Go/socket/socket.png)]
GO实现TCP通信
详细代码点击这里
服务端:
listener, _ := net.Listen("tcp","127.0.0.1:20000")
for {
conn, _ := listener.Accept() // 建立连接
go process(conn) // 启动goroutine监听连接
}
客户端:
conn, _ := net.Dial("tcp","127.0.0.1:20000")
defer conn.Close()
for {
msg := "xxx"
_, err := conn.Write([]byte(msg))
}
TCP粘包
主要原因:tcp数据传递模式是流模式,在保持长连接的时候可以进行多次的收和发。
1.由Nagle算法造成的发送端的粘包:Nagle算法是一种改善网络传输效率的算法。
2.接收端接收不及时造成的接收端粘包
GO实现UDP通信
面向无连接的协议,多用于直播
详细代码点击这里