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

起因

背景信息

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)

三层转发

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会发生变化

相关链接:

吐槽

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

posted @ 2022-04-30 22:32  又是火星人  阅读(154)  评论(0编辑  收藏  举报