我们的“协议”:
到目前为止,我们已经简单了解了通信的基本模型,Server—Client模型,这里以简单聊天工具为例:1、服务端启动——2、客户端启动,并试图与服务端建立连接——3、服务端根据条件(通常是根据客户端发送过来的某种特殊消息,分析其中的账号,密码)发送响应给发送请求的客户——4、若同意,客户端获得某种使用功能的权利——5、服务端发送包含特定接收对象的聊天消息给服务端——6、服务端转发聊天消息,并goto步骤5
由上面的简单例子,我们可以看到,通信的双方在通信时有特定的步骤。只有双方都按正确步骤来执行,通信才能有质量的实现。当有一方违反这种规则的时候,那就整个乱套了:你能不通过登陆,就直接用QQ发送消息给你的朋友么??
其实,上面提到的概念就是通信协议中的两大核心概念之一:流程。
流程,简单的说,也就是我们规定的通信双方发送信息的先后顺序。
流程是很重要的,因为通信的一方一般在某个特定阶段只能接受特定种类的消息。还是用简单聊天系统来举例,服务器在某个客户端登陆以前是这能接受“注册”或者“登陆”消息的,如果这个时候它接受到了其他种类的消息(如客户端流程不正确,发送了一条“聊天消息”),服务器实际上是分辨不出来,而把它当做错误消息来处理的,一般是断开连接,严重的可能会导致系统崩溃。
任何一个能正常运行的网络程序都是高度契合的。
在上文中,我多次提到了消息的“种类”,这就是通信协议中的另一个核心:消息的定义。
我们知道,通信中信息的发送与接收是通过IO流来实现的,而底层IO流传输的01串,那么,怎样通过01串来表示要传输的数据呢??
很容易想到,是编码!!我们按照规则用特定的字符来表示特定的含义。当然,这个规则必须是事先定义好的,而且必须是通信双方都知道,且严格遵守的。
简单的规则定义方式有2种:一种是字节型,一种是xml型。
字节型: 如我们事先规定发送的第一个byte是表示消息的类型,1表示群聊消息,第2到第四个byte(即一个int)表示聊天消息的大小,后面N个字节表示聊天内容。那么当我们接收到 1 6 1 3 47 2 89 20 的时候,我们就可以把他们翻译成相应的消息了,将后6个byte:1 3 47 2 89 20 转为相应的String就行了。
xml型: (Extensible Markup Language)即可扩展标记语言,这里我就不copy定义了,google一下就知道了。我只举个例子: <msg><type>GroupChat</type><content>.........</content></msg> 这就是我曾经定义过的一个群聊消息。当服务端接收到这个来自客户端 的字符串的时候,通过分析结构,就知道该怎么处理了。
值得注意的是:消息格式的定义是因程序而异的,不同的程序有其独特的定义,而且这种定义是唯一的,是必须在事先定义好的。
网络上的“协议”:
我们上网也是享受通信服务,其中的数据传输同样要受到某种协议的约定,这种协议的名字叫做:TCP/IP协议族。
今晚就不写了,累了,以后有时间再简单讨论(真的是“简单”的说,这玩意太复杂了,看书看的泪奔了,5555)
具体可以去参阅一本名叫《TCP/IP协议详解》的书
分享到:
相关推荐
UDP(User Datagram Protocol)是一种无连接的、不可靠的传输层协议,它是互联网协议套件中的重要组成部分。在C#和C++等编程语言中,我们可以利用UDP进行网络通信,实现数据的快速发送和接收。 UDP的特点在于其轻量...
北斗通信设备通用的协议,串口通信与北斗卫星的通信协议,
“USB通信协议”是USB设备间进行数据交换时遵循的一系列规则。USB协议包含了一系列层次,从物理层的电气特性到应用层的数据格式。其中,主要的协议组件包括:USB规范(定义了USB总线的基本结构和操作)、设备类定义...
《URT串口通信协议在单片机中的应用详解》 串口通信协议是电子和计算机领域中不可或缺的一部分,尤其在单片机应用中扮演着重要角色。本文将深入探讨URT串口通信协议及其在C8051F单片机上的实现。URT,即通用串行...
本文将深入探讨红外通信协议、红外技术在MATLAB环境中的应用以及无线红外通信的相关知识。 红外通信是一种利用红外光波进行信息传输的技术。它通过将数字信号转换为光信号,然后通过红外发射器发送出去,接收端再将...
Aurora协议是一种高速串行通信协议,广泛应用于数据传输要求极高的场合,如高性能计算、数据中心、航空航天和通信系统等。Aurora协议由Xilinx公司开发,它结合了LVDS(低压差分信号)技术的优势,为设计者提供了一种...
综上所述,这个压缩包提供了一个用于C#编程的工具,使得开发者可以利用MPI通信协议,通过“w95_s7.dll”库与西门子PLC进行交互。对于需要与西门子PLC进行通信的C#应用程序开发者来说,这个资源是十分有价值的。在...
标题“wap_chap04.rar_wap_无线通信_无线通信协议”揭示了我们关注的主题是关于“WAP”(Wireless Application Protocol)的第四章内容,涉及无线通信协议。这表明这是一个关于WAP技术在无线通信中的应用的详细章节...
《--程序--》MyHTTP.rar 是一个包含VC++实现的HTTP协议通信源码的压缩包,专门针对网络通信和HTTP协议编程。... HTTP(超文本传输协议)是...学习这个示例可以帮助你掌握VC++环境下网络通信协议编程的基本技能。
电动汽车快换电池箱电子控制单元通信协议(CAN)
在工业自动化和物联网系统中,485通信协议因其可靠性和长距离传输能力而被广泛应用。RDM(Remote Device Management)是一种建立在RS-485标准基础上的双向通信协议,它允许主设备与多个从设备之间进行有效的数据交换...
在进行Wi-Fi通信协议仿真时,通常会涉及到以下几个关键步骤和知识点: - **信道模型**:包括AWGN(加性高斯白噪声)信道、Rayleigh衰落信道等,模拟真实环境中无线信号的传播和衰减。 - **调制解调技术**:如OFDM...
nRF52_RV1126_串口通信协议V1.01 nRF52_RV1126_串口通信协议V1.01是一种串口通信协议,用于nRF52832微控制器与RV1126之间的通信。该协议的主要组成部分包括命令结构体、枚举类型和CRC校验。 命令结构体nrf_rv1126_...
Q系列MELSEC通信协议参考手册,采用 MC 协议进行通讯,用 ASCII 代码进行通讯 读出内部继电器
**PMC-53A Modbus规约_V1.5_190305通信协议详解** Modbus通信协议是一种广泛应用于工业自动化领域的通用串行通信协议,由Modicon(现为Schneider Electric的一部分)在1979年推出。PMC-53A Modbus规约是基于这一...
总的来说,这个压缩包提供了一个基于定时器的51单片机软UART实现,对于学习串口通信协议和理解软UART工作原理非常有价值。通过深入阅读和分析代码,可以提升在嵌入式系统设计和调试方面的技能。
描述中提到的“托利多仪表返回协议”是指托利多公司生产的测量设备(如电子秤、天平等)所使用的通信协议。这些协议规定了数据传输的格式、命令集和响应结构。例如,可能包含开始和结束标志、地址识别、数据长度、...
[046]通信技术基础_区别_协议标准_串并行_同异步_全双工_波特率_比特率.zip上位机开发VC串口学习资料源码下载[046]通信技术基础_区别_协议标准_串并行_同异步_全双工_波特率_比特率.zip上位机开发VC串口学习资料源码...
在“Visual C++网络通信协议分析与应用实现代码”中,开发者可能涉及以下关键知识点: 1. **套接字编程**:Winsock API提供了套接字函数,如`socket()`用于创建套接字,`bind()`绑定套接字到一个端口,`listen()`...
_dooroac_源码”指的是一个关于STM32F042微控制器使用CAN(Controller Area Network)通信的项目。这个项目可能包含了实现ISO CAN(国际标准化组织制定的CAN总线协议)的源代码和相关文档,由"dooroac"创建或整理。...