tcp协议是面向连接的,而http是无状态的,面向连接和无状态怎么感觉好像优点矛盾呢?

 不矛盾,一个是面向链接的,一个是无连接的。面向链接的可靠些,无连接的就不那么可靠。主要是因为这两个协议所处的层不一样。互联网的设计者认为,用户层应是简单的,直接的。所以无连接的设计能够简化设备的成本,利于互联网的开放式发展。网络的各个接入点和SP他们因为要处理来自用户的数据,所以将复杂的设备和可靠的协议放在这里。也是合乎情理的。
回答者: jolux - 魔法师 五级   12-25 16:40
你玩网络游戏连接时一直存在的,下线了就马上断开了。
但http因为最开始设计的时候,为了读网页用,网页取到了你可能花个10分钟来读它,所以这10分钟连接是没有必要的,所以马上就断开了(节省服务器端资源)。所以用户是否还在浏览它的网页服务端不知道,因此就出现了cookie,session这类东西来弥补
为什么不用udp,首先用udp是为了提高效率,但是tcp已经很高效了,没必要用udp,而且udp容易出错(比方说你下载一个驱动,但是如果数据是坏的有可能损坏你的系统)
回答者: paranoid945 - 助理 二级   12-26 14:42
TCP的面向连接是传输层的,而HTTP的无状态则是应用层的
传统TCP应用主要面向专用系统,这种环境中客户端的数目是有限的,意味者服务器最多开几十个服务进程修行了,而客户端与服务器需要连续地交换数据,频繁地连接和断开对两端都难以接受
HTTP协议产生于互联网,因此服务器需要处理同时面向全世界数十万、上百万客户端的网页访问,但每个客户端(即浏览器)与服务器之间交换数据的间歇性较大(即传输具有突发性、瞬时性),并且网页浏览的联想性、发散性导致两次传送的数据关联性很低,如果按照上面的方式则需要在服务器端开的进程和句柄数目都是不可接受的,象paranoid945所说的,大部分通道实际上会很空闲、无端占用资源。因此HTTP的设计者有意利用这种特点将协议设计为请求时建连接、请求完释放连接,以尽快将资源释放出来服务其他客户端。
UDP尽管不象TCP那样占用资源,但它不保证数据的完整性、有序性,想像如果服务器返回的HTML错序了或者丢失一部分你将看到什么效果;并且UDP没有流量控制,而互联网的传输质量又不是很好,服务器随便仍出一大堆UDP包可能导致网络风暴,这是相当危险的

你可能感兴趣的:(某项目相关技术)