九、粘包问题
严格粘包问题不是TCP自身机制,而是面向字节流传输所具备的共性问题
粘包:粘的应用层数据报,导致处理数据的时候,容易读取半个应用层数据报
HTTP协议基于TCP的应用层协议,自己会处理好粘包问题:
1.对于GET请求,分隔符就是空行
2.对于POST请求,Content-length指定包的长度
十、保活机制
1.进程崩溃,这种情况下,TCP连接会正常四次挥手(只要进程退出,都会自动关闭相关的文件)
2.主机关机(按流程关机),关机时会强制先杀进程,杀进程过程中就进行四次挥手
3.主机断电/网线断了
(1)接收方断电,对断电尝试发送消息的时候,就会出现没有ACK的情况——>超时传送——>重传一定次数,充值链接——>放弃连接
(2)发送方断电,对端尝试接受消息,对于接收方来说,本来也不知道发送什么内容什么时候发送,这是就有“心跳包”这个东西,它对于TCP通信双方,即使在没有数据交互的过程中,也会定时相互传输一个没有实际业务意义的“心跳包”,只是为了证明“我活着”,一旦隔了一段时间都没有收到对方的“心跳包”,就认为对方掉线