当前位置 : 主页 > 编程语言 > 其它开发 >

未使用TLS协议是否意味着数据传输可能会出错?

来源:互联网 收集:自由互联 发布时间:2022-05-30
起因 Redis 默认未使用 tls 协议,是否意味着传输数据可能会出错 答案应该是肯定的,但是想回答清楚并不是三言两语能说清的,其中涉及的知识点很多。 背景信息 网络通讯协议图202
起因
  • Redis 默认未使用 tls 协议,是否意味着传输数据可能会出错
    答案应该是肯定的,但是想回答清楚并不是三言两语能说清的,其中涉及的知识点很多。
背景信息
  • 网络通讯协议图2020版 network-protocol-map-2020.pdf
    • Google搜索:网络 site:www.colasoft.com.cn filetype:pdf
TCP/IP网络的校验
  • 物理层
    • 无检错无纠错
  • 数据链路层
    • CRC校验、强校验,检查比特差错,Cut-Through转发不校验;
      • 检测该帧是否出现差错,占 4 个字节(32 比特)。发送方计算帧的循环冗余码校验(CRC)值,把这个值写到帧里。
      • 接收方重新计算 CRC,与 FCS 字段的值进行比较。如果两个值不相同,则表示传输过程中发生了数据丢失或改变。
  • 网络层
    • Checksum校验,弱校验,只覆盖IP头部(不包括 IP 数据),IPv6 无此机制;
  • 传输层
    • Checksum校验,弱校验,覆盖头部和数据,TCP的校验和是必需的,而UDP的校验和在IPv4中是可选的,在IPv6中则是强制的。
      • TCP和UDP计算校验和时,都要加上一个12字节的伪首部,包含如下信息:源IP地址、目的IP地址、保留字节(置0)、传输层协议号(TCP是6)、TCP报文长度(报头+数据)。
      • 伪首部是为了增加TCP校验和的检错能力:如检查TCP报文是否收错了(目的IP地址)、传输层协议是否选对了(传输层协议号)等。
传输层安全协议
  • 消息验证码( MAC ,如 HMAC ),强校验,检查某段消息的完整性以及作身份验证
二层交换
  • MAC帧经过路由器/二层交换机时IP地址和MAC地址的变化
    • 二层交换机工作在数据链路层,只负责数据帧转发(重要!),交换机端口没有MAC地址,更没有IP地址。
    • 二层数据帧是由主机封装的,以HTTP通信为例(假设直接使用IP访问),IP头的dest ip和url中的ip一致,通过查询本地路由表决定发送网卡后,src mac和src ip也决定了,dest mac是下一跳设备的mac(可能是目的设备的mac,也可能是默认网关的MAC)
三层转发
  • TCP/IP数据包在互联网传输过程中,有哪些头会保持不变?
    • 必然改变的IP头部:TTL、IP Checksum
    • 可能改变的IP头部:TOS、DF、Source IP、Destination IP
    • 可能改变的TCP头部:Source Port、TCP Checksum、MSS option
3. 问题浅析
  • 网络层次与专业名称 image

  • 谈一谈网络编程学习经验 - TCP的可靠性有多高

    • 以太网的CRC32只能保证同一个网段上的通信不会出错(两台机器的网线插到同一个交换机上,这时候以太网的CRC是有用的)✅
      • 当数据经过二层交换机时,在整个链路的数据传输过程当中,源IP、目的IP、源MAC、目的MAC地址都不改变,二层数据帧的内容和大小都是不变的,接收端接收到新帧后进行CRC校验,只检错不纠错,正确就转发,错误就丢弃
    • 路由器可能出现硬件故障,比方说它的内存故障(或偶然错误)导致收发IP报文出现多bit的反转或双字节交换,这个反转如果发生在payload区,那么无法用链路层、网络层、传输层的check sum查出来,只能通过应用层的check sum来检测。✅
      • 由于IP头部的TTL经过路由器时必然减一,IP Checksum需要重新计算,如果路由器处理数据包发生错误,那么生成的Checksum也是错误的,接收者无法通过检查IP Checksum发现这一错误
      • 在进行NAT时,会重新计算TCP Checksum,此时设备发生错误,那么生成的TCP Checksum也是错误的,接收者无法通过检查TCP Checksum发现这一错误
        • 源网络地址转换SNAT,src ip会发生变化
        • 目的网络地址转换DNAT,dest ip会发生变化
        • 端口地址转换PAT,src port会发生变化
相关链接:
  • 交换机二三层转发原理是什么?

  • 交换机二三层转发原理

  • 交换基础知识

  • TCP校验和的原理和实现

  • 原来TCP为了保证可靠传输做了这么多

吐槽

我一个CRUD Boy和API Caller,既不回去当网工,又写不了网络编程,存储是补课罢了。

上一篇:Docker常用命令
下一篇:没有了
网友评论