网络通讯 TCP协议

网络通讯

常见的通讯方式

  • 交换机通讯 (局域网)
  • 路由器通讯 (链接多个局域网)
    请添加图片描述

网络层次模型

(OSI)七层模型
  • 应用层:用户与网络的接口,协议有:HTTP、FTP、SSH;
  • 表示层:数据加密、转换、压缩;
  • 会话层:控制网络链接建立与终止;
  • 传输层:控制数据传输的可靠性,有:TCP与UDP协议;
  • 网络层:确定目标网络,有:IP协议,查找IP地址;
  • 数据链路层:确定目标主机,查找MAC地址,ARP寻址协议;
  • 物理层:各种物理设备和标准;

传输时,自上而下一层一层的封装,之后在一层一层的解封;

TCP 三次握手与四次挥手

TCP 协议
  • TCP 属于传输层协议;
  • TCP是面向链接的协议;
  • TCP用于处理实时通信;
常见字段
  • SYN = 1 表示请求建立链接;
  • FIN = 1 表示请求断开链接;
  • ACK = 1 表示数据信息确认;

三次握手建立链接
请添加图片描述
建立链接时,服务端的 ACK 和 SYN 会合并为一次通信,所以是三次;

请添加图片描述

  • 客户端发起请求链接 SYN
  • 服务端收到回复 ACK, 并也发起请求链接 SYN ;
  • 客户端收到回复 ACK;

建立起双向链接,服务端开始传输数据

四次挥手

客户端和服务端开始断开链接

请添加图片描述

  • 客户端发起请求断开链接;
  • 服务端收到回复;
  • 服务端发起请求断开链接;
  • 客户端收到回复;

4次挥手不能合并,因为链接建立后,服务端不能保证一次性把数据都传给客户端,客户端已经传完了,但是服务端还没有,所以断开要分两步处理,保证服务端把数据传输完,再断开链接。

总结

  • TCP 处于传输层,基于端口,面向链接的;
  • 主机之间要想通信需要建立双向数据通道;
  • TCP 的握手和挥手本质上是四次;
HTTPS 的加密
1、对称加密

一把密钥,双端都有,用它来加密解密信息
请添加图片描述每次在发送数据之前,服务器先生成一把密钥,然后先通过明文传输的方式将密钥传递给客户端。之后服务器给客户端传送数据的时候,会用着把密钥对数据进行加密,客户端收到加密数据之后,用刚刚收到的密钥对数据进行解密。

弊端:(1)密钥在传输的过程中容易被人截取; (2)客户端并不知道与自己建立连接的服务器是不是真的目标服务器。

2、非对称加密

两端各有一把私钥和公钥,私钥与公钥对应,公钥用来加密数据,私钥用来解密数据
双方都把公钥给对方,让对方用公钥来加密要传出的数据,自己用私钥来解;

请添加图片描述但是,非对称加密的加密时间是对称加密的上百倍。如果一直采用非对称加密来进行数据的传输,速度会比较慢,如何改进;

3、对称加密+非对称加密结合

用非对称加密的方式去传输对称加密的密钥,然后之后的请求用,密钥来加解密,这样可以保证对称加密的密钥可以安全的交付给对方。

还有弊端就是,就是客户端不知道和自己建立连接的是不是真的目标服务器;

如果第一次交换公钥的时候,就被第三方截取了,客户端与第三方走完后续流程,就又拿到了密钥;

4、数字证书,https

一个大家都认可的认证中心(CA)

服务器产生数字证书的过程

  1. 服务器在给客户端传送公钥的过程中,会把公钥以及服务器的个人信息通过哈希算法生成信息摘要。
  2. 之后服务器利用CA提供的私钥对信息摘要进行加密,来形成数字签名。
  3. 将没有经过哈希算法处理的个人信息以及公钥,和数字签名合并在一起,形成数字证书。

客户端拿到数字证书之后:

  1. 就会利用CA提供的公钥对服务器返回数字证书里面的数字签名进行解密来得到信息摘要。
  2. 然后对数组证书里面的服务器公钥以及服务器的个人信息进行hash得到另一份信息摘要。
  3. 最后把两份信息摘要进行对比,如果一样,则证明是服务器。

那么CA向客户端提供的CA公钥以及向服务器提供的CA私钥又是从哪来的?

  • 服务器需要向认证中心去申请证书,客户端也会内置这些证书的根证书,里面就有CA公钥。
  • 当客户端收到服务器传来的数据数字证书时,会在内置的证书列表里,查看是否有解开该数字特征的公钥。

简单理解
证书预置和申请
1:客户端浏览器会预置根证书, 里面包含CA公钥
2:服务器去CA申请一个证书
3: CA用自己的签名去签一个证书,指纹信息保存在证书的数字摘要里面, 然后发送给服务器;
简单化描述
1: 客户端向服务器发起https请求
2: 服务器返回证书
3-1: 客户端验证证书内容有效性(过期时间, 域名是否相同等)
3-2: 验证证书的有效性 (是否被串改), 通过本地根证书的CA公钥解密数字摘要,看是否匹配。
3-3:如果数字签名验证通过, 就可以使用服务器证书里面提供的公钥进行下一步通信。

HTTPS与HTTP的一些区别
  • HTTPS协议需要到CA申请证书,一般免费证书很少,需要交费。
  • HTTP协议运行在TCP之上,所有传输的内容都是明文,HTTPS运行在SSL/TLS(加解密)之上,SSL/TLS运行在TCP之上,所有传输的内容都经过加密的。
  • HTTP和HTTPS使用的是完全不同的连接方式,用的端口也不一样,前者是80,后者是443。
  • HTTPS可以有效的防止运营商劫持,解决了防劫持的一个大问题。

TCP 通讯的 粘包问题及解决

封包拆包的实现,利用了队列的思想;

HTTP 协议

基于 TCP 链接的网络通讯协议;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值