2020-08-08 06:45
⁄ 工业·编程
⁄ 共 5876字
OkHttp3是由Square贡献的HTTP客户端框架,主要用在Andorid中,但是由于其易用的API、强大的功能、请求的快速等特点,也被大量采用在后端开发领域。本系列文章讲述OkHttp3的基本使用、OkHttp3的高级功能以及OkHttp3源码的解析等,请持续关注。
本篇文章是此系列的第三篇。
简介#
okhttp3-fast-spring-boot-starter是笔者开发的一个HTTP网络调用库,封装了okhttp3,按照Spring Boot Starter标准开发,可以帮助我们快速的在Spring ...
HTTP协议, OkHttp3, 网络协议阅读全文
2020-08-06 06:14
⁄ 工业·编程
⁄ 共 4419字
OkHttp3是由Square贡献的HTTP客户端框架,主要用在Andorid中,但是由于其易用的API、强大的功能、请求的快速等特点,也被大量采用在后端开发领域。本系列文章讲述OkHttp3的基本使用、OkHttp3的高级功能以及OkHttp3源码的解析等,请持续关注。
本篇文章是此系列的第一篇。
介绍#
OkHttp是一款优秀的HTTP客户端框架,OkHttp3是OkHttp发展到版本3.0之后的名字。在maven中央仓库搜索okhttp,可以看到包名为com.squareup.okhttp项目...
HTTP协议, OkHttp3, 网络协议阅读全文
2020-04-14 16:53
⁄ 工业·编程
⁄ 共 18210字
1.网络协议设计
ISO提出了OSI分层网络模型,这种分层模型是理论上的,TCP/IP最终实现了一个分层的协议模型,每一个层次对应一组网络协议完成一组特定的功能,该组网络协议被其下的层次复用和解复用。这就是分层模型的本质,最终所有的逻辑被编码到线缆或者电磁波。
分层模型是很好理解的,然而对于每一层的协议设计却不是那么容易。TCP/IP的漂亮之处在于:协议越往上层越复杂。我们把网...
网络协议阅读全文
2020-03-12 09:21
⁄ 工业·编程
⁄ 共 789字
根据rfc894的说明,以太网封装IP数据包的最大长度是1500字节,也就是说以太网最大帧长应该是以太网首部加上1500,再加上7字节的前导同步码和1字节的帧开始定界符,具体就是:7字节前导同步码 + 1字节帧开始定界符 + 6字节的目的MAC + 6字节的源MAC + 2字节的帧类型 + 1500 + 4字节的FCS。
按照上述,最大帧应该是1526字节,但是实际上我们抓包得到的最大帧是1514字节,为什么不是1526字节呢?
原因是当数据帧到达网卡时,在物理...
网络协议阅读全文
2019-08-10 06:55
⁄ 工业·编程
⁄ 共 3165字
所谓通讯协议就是指通信双方对数据传送控制的一种约定。约定中包括对数据格式,同步方式,传送速度,传送步骤,纠错方式以及控制字符定义等问题做出统一规定,通信双方必须共同遵守,倘若一方不遵守,便会直接导致数据不能被解析!更通俗来讲,它可以理解两个节点之间为了协同工作实现信息交换,协商一定的规则和约定,例如规定字节序,各个字段类型等。我们最常见到的可能是TCP(传输控制协议...
TLV, 网络协议阅读全文
2019-06-03 10:47
⁄ 工业·编程
⁄ 共 612字
protoBuf是google 的一种数据交换的格式,它独立于语言,独立于平台。google 提供了多种语言的实现:java、c#、c++、go 和 python,每一种实现都包含了相应语言的编译器以及库文件。由于它是一种二进制的格式,比使用 xml 进行数据交换快许多。与Protoful类似的序列化技术还有XML、JSON、Thrift等。
优点
与同类型的数据交换格式相比(诸如json,xml),由于protobuf是基于二进制数据传输格式,因此它具有高效的解析速度和更小...
Protobuf, 网络协议, 网络编程阅读全文
2019-05-06 22:04
⁄ 工业·编程
⁄ 共 3010字
为什么使用消息队列
先说一下消息队列常见的使用场景吧,其实场景有很多,但是比较核心的有 3 个:解耦、异步、削峰。
解耦
看这么个场景。A 系统发送数据到 BCD 三个系统,通过接口调用发送。如果 E 系统也要这个数据呢?那如果 C 系统现在不需要了呢?A 系统负责人几乎崩溃......
在这个场景中,A 系统跟其它各种乱七八糟的系统严重耦合,A 系统产生一条比较关键的数据,很多系统都需要 A 系统将这个数据发送过来。A 系统要...
中间件, 网络协议阅读全文
2018-12-25 19:59
⁄ 工业·编程
⁄ 共 1295字
在TCP层,有个FLAGS字段,这个字段有以下几个标识:SYN, FIN, ACK, PSH, RST, URG.
其中,对于我们日常的分析有用的就是前面的五个字段。
它们的含义是:
SYN表示建立连接,
FIN表示关闭连接,
ACK表示响应,
PSH表示有 DATA数据传输,
RST表示连接重置。
其中,ACK是可能与SYN,FIN等同时使用的,比如SYN和ACK可能同时为1,它表示的就是建立连接之后的响应,
如果只是单个的一个SYN,它表示的只是建立连接。
TCP的几次握手就是...
TCP, 网络协议阅读全文
2018-12-06 19:17
⁄ 工业·编程
⁄ 共 15455字
FreeModbus协议栈作为从机,等待主机传送的数据,当从机接收到一帧完整的报文后,对报文进行解析,然后响应主机,发送报文给主机,实现主机和从机之间的通信。
1、初始化协议栈---eMBInit函数(mb.c中),以RTU为例
eMBErrorCode eMBInit( eMBMode eMode, UCHAR ucSlaveAddress, UCHAR ucPort, ULONG ulBaudRate, eMBParity eParity )
{
1
/*函数功能:*1:实现RTU模式和ASCALL模式的协议栈初始化;*2:完成协议栈核心函数...
freemodbus, modbus, 网络协议阅读全文
2018-06-02 05:40
⁄ 工业·编程
⁄ 共 1500字
1.招聘的顺口溜而已。其实大多数需要的是熟悉socket编程。
tcp/ip是协议族,协议定义的东西包括报文格式,流控,控制块fsm之类。
socket是个编程界面,不用管什么syn/ack/rst/sequence number之类。
(以前还有所谓传输界面编程,另一组api,淘汰了)socket编程并不太关心协议是什么样,stream可以不是tcp,dgram可以不是udp的。当然现在基本没有别的协议在用了。当然如果实现socket库(估计没人重新发明轮子),
或开发路由器...
TCP, 网络协议阅读全文