Socket,犹如网络中两个程序间交流的桥梁,为它们提供了一个双向沟通的端点。基于TCP/IP协议,它确保了通信的稳定与有序。
Socket作为网络中两个程序间双向通信链接的一个端点,会绑定到一个端口号,使得TCP层能够识别出数据的目的应用程序。
每个端点由一个IP地址和端口号共同构成。每个TCP连接都能被其两端唯一的端点所确定,这样就能够在主机和服务器之间建立多个连接。
Socket通信是建立在TCP/IP网络层之上的传输方式。通常我们将TCP和UDP统称为传输层协议。
Socket是一种抽象,建立在应用服务与TCP/IP通信之间。它将TCP/IP协议中复杂的通信逻辑进行封装,对于用户而言,只需通过一组简单的API即可实现网络的连接。
服务端会初始化ServerSocket,绑定到指定的端口并开始。当客户端有一个socket连接到服务端时,服务端通过和accept方法可以与客户端建立连接。
为了在互联网上进行通信,至少需要一对套接字。其中,运行在客户端的被称为Client Socket,而运行在服务器端的则被称为Server Socket。
套接字之间的连接过程可以分为三个步骤:服务器、客户端请求以及连接确认。
关于长连接与短连接的说明:
长连接指在一个持续的连接上可以发送多个数据包。在连接保持期间,若没有数据包发送,双方会发送链路检测包。在整个通信过程中,客户端和服务端使用同一个Socket对象来维持长期的连接。
长连接过程通常为:建立连接 → 数据传输 → 保持连接(通过发送心跳包)→ 继续数据传输 → 保持连接(再次发送心跳)→ ... → 关闭连接。
为了维持长连接的活跃状态,当没有数据通信时,需要定时发送数据包(即心跳包)。
短连接则是每次请求都建立新的连接,交互完成后即关闭连接。
长连接和短连接的区别主要在于:整个客户端和服务端的通信过程是利用一个Socket还是多个Socket进行的。
Socket是应用层与TCP/IP传输协议之间的一个封装方案。它的底层依然基于TCP/IP或UDP进行通信。Socket本身并非一种通信协议,而是一组接口的封装。
在TCP/IP协议组的应用层中,包括FTP、HTTP、TELNET、TP、DNS等协议。其中,HTTP 1.0采用短连接,而HTTP 1.1则采用长连接。在HTTP通信协议的Request Headers中,可以通过“Connection: keep-alive”来表明使用长连接。
它的作用是什么?
Socket主要用于维持网络连接的持续性,特别是在需要频繁操作或点对点通信的场景中。它通过持续的连接减少了每次建立连接所需的时间和资源消耗。
如何保持长连接?