Socket 两种连接方式

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Socket 两种连接方式相关的知识,希望对你有一定的参考价值。

参考技术A 长连接与短连接

所谓长连接,指在一个TCP连接上可以连续发送多个数据包,在TCP连接保持期间,如果没有数据包发送,需要双方发检测包以维持此连接,一般需要自己做在线维持。

短连接是指通信双方有数据交互时,就建立一个TCP连接,数据发送完成后,则断开此TCP连接,一般银行都使用短连接。

比如http的,只是连接、请求、关闭,过程时间较短,服务器若是一段时间内没有收到请求即可关闭连接。

其实长连接是相对于通常的短连接而说的,也就是长时间保持客户端与服务端的连接状态。

长连接与短连接的操作过程:

通常的短连接操作步骤是:

连接→数据传输→关闭连接;

而长连接通常就是:

连接→数据传输→保持连接(心跳)→数据传输→保持连接(心跳)→……→关闭连接;

这就要求长连接在没有数据通信时,定时发送数据包(心跳),以维持连接状态,短连接在没有数据传输时直接关闭就行了.

在TCP/IP协议中,TCP协议提供可靠的连接服务,采用三次握手建立一个连接 。

第一次握手:建立连接时,客户端发送syn包(syn=j)到服务器,并进入SYN_SEND状态,等待服务器确认;

第二次握手:服务器收到syn包,必须确认客户的SYN(ack=j+1),同时自己也发送一个SYN包(syn=k),即SYN+ACK包,此时服务器进入SYN_RECV状态; 

第三次握手:客户端收到服务器的SYN+ACK包,向服务器发送确认包ACK(ack=k+1),此包发送完毕,客户端和服务器进入ESTABLISHED状态,完成三次握手。

完成三次握手,客户端与服务器开始传送数据.

参考博客:

http://m.blog.chinaunix.net/uid-26000296-id-3758651.html

http://blog.csdn.net/wanghuan203/article/details/36057485

PHP 设置 socket连接

摘要: 作者博文地址:https://www.cnblogs.com/liu-shuai/

nginx和fastcgi的通信方式有两种,一种是TCP的方式,一种是unix socket方式.

socket方式不会走到tcp层,tcp方式则会走到ip层。因此,理论上说socket连接方式效率会更好一点。

TCP和unix domain socket方式对比
    TCP是使用TCP端口连接127.0.0.1:9000
    Socket是使用unix domain socket连接套接字/dev/shm/php-fpm.sock

1、修改php-fpm.conf

1 ;listen = 127.0.0.1:9000     # 注释
2 listen = /dev/shm/php-fpm.sock     # /dev/shm/为内存文件系统,确保可读写
3 listen.owner = nginx
4 listen.group = nginx
5 
6 service php-fpm restart


2、修改nginx.conf

1 #fastcgi_pass     127.0.0.1:9000;
2 fastcgi_pass    unix:/dev/shm/php-fpm.sock;
3 
4 /usr/local/nginx/sbin/nginx -s reload

 




以上是关于Socket 两种连接方式的主要内容,如果未能解决你的问题,请参考以下文章

PHP 设置 socket连接

mysql 两种连接方式和SSL连接、x509认证

Socket通信机制(学习总结)

Socket通信机制(学习总结)

如何通过xshell连接windows

android--------Socket的简单了解