一.长连接与短连接
最近在看dubbo的官方文档,里面提到zookeeper 与provider直接是基于长连接来实现通信的. 那么什么是长连接,什么又是短连接?
其实这两个概念很好理解.长连接是 当客户端与服务端一旦连接后保持持续通信的连接方式.而短连接是当数据传输完毕后即关闭的方式,所以每次数据的处理都没有什么联系.这也是http协议没有状态的原因
而两种连接方式最大的区别就在于,相较于长连接,短连接会更加的安全. 长连接多用于需要频繁连接进行传输的场景,这样会减少双方建立连接的次数 减少三次握手的执行次数,而在dubbo服务中,zookeeper注册中心会频繁的执行请求指向provider. 如果使用短连接会极大的增加网络传输成本,影响consumer的执行效率
二.http与https协议
https就是http和TCP之间有一层SSL层,这一层的实际作用是防止钓鱼和加密。防止钓鱼通过网站的证书,网站必须有CA证书,证书类似于一个解密的签名。另外是加密,加密需要一个密钥交换算法,双方通过交换后的密钥加解密
1、https协议需要到ca申请证书,一般免费证书较少,因而需要一定费用。
2、http是超文本传输协议,信息是明文传输,https则是具有安全性的ssl加密传输协议。
3、http和https使用的是完全不同的连接方式,用的端口也不一样,前者是80,后者是443。
4、http的连接很简单,是无状态的;HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议,比http协议安全。
在web项目的开发中 如果同一个网页引用的链接中包含了两种不同的协议 会造成跨域问题
解决方式一般可以通过不明确声明协议 这样内层链接便会使用外部的协议 或者将两个协议下的链接使用成一样的
三.三次握手与四次挥手
三次握手是个老生常谈的问题.之前一直没能彻底弄清楚 现在总结一下
三次握手指的是客户端与服务端连接时,需要进行三次状态确认才能完成一次连接的建立. 也就是说需要进行三次通信. 第一次由客户端向服务端发送信息 用来请求连接 此时包中会存在两个值 SYN=1 SEQ=X(SYN=1是固定的 SEQ值得是此次通信的随机码或者叫序列号) 服务端接收到包后进行解析并返回报文 SYN=1 ACK=X+1 SEQ=Y(ACK可以理解为服务表示确认的状态) 最后客户端收到报文后 返回 ACK=Y+1 SEQ=Z 由此完成三次握手.
图片来源如示.
说完三次握手 简单说下四次挥手
因为客户端与服务端建立连接是全双工的 所以,对于每一方来说 断开链接既要断开接收数据的连接也要断开发送数据的链接.
过程大致是这样的,当数据传输完毕后,会由一方先发出讯息 表示传输完毕.然后另一方表示接收完毕 并关闭接收通道 再将自己接收完毕的消息传给发送方 发送方由此关闭传送通道 如此两次叫做四次挥手. 写的有点笼统 基本是这个原理罢了
四.TCP/IP协议
首先简单说下TCP协议与UDP协议. 不知道各位大佬们在学习计算机网络的时候是什么感受. 我是挺蒙圈的而已.概念记了又忘,忘了再记很浪费时间,所以当时理解的时候就拿qq的文件传输做了个类比. 比如在线传输就叫TCP协议 转成离线传输就是UDP协议.
当然这只是一个简单理解. 下面介绍其概念
TCP最主要的特点 : 1.是面向连接的运输层协议 2.一条连接只能有两个端点 3.提供全双工的可靠交付 4.面向字节流
UDP的特点:1.UDP是无连接的 2.UDP使用尽最大努力交付 3.UDP是面向报文的 4.没有拥塞控制 5 .支持一对一和一对多传输
6.首部开销很小只有8字节 而TCP协议有20个字节(包含各种传输信息)
先总结到这里 随后有遇到的问题再进行更新