zoukankan      html  css  js  c++  java
  • 网络数据传输需要注意的两个问题

    作者:朱金灿

    来源:http://blog.csdn.net/clever101

     

    网络数据传输需要注意两个问题:一是大小端机器的问题;二是数据校验问题。

     

    所谓大小端问题是指数据发送端和数据接收端有可能是不同的cpu存储模式(大端模式或小端模式),比如当大端机器给小端机器发送机器,如果小端机器考虑和发送端的不同就直接处理,那么小端处理的数据将是混乱。如何解决这个问题呢?一种思路是在发送数据时发送端先检查发送端是大端还是小端,然后将存储模式作为发送数据的一部分告诉数据接收端,数据接收端也获取自身的存储模式,如果它和数据发送端机器的存储模式是一样的,那就不用特殊处理,如果不一样,则要先进行大小端数据的转换。

     

    第二个问题是数据校验问题。计算机网络体系结构(architecture)划分为以下七层:

    物理层: 将数据转换为可通过物理介质传送的电子信号 相当于邮局中的搬运工人。

    数据链路层: 决定访问网络介质的方式在此层将数据分帧,并处理流控制。本层 指定拓扑结构并提供硬件寻 址。相当于邮局中的装拆箱工人

    网络层: 使用权数据路由经过大型网络相当于邮局中的排序工人

    传输层: 提供终端到终端的可靠连接 相当于公司中跑邮局的送信职员

    会话层: 允许用户使用简单易记的名称建立连接 相当于公司中收寄信、写信封与拆信封的秘书

    表示层: 协商数据交换格式相当公司中简报老板、替老板写信的助理

    应用层: 用户的应用程序和网络之间的接口老板

     

    那么问题来了,在应用层中如何保证传输数据的准确性和完整性呢?比如要传输一个大文件,往往要分多次传输,最后肯定要保证接收端收到文件的完整性,又比如网银转账,需要保证转账金额在服务端和客户端的一致。因为应用层不能保证硬件,也不能保证网络服务,比如不能保证硬件是否做了手脚,也不能保证数据被中途截获并做了篡改。要解决问题就需要在要传输的数据加入一个校验码,这个校验码是用于保证数据接收的准确性的。它是如何保证的呢?就是数据发送端和数据接收端产生的校验码的方式只有双方才知晓,比如方式可以是要传输的数据再加一段常量字符串产生的一个md5码,数据发送端产生这个md5码,客户端收到数据后再产生这个md5码,只有这两个md5码一致才表示接收到的数据是完整准确的。

     

    参考文献:

     

    1. OSI模型

  • 相关阅读:
    单元测试(第一阶段+部分第二阶段+部分第三阶段+部分第四阶段)
    构建之法——Team & Scrum & MSF
    Github: 团队账号:https://github.com/ChenRuTing
    Sprint第二个计划
    读其他博客有感~
    冲刺第十天
    冲刺第五天
    冲刺第三天
    冲刺第二天
    冲刺第一天
  • 原文地址:https://www.cnblogs.com/lanzhi/p/6469790.html
Copyright © 2011-2022 走看看