本文转自网络
HTTP 和 Socket 的区别
要弄明白 http 和 socket 首先要熟悉网络七层:物 数 网 传 会 表 应,如图1
如图1
HTTP 协议:超文本传输协议,对应于应用层,用于如何封装数据.
TCP/UDP 协议:传输控制协议,对应于传输层,主要解决数据在网络中的传输。
IP 协议:对应于网络层,同样解决数据在网络中的传输。
传输数据的时候只使用 TCP/IP 协议(传输层),如果没有应用层来识别数据内容,传输后的协议都是无用的。
应用层协议很多 FTP,HTTP,TELNET等,可以自己定义应用层协议。
web 使用 HTTP 作传输层协议,以封装 HTTP 文本信息,然后使用 TCP/IP 做传输层协议,将数据发送到网络上。
一、HTTP 协议
http 为短连接:客户端发送请求都需要服务器端回送响应.请求结束后,主动释放链接,因此为短连接。通常的做法是,不需要任何数据,也要保持每隔一段时间向服务器发送"保持连接"的请求。这样可以保证客户端在服务器端是"上线"状态。
HTTP连接使用的是"请求-响应"方式,不仅在请求时建立连接,而且客户端向服务器端请求后,服务器才返回数据。
二、Socket 连接
要想明白 Socket,必须要理解 TCP 连接。
TCP 三次握手:握手过程中并不传输数据,在握手后服务器与客户端才开始传输数据,理想状态下,TCP 连接一旦建立,在通讯双方中的任何一方主动断开连接之前 TCP 连接会一直保持下去。
Socket 是对 TCP/IP 协议的封装,Socket 只是个接口不是协议,通过 Socket 我们才能使用 TCP/IP 协议,除了 TCP,也可以使用 UDP 协议来传递数据。
创建 Socket 连接的时候,可以指定传输层协议,可以是 TCP 或者 UDP,当用 TCP 连接,该Socket就是个TCP连接,反之。
Socket 原理
Socket 连接,至少需要一对套接字,分为 clientSocket,serverSocket 连接分为3个步骤:
(1) 服务器监听:服务器并不定位具体客户端的套接字,而是时刻处于监听状态;
(2) 客户端请求:客户端的套接字要描述它要连接的服务器的套接字,提供地址和端口号,然后向服务器套接字提出连接请求;
(3) 连接确认:当服务器套接字收到客户端套接字发来的请求后,就响应客户端套接字的请求,并建立一个新的线程,把服务器端的套接字的描述发给客户端。一旦客户端确认了此描述,就正式建立连接。而服务器套接字继续处于监听状态,继续接收其他客户端套接字的连接请求.
Socket为长连接:通常情况下Socket 连接就是 TCP 连接,因此 Socket 连接一旦建立,通讯双方开始互发数据内容,直到双方断开连接。在实际应用中,由于网络节点过多,在传输过程中,会被节点断开连接,因此要通过轮询高速网络,该节点处于活跃状态。
很多情况下,都是需要服务器端向客户端主动推送数据,保持客户端与服务端的实时同步。
若双方是 Socket 连接,可以由服务器直接向客户端发送数据。
若双方是 HTTP 连接,则服务器需要等客户端发送请求后,才能将数据回传给客户端。
因此,客户端定时向服务器端发送请求,不仅可以保持在线,同时也询问服务器是否有新数据,如果有就将数据传给客户端。
参考原文:http://www.cnblogs.com/xclidongbo/p/4032904.html?utm_source=tuicool&utm_medium=referral
分享到:
相关推荐
### 关于HTTP与Socket的区别 #### HTTP协议详解 **HTTP**(HyperText Transfer Protocol,超文本传输协议)是一种用于从Web服务器传输超文本到本地浏览器的传输协议。它基于请求与响应模型,属于无状态的应用层...
在Java的网络编程中,`UrlConnection`和`Socket`是两种常见的网络连接方式,它们在处理HTTP请求和响应时有着不同的特性和应用场景。本文将深入探讨这两种连接方式的区别,并结合`HttpURLConnectionImpl.java`、`...
HTTP 和 Socket 是两种常见的网络通信协议,它们各自有其特点和适用场景。下面将详细介绍这两个概念,以及它们之间的区别。 1. **TCP 连接**: - TCP(Transmission Control Protocol,传输控制协议)是一种面向...
标题中的“Modbus-Tcp采用Socket与NModbus两种方式”指的是在实现基于Modbus-TCP协议的通信时,采用了两种不同的技术手段:Socket编程和使用NModbus库。这两种方法都是为了与支持Modbus-TCP协议的设备进行数据交换。...
在Windows平台上,Socket API基于伯克利套接字模型,但有一些细微差别。例如,Windows使用WSAStartup和WSACleanup函数初始化和清理网络环境,而在Unix-like系统中则没有这样的过程。此外,错误处理方式也有所不同,...
SocketTool是一款专为开发者设计的Socket调试助手,它支持TCP和UDP协议,可以在服务器端和客户端之间灵活切换,帮助程序员高效地调试网络通信程序。在实际的开发过程中,理解和掌握Socket编程是至关重要的,因为它是...
Socket编程是计算机网络编程中...通过实践这个示例,你可以学习如何在实际项目中应用UDP Socket编程,了解其与TCP的区别,以及如何处理网络通信中的各种问题。对于网络编程的深入理解和技能提升,这是一个很好的起点。
"安卓端Socket连接的方法aidl+server"这个主题主要涉及到如何在Android客户端(client)和服务器(server)之间建立Socket连接,以及如何利用Android Interface Definition Language (AIDL)来辅助实现这一过程。...
Linux内核中的sock和socket数据结构是网络编程的核心组成部分,它们是实现网络通信的基础构件。在Linux操作系统中,网络通信的实现依赖于BSD套接字接口,而这一接口在内核中是通过sock和socket数据结构来实现的。 ...
在这个"Socket服务器和客户端,Console模式"的项目中,我们重点探讨的是基于TCP协议的Socket通信,它使用了Visual Studio 2010作为开发环境。在Console模式下,意味着所有的交互都是通过命令行界面进行的,没有图形...
Web服务(WebService)和Socket是两种在互联网上实现应用程序间通信的重要技术。它们在不同的场景下各有优势,但都致力于解决分布式系统中的数据交换问题。本文将深入探讨这两种技术的基本概念、工作原理以及它们在...
IP协议与socket之间的区别
实验目标是掌握Socket编程的基本方法,理解客户端与服务器端的区别,并熟练使用Socket类与ServerSocket类。实验内容包括学习Socket编程涉及的类和接口,尤其是基于TCP的Socket编程,以及编写服务器端和客户端程序,...
- **TCP与UDP的区别**:TCP是面向连接的、可靠的传输协议,提供顺序数据传输和错误检测;而UDP是无连接的,不保证数据包的顺序和可靠性,但效率较高。 2. **创建Socket** - **ServerSocket的使用**:通过`...
使用SocketTool工具测试与欧姆龙FINS通信,发送数据和回复数据的报文记录,对第一次使用欧姆龙的人有很大的帮助;
- send/recv函数:发送和接收数据,理解阻塞与非阻塞模式的区别。 - close函数:关闭Socket,释放资源。 5. 错误处理与调试: - 网络异常处理:如何处理常见的网络错误,如ECONNREFUSED、ETIMEDOUT等。 - 日志...
文档最后可能会对TCP和UDP协议进行回顾,强调它们在网络通信中的作用和区别。TCP提供可靠的、面向连接的服务,适用于需要保证数据完整性的应用;UDP则提供无连接的服务,适合于对实时性要求高的应用。 ### 附加信息...
如果您找到了此组件,也必然知道 Socket 和 AJAX 的区别。 迈云 JavaScript Socket 类可以在网页上创建原生Socket,并与服务器端通讯。Socket具有持久、实时的优点,适合IM、聊天室、网络游戏、实时更新、实时推送...
2. **创建 Socket 对象**:通过 `new Socket()` 初始化一个 Socket 实例,指定地址族(AddressFamily.InterNetwork 表示 IPv4)、套接字类型(SocketType.Stream 表示 TCP)和协议(ProtocolType.Tcp 表示 TCP 协议...