套接字是网络上两个程序之间双向通信连接的端点(类似于打电话时的两部手机)。它基于TCP/IP协议,稳定。
套接字是网络上运行的两个程序之间双向通信链路的一个端点,它绑定到端口号,以便TCP 层可以识别应将数据发送到的应用程序。
端点是IP 地址和端口号的组合。这允许每个TCP 连接由两个端点唯一标识。这允许在主机和服务器之间建立多个连接。
Socket Socket=(IP地址:端口号)。套接字由点分十进制IP 地址表示,后跟由冒号或逗号分隔的端口号。每个传输层连接由通信双方的两个端点(即两个套接字)唯一标识。举例:IP地址为192.168.56.103,端口号为23,则获取的socket为(192.168.56.103:23)。
一、Socket通信基本原理
首先,socket通信是一种基于TCP/IP网络层的传输方式,其中TCP和UDP通常称为传输层。
套接字是基于应用服务和TCP/IP 通信的抽象,它封装了TCP/IP 协议复杂的通信逻辑,允许用户通过一组简单的API 实现网络连接。
首先,服务器初始化ServerSocket,然后绑定到指定端口,监听该端口,并调用accept方法进行阻塞。这时,如果客户端有一个socket连接到服务器,服务器就会监听并接受该方法。与您的客户联系。
二、工作流程
至少需要一对套接字才能通过Internet 进行通信。一个运行在客户端(称为客户端套接字),另一个运行在服务器端,称为服务器套接字。
根据连接的发起方式以及本地套接字连接到的位置,套接字到套接字的连接过程可以分为三个步骤。
1.服务器监控
所谓服务器监控,是指服务器端socket在等待连接的同时实时监控网络的状态,而不是定位特定的客户端socket。
2.客户要求
调整后的客户端请求是来自客户端socket的连接请求,连接目标是服务器socket。为此,客户端套接字必须首先描述它想要连接的服务器端套接字,然后向服务器端套接字发出连接请求,并指定服务器端套接字的地址和端口号。
3. 连接确认
所谓连接检查是指当服务器端socket侦听或接收到客户端socket的连接请求时,它响应客户端socket的请求,建立一个新的线程,并连接到服务器端socket。消息被发送到客户端。一旦客户端验证了该描述,连接就建立了。服务器端套接字继续侦听并接收来自其他客户端套接字的连接请求。
三、长连接和短连接
1.长连接
这意味着如果在连接维护期间没有发送数据包,则一个连接上可以连续发送多个数据包。双方必须发送链路发现数据包。在整个通信过程中,客户端和服务器仅使用一个Socket对象来维持持久的Socket连接。
长连接过程:连接数据传输保持连接(心跳)数据传输保持连接(心跳)…关闭连接。
这需要一个持久的连接,以便在没有数据流量来维持连接时发送周期性数据包(心跳)。
2. 短接
短连接服务为每个请求建立链接,并在交互后关闭链接。
其实长连接和短连接的区别就在于客户端和服务器之间的整个通信过程是使用一个套接字还是多个套接字。
3、长连接和短连接的比较
长连接主要用于频繁操作和点对点通信,连接数量不能太大。所有TCP 连接都需要三步握手,并且非常耗时。如果每次操作都是短连接,每次操作后不断开连接,直接发送数据包,下次处理时不建立,是可以的,因为再次操作会明显减慢处理速度。 TCP 连接。例如,数据库连接使用长连接,短连接频繁通信会导致socket错误,频繁创建socket则浪费资源。
套接字是一套封装应用层和TCP/IP数据传输协议的解决方案,最底层也通过TCP/IP或UDP进行通信。所以socket本身并不是一组通信协议,而是一组接口。
TCP/IP协议组的应用层包括FTP、HTTP、TELNET、SMTP、DNS等协议。我们知道http1.0是短连接,http1.1是长连接。当你打开http通信协议时,你会在请求头中看到Connection: keep-alive。
您还可以检查相应的响应标头。
那个有什么用?
它意味着持久的连接,但它有固定的时间(连接超时),而不是连续的连接。
如果我想永远保持这种联系怎么办?
即允许客户端和服务器在指定时间内发出请求。通常,请求会不时地从客户端发送到服务器。也就是我们所说的心跳包。
原创文章,作者:小条,如若转载,请注明出处:https://www.sudun.com/ask/85352.html