i3geek.com
闫庚哲的个人博客

远程通信的方式及选择(二)——Socket,HTTP连接和TCP/IP

Socket

socket是对TCP/UDP协议的封装和应用(编程角度)。所以属于对传输控制层的操作,主要解决数据在网络中传输的问题;而HTTP是应用层协议,主要解决如何包装数据。简单的说,就是HTTP协议通信功能是利用了Socket封装的TCP/IP协议接口所实现的。例如,在java中可以分为udp Socket和tcp Socket。

Socket本身并不是协议,而是对TCP/IP协议的封装,是一个调用接口(API),通过Socket,我们才能使用TCP/IP协议。实际上,Socket跟TCP/IP协议没有必然的联系。Socket编程接口在设计的时候,就希望也能适应其他的网络协议。所以说,Socket的出现 只是使得程序员更方便地使用TCP/IP协议栈而已,是对TCP/IP协议的抽象,从而形成了我们知道的一些最基本的函数接口,比如create、 listen、connect、accept、send、read和write等等。

可以跨平台,跨语言(需要注意编码等问题)

HTTP协议

HTTP协议是Web联网的基础,也是手机联网常用的协议之一,HTTP协议是建立在TCP协议之上的一种应用。

HTTP连接最显著的特点是客户端发送的每次请求都需要服务器回送响应,在请求结束后,会主动释放连接。从建立连接到关闭连接的过程称为“一次连接”。

1)在HTTP 1.0中,客户端的每次请求都要求建立一次单独的连接,在处理完本次请求后,就自动释放连接。

2)在HTTP 1.1中,规定了默认保持长连接(HTTP persistent connection ,也有翻译为持久连接),数据传输完成了保持TCP连接不断开(不发RST包、不四次握手),等待在同域名下继续用这个通道传输数据

短连接

由于HTTP在每次请求结束后都会主动释放连接,因此HTTP连接是一种“短连接”,要保持客户端程序的在线状态,需要不断地向服务器发起连接请求。通常的做法是即时不需要获得任何数据,客户端也保持每隔一段固定的时间向服务器发送一次“保持连接”的请求,服务器在收到该请求后对客户端进行回复,表明知道客户端“在线”。若服务器长时间无法收到客户端的请求,则认为客户端“下线”,若客户端长时间无法收到服务器的回复,则认为网络已经断开。

长连接

数据传输完成了保持TCP连接不断开,进行下一次传输,从而减少创建链接和关闭链接的资源消耗。

从HTTP1.1中,就可以添加HTTP首部的Connection: Keep-alive来达到长连接的目的。当然不能让服务器无休止的等下去,一般还会设置Keep-Alive: timeout=20,链接的保持时间。

更多长连接的问题:http://www.cnblogs.com/skynet/archive/2010/12/11/1903347.html

Socket和HTTP、TCP/IP小结

SOCKET连接与TCP/IP连接

创建Socket连接时,可以指定使用的传输层协议,Socket可以支持不同的传输层协议(TCP或UDP),当使用TCP协议进行连接时,该Socket连接就是一个TCP连接。

TCP/IP连接和HTTP连接

HTTP是应用层协议,TCP/IP是传输层协议族,因此可以理解为,HTTP链接是基于TCP/IP连接所实现的。

HTTP工作原理:

  1. 1. 封成HTTP请求数据包
  2. 2. 封成TCP包
  3. 3. 建立TCP连接(三次握手)
  4. 4. 客户端发请求
  5. 5. 服务器返回响应
  6. 6. 服务器关闭TCP连接(四次挥手)

Socket连接与HTTP连接

Socket连接通常情况下就是TCP连接,因此Socket连接一旦建立,通信双方即可开始相互发送数据内容,直到双方连接断开。但在实际网络应用中,客户端到服务器之间的通信往往需要穿越多个中间节点,例如路由器、网关、防火墙等,大部分防火墙默认会关闭长时间处于非活跃状态的连接而导致 Socket 连接断连。因此Socket链接中,客户端需要通过轮询告诉服务器网络,该连接处于活跃状态。

HTTP连接使用的是“请求—响应”的方式,不仅在请求时需要先建立连接,而且需要客户端向服务器发出请求后,服务器端才能回复数据。

很多情况下,需要服务器端主动向客户端推送数据,保持客户端与服务器数据的实时与同步。此时若双方建立的是Socket连接,服务器就可以直接将数据传送给客户端;若双方建立的是HTTP连接,则服务器需要等到客户端发送一次请求后才能将数据传回给客户端,因此,客户端定时向服务器端发送连接请求,不仅可以保持在线,同时也是在“询问”服务器是否有新的数据,如果有就将数据传给客户端。

赞(1)
未经允许不得转载:爱上极客 » 远程通信的方式及选择(二)——Socket,HTTP连接和TCP/IP
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址