http,socket之间的区别

写这篇文章是因为学习了http之后发现和我以前学习java时所学的socket有相似之处,但却不知道两者的区别和关联,再加上以前的一些关于网路编程的疑问,所以觉得必须放下手头的事来整理一下这里的知识了。

先说HTTP和Socket的区别和关联:

http是短链接,即客户端向服务器端发送一次请求,服务器端响应后连接即会断掉;socket是长连接理论上客户端和服务器端一旦建立起连接将不会主动断掉。这点的话还是比较好理解,从敲代码的时候就能看出个大概。

http是应用层协议,主要解决如何包装数据;Socket是对TCP/IP协议的封装,Socket本身并不是协议,而是一个调用接口(API),通过Socket,才能使用TCP/IP协议。原来以为socket也是一个协议,现在才知道只是一个协议的封装,是一个API,通俗点就是一种实现网络通讯的技术。

HTTP协议是建立在TCP协议之上的一种应用层协议,而Socket是支持TCP/IP协议的网络通信的基本操作单元,相当于是传输层的技术。HTTP协议是建立在TCP协议之上?那就是socket里面的TCP,意思就是HTTP也是面向连接的一种通讯方式,而不想UDP一样,是不面向连接的。

好吧,总结了一些偏理论性的解释还是不懂,需要具体点的讲解。下面一段话是我在网上看到的。不能说讲的好吧,最起码一读就能根据自己的经验能理解的,而不是抽象的理论巴拉巴拉什么的。

http实现采用的主流请求方式有get和post,主要用于web服务。具体优缺点。

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

而socket实现采用的协议方式只有TCP和UDP,TCP和UDP的区别和优劣这里就不讲了。

优点:1.传输数据为字节级,传输数据可自定义,数据量小。相应的移动端开发,手机费用低。2.传输数据时间短,性能高。3.适合C/S之间信息实时交互。4.可以加密,数据安全性高。
缺点: 1.需要对传输的数据进行解析,转化为应用级的数据。2.对开发人员的开发水平要求高。3.相对于Http协议传输,增加了开发量。

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

好吧,这里队Socket和HTTP就有个深刻的理解了,原来HTTP和Socket不是嵌套关系,原来看一些偏理论的解释还以为是应用层的http技术里面要套上过一个Socket技术,还以为每一次连接都要两种方式齐上阵,这下才知道原来只要其中一种通讯方式就可以了。而且还大体了解了下Socket和HTTP的优劣。我说呢,这几天还在想既然有HTTP编程了,为什么还要Socket编程呢?原来两者应用在不同的领域,是可以选择的。

下面还是网上看到的一段话,还有我的一些理解,又加深了我对http和socket的理解。

1.socket通信是手机端到手机端的通信,要经过服务器来回转发数据。意思就是Socket编程多用于客户端到客户端的数据的传输?就比如说聊天软件。
2.http的通信是手机到web服务器端通信,就直接来回发送数据。意思就是客户端到服务器端的数据的编程方式。
3.socket通信要看两端手机信号好坏来决定传输速度。感觉Socket是更底层的实现,是不是比http又快一点。
4.http的通信的WEB服务器是有线的再到无线,有线速度快?还是无线的快呢?

两者的区别就讲到这里吧,以上全是自己的所思所想,如果有错多谢纠正。



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值