通信协议

HTTP(TCP/IP)通信协议

冷暖自知 提交于 2020-01-12 14:51:19
文章目录 HTTP(Hyper Text Transfer Protocol)即超文本传输协议 超文本: 传输: 协议: ISO 七层网络模型和TCP/IP四层概念模型 ISO 七层网络模型 TCP/IP四层概念模型 一个 HTTP 请求,在整个网络中的请求过程 发送过程 接收过程 为什么有了 MAC 层还要走 IP 层呢? IP协议和TCP/UDP协议 IP协议 TCP/IP TCP三次握手 TCP四次挥手 为什么握手只需要3次,挥手需要四次 TCP数据传输过程的流量控制(滑动窗口)和拥塞控制 (1)滑动窗口协议 (2)发送窗口 (3)接收窗口 (4)滑动窗口调整过程(慢开始&线性增长) UDP/IP TCP 和 UDP 的区别 为什么TCP是传输是可靠的? HTTP(Hyper Text Transfer Protocol)即超文本传输协议 超文本: 原来的计算机只有简单的文本格式,故文本就是指简单的文本格式,随着计算机的发展,出现了视频,图片,音乐等格式,而超文本就是原来文本语义的引申 传输: 由传输载体(例如同轴电缆,电话线,光缆)负责把二进制数据包由计算机终端传输到另一个终端的过程,称为传输(transfer) 协议: 协议就是一种约定和规范,大家都遵守的规范,只有都使用同一种规范,才能有条不紊的进行信息交互,常见的协议有: SMTP , TCP , UDP , FTP

通信协议中的地址对齐数问题

杀马特。学长 韩版系。学妹 提交于 2020-01-04 02:43:32
通信协议中的地址对齐数 地址对齐数这个东西,实际上并不陌生了,在接触struct结构体的时候就遇到了,在这里也不多赘述,主要聊聊在通信协议中因为地址对齐数遇到的问题。 对于UDP/TCP通信,除了可以传递“行文本”之外,同样可以传递“字节流”。 Qt中常用的字节流就是QByteArray,通常采用的方式是: 结构体 <=> QByteArray 通常实现的是结构体和字节流的相互转化,这点不多说,我准备下一篇博客介绍一下这个转化过程,现在聊一聊转化过程中遇到的坑。 结构体因为“地址对齐数”的原因,可能会出现部分空间空着不使用的情况,如下面的结构体: struct StTest { int iNum1 ; char chNum ; int iNum2 ; } ; 根据地址对齐数可以知道,这个结构体的大小为12个字节,其中char类型的在这里也是占用了4个字节,但是实际上char类型仅仅占用1个字节,这就导致了3个字节的空间是空着的,虽然空着,但也是占用着内存。 一般的通信协议的制定人员,都会考虑到这一点,使其充分利用空间,不会出现中间空的的情况。 但是,在今天,我发现我手上的一份通信协议中出现了非常智障的行为,就是没有考虑到地址对齐数(或者说他也没有其他的解决方案)导致的如果采用普通的结构体定义,会出现内存位不匹配的情况。 对于这个问题,我也是苦思冥想了好久,没找到合适的解决方案

浏览器是否支持WebSocket的判断

给你一囗甜甜゛ 提交于 2020-01-03 14:00:22
问题描述 用js判断浏览器是否支持WebSocket。 解决方法 方法一 if( typeof(WebSocket) != "function" ) { alert("您的浏览器不支持Websocket通信协议,请更换浏览器为Chrome或者Firefox再次使用!") } 上边的方式不严谨,在 Android 中,即使浏览器不支持 WebSocket ,但是它还是存在这个属性。 所以可以使用下面的方法 方法二 if (typeof WebSocket != 'undefined') { console.log("您的浏览器支持Websocket通信协议") } else { alert("您的浏览器不支持Websocket通信协议,请使用Chrome或者Firefox浏览器!") } 或者是这种方法 方法三 if (!!window.WebSocket && window.WebSocket.prototype.send) { console.log("您的浏览器支持Websocket通信协议") } else { alert("您的浏览器不支持Websocket通信协议,请使用Chrome或者Firefox浏览器!") } 参考 原文链接: https://blog.csdn.net/jsyxiaoba/article/details/84025295 来源: CSDN 作者:

C++编写串口通信协议

不问归期 提交于 2020-01-02 23:56:57
无论是R485还是R232,都不影响我们编程。 1、编写串口通信的接口 class CSerialPort { public: CSerialPort(bool bIsRs232 ); ~CSerialPort(void); public: bool InitPort(UINT portNo=1,UINT baud=CBR_9600,UINT databits=8,UINT stopbits=1); bool InitPort(UINT portNo,const LPDCB& plDCB);//初始化串口 bool WriteData(unsigned char* pData,unsigned int length);//读数据 bool ReadData( unsigned char *pData,int nBytes ); //写数据 DWORD GetByteInCom();//获取串口缓冲区的字节数 void ClosePort();//关闭串口 bool ClearAllBuffer();//清除缓冲区数据 private: bool OpenPort(UINT portNo); private: volatile HANDLE m_hComm; bool m_bIsRS232; }; 2、基本类图 通信基类接口: #pragma once #include

通信协议与数据传输

半城伤御伤魂 提交于 2020-01-01 19:56:54
通信协议 TCP协议   传输控制协议,提供的是面向连接、可靠的字节流服务。当客户和服务器彼此交换数据前,必须先在双方之间建立一个TCP连接,之后才能传输数据。TCP提供超时重发,丢弃重复数据,检验数据,流量控制等功能,保证数据能从一端传到另一端。 UDP协议   用户数据报协议,是一个简单的面向数据报的运输层协议。UDP不提供可靠性,它只是把应用程序传给IP层的数据报发送出去,但是并不能保证它们能到达目的地。由于UDP在传输数据报前不用在客户和服务器之间建立一个连接,且没有超时重发等机制,故而传输速度很快 socket(套接字)   Socket是应用层与 TCP/IP协议族通信的中间软件抽象层,它是一组接口。在设计模式中, Socket其实就是一个门面模式,它把复杂的 TCP/IP协议族隐藏在 Socket接口后面,对用户来说,一组简单的接口就是全部,让 Socket去组织数据,以符合指定的协议。    数据传输 基于TCP协议的socket   服务器端 import socket sk = socket.socket() sk.bind(('127.0.0.1', 2025)) sk.listen() while 1: cron, addr = sk.accept() print('the connection from', addr) while 1: con_r =

TCP/IP通信协议

梦想与她 提交于 2019-12-31 08:12:25
计算机通信协议:计算机必须遵守的用来通信的规则的描述。 主要的通信协议为 TCP/IP,是一组协议中两种最重要的代表,TCP/IP 意味着 TCP 和 IP 在一起协同工作,有上下层次的关系。 TCP 负责应用软件(比如你的浏览器)和网络软件之间的通信。IP 负责计算机之间的通信。TCP 负责将数据分割并装入 IP 包,IP 负责将包发送至接受者,传输过程要经IP路由器负责根据通信量、网络中的错误或者其他参数来进行正确地寻址,然后在它们到达的时候重新组合它们。 其协议组还包括: TCP : Transmission Control Protocol 传输控制协议 应用程序之间的通信 当应用程序希望通过 TCP 与另一个应用程序通信时,它会发送一个通信请求。这个请求必须被送到一个确切的地址。在双方“握手”之后,TCP 将在两个应用程序之间建立一个全双工 (full-duplex) 的通信,占用两个计算机之间整个的通信线路。TCP 用于从应用程序到网络的数据传输控制。TCP 负责在数据传送之前将它们分割为 IP 包,然后在它们到达的时候将它们重组。 UDP :用户数据包协议 应用程序之间的简单通信 IP: Internet Protocol 网际协议 计算机之间的通信 IP 负责在因特网上发送和接收数据包。通过 IP,消息(或者其他数据)被分割为小的独立的包

ZeroMQ

两盒软妹~` 提交于 2019-12-10 14:09:32
ZeroMQ 建议也了解一下原作者新重新实现的nanomsg 对比 libevent libevent 代码深度剖析 libev libuv boost-asio 1 ZeroMQ概述 ZeroMQ是一种基于消息队列的多线程网络库,其对套接字类型、连接处理、帧、甚至路由的底层细节进行抽象,提供跨越多种传输协议的套接字。ZeroMQ是网络通信中新的一层,介于应用层和传输层之间(按照TCP/IP划分),其是一个可伸缩层,可并行运行,分散在分布式系统间。 2 系统架构 2.1总体架构 ZeroMQ几乎所有的I/O操作都是异步的,主线程不会被阻塞。ZeroMQ会根据用户调用zmq_init函数时传入的接口参数,创建对应数量的I/O Thread。每个I/O Thread都有与之绑定的Poller,Poller采用经典的Reactor模式实现,Poller根据不同操作系统平台使用不同的网络I/O模型(select、poll、epoll、devpoll、kequeue等)。主线程与I/O线程通过Mail Box传递消息来进行通信。Server开始监听或者Client发起连接时,在主线程中创建zmq_connecter或zmq_listener,通过Mail Box发消息的形式将其绑定到I/O线程,I/O线程会把zmq_connecter或zmq_listener添加到Poller中用以侦听读

超级详细通信协议解析webservice和dubbo通信协议区别

我的未来我决定 提交于 2019-12-06 08:32:07
  简单说下接触webservice的背景吧,因为之前的接口对接更多的是成熟的接口品牌像是阿里巴巴、腾讯、聚合数据等,他们接口规范一般都是基于restful进行接口对接。什么是restful接口,可以通过这篇文章了解《简单易懂的restful接口规范》。言归正传,就是当下的项目中因为对接保险公司一些业务,所以对接的协议是通过web service进行对接,我认为, 是很old的技术,但是对于我来说挺新的知识。 正如简单描述可知,目前对于web service的通信协议其实越来越少了,不排除有一些比较喜欢老技术的公司,继续沿用这种方式,至于为什么,在下面文章中详细阐述。   什么是web service?怎么进行web service协议接口调用?web service和其他通信协议像是dubbo、hessian、RMI、thrif区别在哪里?下面标题解答: 一 什么是web service?   首先,web service是一种接口远程对接协议,通过这种协议编写的接口能 跨平台和跨语言,跨项目 ,也就是一处编写部署,其他处处调用。对于项目开发中不建议使用,对外项目研发中,可以使用。早先的传输方式 通过SOAP协议 ,然后 通过WSDL (web service description language)web服务描述语言展示,这种方式就是我们公司才用的方式,比较old的一种方式

关于通信协议的一些理解

对着背影说爱祢 提交于 2019-12-05 23:16:36
现在大家熟悉的网络协议有许多大部分知识都是在最近的现在ip通信基础上理解而成,通信协议在不同的层面有着不同的表现,例如在网络层和硬件层有着不同的表现方式。 现在主要学的有 TCP/IP (Transport Control Protocol/Internet Protocol,传输控制协议/Internet协议)的历史应当追溯到Internet的前身—ARPAnet时代。为了实现不同网络之间的互连,美国国防部于1977年到1979年间制定了TCP/IP体系结构和协议。TCP/IP是由一组具有专业用途的多个子协议组合而成的,这些子协议包括TCP、IP、UDP、ARP、ICMP等。TCP/IP凭借其实现成本低、在多平台间通信安全可靠以及可路由性等优势迅速发展,并成为Internet中的标准协议。在上世纪90年代,TCP/IP已经成为局域网中的首选协议,在最新的操作系统(如Windows7、Windows XP、Windows Server2003等)中已经将TCP/IP作为其默认安装的通信协议。 来源: https://www.cnblogs.com/distin/p/11949944.html

物联网主流通信协议解读 | 我的物联网成长记

你离开我真会死。 提交于 2019-12-05 20:13:26
【摘要】 当今物联网的主流通信协议是CoAP/LWM2M协议和MQTT协议,本文将会为您分别解读这些协议的工作方式,了解它们的特点,助您选择最适合您的设备的通信协议。 通信协议又称为传输协议,用于定义多个设备之间传播信息时的系统标准。通信协议定义了设备通信中的语法、语义、同步规则和发生错误时的处理原则,可以理解为机器之间使用的语言。 在物联网场景中,通信主要发生在设备和物联网平台之间,由于大部分物联网设备都是资源受限型设备,它们的物理资源和网络资源都非常有限,直接使用现有的HTTP协议进行通信对它们来说要求实在是太高了。因此,物联网场景中主要使用的通信协议都是轻量级的,为资源受限环境而设计的通信协议,例如CoAP/LWM2M协议和MQTT协议。 本文将会为您分别解读CoAP/LWM2M协议和MQTT协议,希望能帮助您了解这些协议,并选择最适合您的设备的通信协议。 ----------CoAP/LWM2M协议---------- CoAP(Constrained Application Protocol,受限制的应用协议)运行于UDP协议之上,设计上主要借鉴了HTTP协议的RESTful风格,简化了协议包格式,一个最小的CoAP数据包仅4字节。CoAP协议采用了和HTTP协议相同的请求/响应模型,客户端发出请求后,服务端处理请求并回复响应,是一种点对点的通信模型