初学者如何理解网络协议(一)
2016-1-18 0:0:0 wondial初学者如何理解网络协议(一)
初学者如何理解网络协议(一)
网络协议是什么?协议分层是怎么回事?什么是协议的实现?
回想当年初识网络协议,被一张网络层次模型图中的“物理层、数据链路层、网络层、传输层……”搞得云里雾里。花了很长时间才搞明白网络协议大概是怎么回事,甚至己经做出了几个网络程序,但仍感觉对网络协议的本质认识还不够清楚。
一直在思考这些问题,突然有一天,我发现我对网络协议的认识已经变得明朗。直到今天,我心血来潮写下这篇文章,希望对初学网络编程的朋友有所帮助。
一、网络协议通俗地讲就是网络上两台计算机之间通信所要遵守的共同标准。
这么讲还是不够通俗易懂,所以我们可以打个比方:
有两个人,一个中国人,一个法国人,如下:
(用英语交流)
中国人------------------------------------法国人
(讲中文) (讲法语)
[会英语] [会英语]
<英语协议> <英语协议>
这两个人要想交流,必须讲一门双方都懂的语言。如果大家都不会讲对方的民族语言,那么可以选择双方都懂的第三方的语言来交流,比如“讲英语”。那么这时候“英语”实际上就成为一种“网络协议”。
把网络协议比做通用语言只是一种形象比喻,实际上协议本身比自然语言要简单的多,但是却比自然语言更严谨。协议规定了一种交流信息的格式或者说规范,比如:字符“LOVE”表示什么意思,第2个字节表示什么含义等……只要大家都按同样的规范来表达自己的意思,对方就能“听懂”你的意思。
同一种“规范”遵守的人多了,就成为一种事实上的“标准”。比如TCP/IP协议就成为了一种最流行的网络协议。
二、协议的实现
协议本身并不是一种软件,它只是一种通讯标准,但协议最终要由软件来实现。网络协议的实现就是在不同的软件和硬件环境下,执行可运行于该种环境的“协议”翻译程序。这些程序可能在WINDOWS下,也可能在UNIX下,也可能运行于一台个人电脑,也可能运行于一台服务器,也可能在你的手机中,这些程序可能都不一样,但却都会翻译同一种网络协议,比如(TCP/IP)协议。就如上图中的翻译都懂“英语”一样。
实现网络协议,听起来就象是给所有接入网络的设备配备了一个“通用语言翻译器”,这些翻译都懂通用语言“英语”,同时也懂得本国语言,这样就能实现不同国家不同环境的人接入同一个网络并进行交流了。
那么,可否选择“中文”作为网络协议呢?当然可以,但前提是大家都愿意遵守你的标准,都愿意说中文。实际上,“中文”也是一种网络协议,但它只是属于中国人的网络协议。
三、协议的分层
协议分层仅仅是为了技术上的便利所做的人为划分,并非是协议天生必备的。
仍以上图为例,我们不再考虑中国人或是法国人,只考虑协议本身。
我用英语说:“How are you.” 不一定表示“你好!”,我们可以事先约定,这句话表示“再看一遍”的意思。这就象是所谓的江湖“黑话”,或叫“专业术语”。实际上,这时我们自己制定了一个新的通信标准,一个新的“高层协议”己经诞生了。这个协议在“英语”的基础上,再制定自己的通信标准,这种新的通信标准就是基于“英语”这种“底层协议”的“高层协议”,我们可以把这种协议取名为“讲课协议”。
以后你还可以在“讲课协议”之上建立“讲网络通信课程的协议”等更高级的协议。
如果您的问题还没有解决,可以到 T+搜索>>上找一下答案
相关阅读
- 明细账权限设置时提示“没有操作员”?2019-4-29 8:0:0
- 用友T3用友通系统重装后,没有账套备份,如何恢复账套2019-4-29 8:0:0
- 用友T3-用友通如何进行凭证的赤字控制2019-4-23 8:0:0
- 用友T3-用友通如何调整工资发放签名表工资项目显示顺序2019-4-23 8:0:0
- 用友T3-用友通如何设置财务报表中的年月日2019-4-23 8:0:0
- 用友T3-用友通如何设置未记账凭证的报表公式_02019-4-23 8:0:0
- 用友T3-用友通如何设置未记账凭证的报表公式2019-4-23 8:0:0
- 用友T3-用友通如何设置对客户的信用进行控制2019-4-23 8:0:0
- 用友T3-用友通如何补录现金流量?2019-4-23 8:0:0
- 用友T3-用友通如何核销银行账2019-4-23 8:0:0
最新信息
结算中心数据无法显示 结算中心数据无法显示
问题号: | 9368 |
---|---|
解决状态: | 最终解决方案 |
软件版本: | 8.60 |
软件模块: | 结算中心 |
行业: | 通用 |
关键字: | 结算中心 |
适用产品: | U860—-结算中心 |
问题名称: | 结算中心数据无法显示 |
问题现象: | 1:下面这个单据的“计息起期”日期不对。 除了系统自动生成的利息单外,其余经过手工计算得到的利息单全部存在该问题 2:“帐户利息汇总表”不能显示“定额内利息”和“利息”两个项目的数字 3:“单位利息汇总表”的所有数据都无法显示 4:系统除了“农行新华支行”的存款利息能在6月20日做完“日记帐”处理后,自动计算出来以外,其余的所有银行或者单位帐户的利息都不能自动生成。(注:6月20日已经做了“日记帐”处理) |
问题原因: | 问题1和问题4:是由于在数据库中修改过结息日的名称造成的,通过select * from fd_accdef ;select * from fd_cadset;select * from fd_cadsets这三条语句进行查询,可看出,有的名称为“季节”,有的名称为“季结”。问题2:因没有利息单生成,利息单也未记账,因此在:“帐户利息汇总表”不能显示“定额内利息”和“利息”两个项目的数字。问题3:因没有利息单生成,利息单也未记账,因此没有数据。还有一原因是因为查询日期必须输入到2005.6.21日,因利息单的日期都是6.21日,查到6.20日时当然没有数据。 |
解决方案: | 问题1和问题4:先反记账到期初,然后到数据库中,将上述三张表的结息日名称汉字改为一致,再重新记账即正常。注意:一定要先反记账,否则也会产生数据错误。问题2:将利息单记账即可。问题3:将利息单记账,且查询日期的截止日期必须为2005.6.21日,才会查询出来数据。 |
补丁编号: | |
录入日期: | 2016-03-16 15:23:45 |
最后更新时间: |