Soket基础回顾
1:是什么
A:协议?
socket是服务器和客户端通信的API,这里要区分和http协议的区别,他们两个不能并列做比较,socket是TCP/IP调用接口,不是协议,而http才是可以通过socket在TCP上进行数据传输的种应用。
B:连接
socket是长连接,一旦连接不会主动断掉。http是短连接,服务端接收到之后就会断掉。个人经验来讲,长连接不是不好,短连接也不是不行,长连接看应用场景,比如聊天室这种就需要长连接,当然要为了可用性牺牲一些性能,短连接也不是一定就好用, 某些高频场景,http连接频繁了会假死,所以一定要做好取舍。
C:连接类型
流式,TCP服务应用,效率低,UDP数据报文式,无序,会丢失,效率高
D:三次握手
TCP:首先客户端请求服务器是否闲置连接分配,然后客户端回复是否有空,最后客户端回复服务端我知道你有空,保证了请求和响应的不丢失
2:干什么
客户端可以通过ip地址访问到服务端,同时通过端口号,连接服务器上面的应用。每一次服务端应用都有一个端口号。一般最大50000,50000之后的端口都是闲置的。这里我额外想到.net core默认启动端口是5000的,原来是因为这个。
客户端和服务端区别:客户端持有一个socket连接,服务端有两个,分别是监听连接和应答客户端两个
3:栗子
服务器常用的服务:sqlserver默认端口是1433TCP, 1434UDP,http 80端口,ftp 21端口,smtp 25端口
sqlserver为例:客户端连接服务器请求数据服务,请求1433端口,服务器如果sqlserver有空余分配,就返回可连接并创建一个用来接收客户端数据的socket,然后客户端持续连接服务端,操作数据库,最后直到客户端主动关闭连接,服务端才会释放这个连接。
扩展:socket允许设置某一时间最大连接数,那么数据库优化上就可以优化最大连接数参数,或者调整排队等待时间。
浙公网安备 33010602011771号