做网站的公司利润多少呢,网页界面设计时颜色越多越好,网站备案后,wordpress edit.php个人主页#xff1a;Lei宝啊
愿所有美好如期而遇 协议
简单来说#xff0c;就是通信双方约定好的结构化的数据。
序列化与反序列化
我们通过一个问题引入这个概念#xff0c;假如我们要实现一个网络版的计算器#xff0c;那么现在有两种方案#xff0c;第一种#x…个人主页Lei宝啊
愿所有美好如期而遇 协议
简单来说就是通信双方约定好的结构化的数据。
序列化与反序列化
我们通过一个问题引入这个概念假如我们要实现一个网络版的计算器那么现在有两种方案第一种客户端发送一种类似于“11”这样的字符串服务端接收到后进行拆解然后计算。第二种双方约定好一种结构体按照某种规则转换成字符串发送给对方然后对方再按照这种规则拆解成结构体这个过程就叫做序列化与反序列化。 无论我们采用方案一, 还是方案二, 还是其他的方案, 只要保证, 一端发送时构造的数据, 在另一端能够正确的进行解析, 就是 ok 的. 这种约定, 就是 应用层协议。
理解Tcp为什么支持全双工
什么是全双工简单来说就是同时收发消息而消息之间不会互相受到干扰。
具体来讲全双工Full Duplex是一种通信方式它允许数据在通信链路的两个方向上同时传输即通信的双方可以同时发送和接收数据。 因为OS系统内部Tcp为每一个连接的客户端维护了两个缓冲区一个是发送缓冲区一个是接收缓冲区这样就可以同时发送和接收信息而不互相干扰readwrite等系统调用在Tcp这里也就支持了一个socketfd既可以读也可以写。
Tcp粘包问题
TCP粘包是指发送方发送的若干包数据到接收方接收时粘成一包从接收缓冲区看后一包数据的头紧接着前一包数据的尾。这种现象既可能由发送方造成也可能由接收方造成。
由于Tcp是基于字节流的协议发送缓冲区内的数据什么时候发发多少出错了怎么办完全由Tcp协议自己决定所以就会导致出现报文发送不完整或者接收方不能读取完整报文的情况那么接受方如果不对这种报文进行正确处理就会导致粘包现象。
我们解决粘包问题的方案是循环读入数据判断报文是否完整如果完整则处理并将缓冲区中的这段报文删除判断处理下一个。 关于具体实现方案我们后面的文章中会给出具体实现。