作者:朱金灿
来源:http://blog.csdn.net/clever101
网络数据传输需要注意两个问题:一是大小端机器的问题;二是数据校验问题。
所谓大小端问题是指数据发送端和数据接收端有可能是不同的cpu存储模式(大端模式或小端模式),比如当大端机器给小端机器发送机器,如果小端机器考虑和发送端的不同就直接处理,那么小端处理的数据将是混乱。如何解决这个问题呢?一种思路是在发送数据时发送端先检查发送端是大端还是小端,然后将存储模式作为发送数据的一部分告诉数据接收端,数据接收端也获取自身的存储模式,如果它和数据发送端机器的存储模式是一样的,那就不用特殊处理,如果不一样,则要先进行大小端数据的转换。
第二个问题是数据校验问题。计算机网络体系结构(architecture)划分为以下七层:
物理层: 将数据转换为可通过物理介质传送的电子信号 相当于邮局中的搬运工人。
数据链路层: 决定访问网络介质的方式在此层将数据分帧,并处理流控制。本层 指定拓扑结构并提供硬件寻 址。相当于邮局中的装拆箱工人
网络层: 使用权数据路由经过大型网络相当于邮局中的排序工人
传输层: 提供终端到终端的可靠连接 相当于公司中跑邮局的送信职员
会话层: 允许用户使用简单易记的名称建立连接 相当于公司中收寄信、写信封与拆信封的秘书
表示层: 协商数据交换格式相当公司中简报老板、替老板写信的助理
应用层: 用户的应用程序和网络之间的接口老板
那么问题来了,在应用层中如何保证传输数据的准确性和完整性呢?比如要传输一个大文件,往往要分多次传输,最后肯定要保证接收端收到文件的完整性,又比如网银转账,需要保证转账金额在服务端和客户端的一致。因为应用层不能保证硬件,也不能保证网络服务,比如不能保证硬件是否做了手脚,也不能保证数据被中途截获并做了篡改。要解决问题就需要在要传输的数据加入一个校验码,这个校验码是用于保证数据接收的准确性的。它是如何保证的呢?就是数据发送端和数据接收端产生的校验码的方式只有双方才知晓,比如方式可以是要传输的数据再加一段常量字符串产生的一个md5码,数据发送端产生这个md5码,客户端收到数据后再产生这个md5码,只有这两个md5码一致才表示接收到的数据是完整准确的。
参考文献:
1. OSI模型