go的socket编程

go-server 一个在学习中形成的socket服务

https://blog.csdn.net/zboyco/article/details/104314488

 

golang socket 实现分析(一)

https://www.cnblogs.com/zongjiang/p/6569342.html

//发起连接请求
func (fd *netFD) connect(la, ra syscall.Sockaddr, deadline time.Time, cancel <-chan struct{}) error {
   switch err := connectFunc(fd.sysfd, ra); err {
     //异常处理
    ....
   }
}

打造一款属于自己的go语言socket框

https://blog.csdn.net/try_mistake/article/details/82344022

https://blog.csdn.net/try_mistake/article/details/82344087

当然想要打造一款socket框架,这么点是完全不够的! 
一款完善的socket框架包括有: 
- 分包处理 
- 协议封装 
- 框架路由 
- session管理

 

 

go socket Fd family

 

tcp例子

 

https://www.cnblogs.com/yin5th/p/9274495.html

 

client连接强制断开,未释放socket。client过一段时间time_wait就消失了。

而server报错:read from connect failed, err: EOF。此时server连接已经被释放.

 

关于字节序

https://blog.csdn.net/aslackers/article/details/78742491

Go中处理大小端序的代码位于 encoding/binary ,包中的全局变量BigEndian用于操作大端序数据,LittleEndian用于操作小端序数据,这两个变量所对应的数据类型都实行了ByteOrder接口:

crc校验

https://blog.csdn.net/xlhcgd/article/details/44980005

sendCrc := crc32.ChecksumIEEE(sendBytes)

socket传送二进制流的一些总结

https://www.cnblogs.com/zhugaopeng/p/9688882.html

心跳包

客户端和服务器之间会有定时心跳检测连接的存活,默认30s来一次。tcp的关闭是通过FIN包来通知对方的,如果因为网络问题,对方连FIN包都收不到,那么即使一边关闭了套接字,另一边可能还以为连接正常。所以心跳检测存活机制在长连接应用里非常普遍。如果客户端连续发了三次心跳都没有收到服务器的回复,那么就认为连接已经关闭。服务器也会有连接存活检测,如果一个客户端连接90s内没有任何消息进来,那么也认为该连接已经断开。服务器不会主动发送心跳消息。

解决这个问题的办法是保活。服务端发送心跳包,客户端接受到之后进行回应。客户端告诉服务器,还在线,不要断开连接。如果客户端长时间没有回应,服务器断开与此客户端的连接,减少资源占用。

3. 提高二进制流的传输效率

   直接传输二进制流不是一个高效的行为,也不是一个安全的行为。直接发送一个二进制流很容易被截获,从而导致信息泄露。

   提高二进制流传输效率的办法就是加密压缩再发送。服务器加密压缩,客户端解密解压缩。可采取两种方式:

   1)整体压缩,分段发送

   2)分段压缩,分段发送

   要求不是很高的话,采取方式一比较好。简单粗暴。。

, 利用OpenSSL库对Socket传输进行安全加密(RSA+AES)

// 1. 利用RSA安全传输AES生成密钥所需的Seed(32字节)

// 2. 利用AES_encrypt/AES_decrypt对Socket上面的业务数据进行AES加密/解密 //

// * 理论上只需要AES就能保证全部流程,但由于AES加密所需要的AES-KEY是一个结构 // * 这个一个结构,如果通过网络进行传输,就需要对它进行网络编码,OpenSSL里面没有现成的API // * 所以就引入RSA来完成首次安全的传输,保证Seed不会被窃听 // * 同样,只使用RSA也能完成全部流程,但由于RSA的处理效率比AES低, // * 所以在业务数据 传输加密上还是使用AES // ---

 

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值