浅析socket与http

来源:互联网 发布:java面试 骆昊csdn 编辑:程序博客网 时间:2024/06/07 10:16
现在搞开发,很难不碰到http和socket了,原以为这些东西应该是一个基础课程,不过最近例行走读了一些旧代码,发现一些代码存在着明显的瑕疵,因为很多逻辑处理过程不在同一个水平线上,感觉可能是一些基础理论上的理解导致了程序的处理并没有走最优化的路线.兴趣时间所致,随便写几句
   首选说说http.
     http全文是超文本传输协议,是一种万维网常用的协议,它是TCP协议的一种典型上的应用,而TCP协议有一个典型的特点,个人认为非常的不好,就是"三次握手",你说你一次性给我说明白了不好,还非要一来一去,又不是谈恋爱.当然了,玩笑归玩笑,记住这个特征,因为很多时候我们都会忘记这个基本特征.
     http还有一个特点是"断链接",你也可以说是短链接,不过用"断链接"我觉的更合适.也就是说当我们用http协议打开一个信息点的时候,信息读取完毕双方会自动断开.
    再说说socket
      socket(套接字)是TCP/IP协议的基本操作单元。它是网络通信过程中端点的抽象表示。同HTTP不同的是http只能走tcp,socket不仅能走tcp,而且还能走udp,这个是socket的第一个特点
      socket的另外一个特点是他可以是"长链接",也就是说除非双方主动断开,否则,他不会自动断开.这个特点非常的好,很多应用都会需要长链接,不过缺点是他太博爱了,来者不拒,而且还不好检查,所以,为了保持服务器资源的最大利用率,通常我们会要求双方通过定时的心跳方式来确认长链接的有效性.只要心跳不存在,服务器就可以及时剔除掉这些死链接.
     ok,这样一分析,一的意思是我们就能理解了常规处理下,哪些地方用"PUSH", 哪些地方用"PUll"了.二的意思也就是说在TCP的握手协议的基础上,我们是完全可以通过socket的互相应答的方式实现http的请求-应答传输的.尤其是在一些特定的应用下,使用简单的socket模拟http,比用http要快很多.平常时候看不出来效果,关键时刻拼的就是效率了.




Socket实现服务器与客户端之间的物理连接,并进行数据传输。主要有TCP/UDP两个协议。Socket处于网络协议的传输层。
TCP:传输控制协议,面向连接的的协议,稳定可靠。当客户和服务器彼此交换数据前,必须先在双方之间建立一个TCP连接,之后才能传输数据。
UDP:广播式数据传输,UDP不提供可靠性,它只是把应用程序传给IP层的数据报发送出去,但是并不能保证它们能到达目的地。由于UDP在传输数据报前不用在客户和服务器之间建立一个连接,且没有超时重发等机制,故而传输速度很快。
优点:1.传输数据为字节级,传输数据可自定义,数据量小。相应的移动端开发,手机费用低
   2.传输数据时间短,性能高
   3.适合C/S之间信息实时交互
   4.可以加密,数据安全性高
缺点: 1.需要对传输的数据进行解析,转化为应用级的数据
      2.对开发人员的开发水平要求高
    3.相对于Http协议传输,增加了开发量

Http请求主要有http协议,基于http协议的soap协议,常见的http数据请求方式有get和post,web服务


优点:1.基于应用级的接口使用方便
   2.要求的开发水平不高,容错性强
缺点: 1.传输速度慢,数据包大。
    2.如实现实时交互,服务器性能压力大
    3.数据传输安全性差 


Socket适用场景:网络游戏,银行交互,支付。
http适用场景:公司OA服务,互联网服务。





















0 0