TCP/UDP

TODO:Golang语言TCP/UDP协议重用地址端口

微笑、不失礼 提交于 2019-12-10 14:11:09
TODO:Golang语言TCP/UDP协议重用地址端口 这是一个简单的包来解决重用地址的问题。 go net包(据我所知)不允许设置套接字选项。 这在尝试进行TCP NAT时尤其成问题,其需要在同一TCP端口上进行侦听和拨号的过程。 这个包使我有可能实现这个功能。 这是一个非常小众的用例,但也许这个软件包可以随着时间的推移变得更普遍。 此包允许从同一TCP端口侦听和拨号;不能使用同一UDP端口监听,但可以监听同一UDP端口。 这意味着设置了以下sockopts: syscall.SO_REUSEADDR syscall.SO_REUSEPORT 例子: // listen on the same port. l1, _ := reuse.Listen(“tcp”, “127.0.0.1:1234”) l2, _ := reuse.Listen(“tcp”, “127.0.0.1:1234”) // dial from the same port. l1, _ := reuse.Listen(“tcp”, “127.0.0.1:1234”) l2, _ := reuse.Listen(“tcp”, “127.0.0.1:1235”) c1, _ := reuse.Dial(“tcp”, “127.0.0.1:1234”, “127.0.0.1:1235”) c2, _ :=

浅谈 HTTPS 和 SSL/TLS 协议的背景与基础

て烟熏妆下的殇ゞ 提交于 2019-11-27 19:26:36
相关背景知识 要说清楚 HTTPS 协议的实现原理,至少需要如下几个背景知识。 大致了解几个基本术语(HTTPS、SSL、TLS)的含义 大致了解 HTTP 和 TCP 的关系(尤其是“短连接”VS“长连接”) 大致了解加密算法的概念(尤其是“对称加密与非对称加密”的区别) 大致了解 CA 证书的用途 考虑到很多技术菜鸟可能不了解上述背景,俺先用最简短的文字描述一下。如果你自认为不是菜鸟,请略过本章节,直接去看“HTTPS 协议的需求”。 先澄清几个术语——HTTPS、SSL、TLS 1. “HTTP”是干嘛用滴? 首先,HTTP 是一个网络协议,是专门用来帮你传输 Web 内容滴。关于这个协议,就算你不了解,至少也听说过吧?比如你访问俺的博客的主页,浏览器地址栏会出现如下的网址 http ://program-think.blogspot.com/ 俺加了粗体的部分就是指 HTTP 协议。大部分网站都是通过 HTTP 协议来传输 Web 页面、以及 Web 页面上包含的各种东东(图片、CSS 样式、JS 脚本)。 2. “SSL/TLS”是干嘛用滴? SSL 是洋文“Secure Sockets Layer”的缩写,中文叫做“安全套接层”。它是在上世纪90年代中期,由 网景公司 设计的。(顺便插一句,网景公司不光发明了 SSL,还发明了很多 Web 的基础设施——比如“CSS