关于http协议与tcp协议的一点总结

  1. tcp协议
    1)服务器维护一个tcp长连接,只需要维护ip+端口+客户端ID,前两个属于链接的本质属性,后一个属于业务属性,主要是希望可以减少数据的传输(如果没有客户端ID,每次输出数据都必须带上这个,所以最好直接维护在链接里面)
    2)心跳包不属于链接需要维护的东西,它只是确保链接存在且有效的手段,与链接本身没有关系,错误异常处理都属于这个范畴
    3)数据传输协议可以自由定义,但是最重要的是需要定义清楚数据头和数据尾(校验一般也是必须的,可以放在数据尾),且不能省略,其余可以根据需要自由定义

  2. udp协议
    1)udp有没有最大传输数据的限制?
    答:刚听到这个问题,我一脸黑人问号,当然有啊,这还用问么,数据包的大小必然是受限制的啊,这跟udp和tcp有什么关系呢?后来冷静下来细细回想,才明白这个问题的真正意图。我们知道tcp可以发送任意长度的数据,因为它是面向连接的且可靠的传输,所以把一个大的文件分割成合适的数据包。但是udp不行,主要因为udp是非可靠的传输,一旦其中某个包被丢弃了,在接收端就会重组数据失败,所以udp上想做大文件的可靠传输是不靠谱的,最好将数据量保持在一个数据包中

  3. http协议
    1)从RESTFul的角度来说,get请求和post请求唯一的区别是一个用来请求数据,一个用来上传数据,但是在浏览器的角度,区别就比较多:
    a)对服务器来说,get请求是安全且幂等的(这里的安全是指get请求不会影响服务器数据,幂等是指无论请求多少次,结果都是一样的)
    b)get请求是有长度限制的,一般是1024,IE是是2083(2046+35),这个限制主要是由url的长度限制的;body在理论上没有size限制
    c)POST请求安全性更高(这里的安全是指数据安全)

猜你喜欢

转载自blog.csdn.net/l350230259/article/details/77448134
今日推荐