关于http协议与tcp协议的一点总结
2018-01-18 14:17
253 查看
tcp协议
1)服务器维护一个tcp长连接,只需要维护ip+端口+客户端ID,前两个属于链接的本质属性,后一个属于业务属性,主要是希望可以减少数据的传输(如果没有客户端ID,每次输出数据都必须带上这个,所以最好直接维护在链接里面)
2)心跳包不属于链接需要维护的东西,它只是确保链接存在且有效的手段,与链接本身没有关系,错误异常处理都属于这个范畴
3)数据传输协议可以自由定义,但是最重要的是需要定义清楚数据头和数据尾(校验一般也是必须的,可以放在数据尾),且不能省略,其余可以根据需要自由定义
udp协议
1)udp有没有最大传输数据的限制?
答:刚听到这个问题,我一脸黑人问号,当然有啊,这还用问么,数据包的大小必然是受限制的啊,这跟udp和tcp有什么关系呢?后来冷静下来细细回想,才明白这个问题的真正意图。我们知道tcp可以发送任意长度的数据,因为它是面向连接的且可靠的传输,所以把一个大的文件分割成合适的数据包。但是udp不行,主要因为udp是非可靠的传输,一旦其中某个包被丢弃了,在接收端就会重组数据失败,所以udp上想做大文件的可靠传输是不靠谱的,最好将数据量保持在一个数据包中
http协议
1)从RESTFul的角度来说,get请求和post请求唯一的区别是一个用来请求数据,一个用来上传数据,但是在浏览器的角度,区别就比较多:
a)对服务器来说,get请求是安全且幂等的(这里的安全是指get请求不会影响服务器数据,幂等是指无论请求多少次,结果都是一样的)
b)get请求是有长度限制的,一般是1024,IE是是2083(2046+35),这个限制主要是由url的长度限制的;body在理论上没有size限制
c)POST请求安全性更高(这里的安全是指数据安全)
1)服务器维护一个tcp长连接,只需要维护ip+端口+客户端ID,前两个属于链接的本质属性,后一个属于业务属性,主要是希望可以减少数据的传输(如果没有客户端ID,每次输出数据都必须带上这个,所以最好直接维护在链接里面)
2)心跳包不属于链接需要维护的东西,它只是确保链接存在且有效的手段,与链接本身没有关系,错误异常处理都属于这个范畴
3)数据传输协议可以自由定义,但是最重要的是需要定义清楚数据头和数据尾(校验一般也是必须的,可以放在数据尾),且不能省略,其余可以根据需要自由定义
udp协议
1)udp有没有最大传输数据的限制?
答:刚听到这个问题,我一脸黑人问号,当然有啊,这还用问么,数据包的大小必然是受限制的啊,这跟udp和tcp有什么关系呢?后来冷静下来细细回想,才明白这个问题的真正意图。我们知道tcp可以发送任意长度的数据,因为它是面向连接的且可靠的传输,所以把一个大的文件分割成合适的数据包。但是udp不行,主要因为udp是非可靠的传输,一旦其中某个包被丢弃了,在接收端就会重组数据失败,所以udp上想做大文件的可靠传输是不靠谱的,最好将数据量保持在一个数据包中
http协议
1)从RESTFul的角度来说,get请求和post请求唯一的区别是一个用来请求数据,一个用来上传数据,但是在浏览器的角度,区别就比较多:
a)对服务器来说,get请求是安全且幂等的(这里的安全是指get请求不会影响服务器数据,幂等是指无论请求多少次,结果都是一样的)
b)get请求是有长度限制的,一般是1024,IE是是2083(2046+35),这个限制主要是由url的长度限制的;body在理论上没有size限制
c)POST请求安全性更高(这里的安全是指数据安全)
相关文章推荐
- 关于HTTP协议跟TCP、IP协议到底在网络协议中的分层。
- 关于Http协议与TCP协议的一些简单理解
- 关于Http协议与TCP协议的一些简单理解
- 关于多线程Thread 与 Runnable 的一点总结
- 关于C++ 虚函数 子类和父类 一点小的总结
- TCP模型及其重点协议总结
- 关于 Visual Studio 调试 Global 的一点总结
- TCP/IP 协议簇下的各报文结构总结
- jquery关于val,attr的一点总结
- 关于json的一点总结
- HTTP协议中TCP的三次握手,四次挥手总结
- 关于对xmms安装过程的一点总结!
- 关于测试的一点总结
- TCP协议的一些总结(三)
- 关于oracle sql 调优学习的一点总结
- 关于新建android项目时 appcompat_v7报错问题的一点总结
- 关于PCA算法的一点学习总结
- 关于 ST eMotion board 使用DFU的一点总结
- Http协议与TCP协议易混淆点(一)
- UDP、TCP、RTP三种协议的总结