1、ET,LT模式深入分析及测试
2、我们的服务器设计
2.1、服务器设计原则总述
2.2、收发包格式问题提出
2.3、TCP粘包,缺包
2.3、TCP粘包,缺包解决
粘包:要解决就是把几个包拆出来。一个是一个。
1、加个特殊符号作为结尾,但是不太好。恶意数据包不好处理。
服务器程序员不能假设收到的数据包都是善意的,合理的,构造畸形数据包。
如何解决拆包问题:
给收发的数据包定义一个统一的格式;c/s都按照这个格式来,就能解决粘包问题。
包格式:包头加包体的格式:其中包头是固定长度【10字节】,在包头中有一个成员变量会记录整个包【包头+包体】的长度。这样的话,先收包头,知道整个包的长度,减去包头的长度,就等于包体的长度。。再收包体长度,一直到收满了包体长度的字节数,就认为一个完整的数据包收完。
收包总结:先收固定长度的包头,收满然后根据包头中长度计算包体长度,最后收包体长度的数据。收满了一个包就完整了。
官方的nginx主要是处理web服务器【专用的】,不大适合做web服务器【自由格式服务器】。
不太适合固定数据包【包头+包体】格式。
网友评论