基本背景
一般我们写代码,作为服务方发布服务或者请求别人的服务的时候,都可能会接触到Socket编程。当然socket实际上已经比较底层了,平时用的各种框架的话,基本上是看不到的,都已经封装好了。但是对于基本的原理,我们还是需要了解一下的。
最基本的问题:套接字(socket)到底是啥?怎么理解。平时在请求服务的过程中遇到的各种连接异常,到底是什么意思。
Socket
socket是TCP连接的一种具体展现形式。我们经常会说到tcp连接,包括它的一些基本的属性或者概念,但这种连接是非常抽象的,那么在编码的时候肯定要把它进行具体化,就是socket,所以:
一个TCP连接=客户端socket+服务端socket
socket成对出现才是有意义的,它们一起代表了一个TCP连接。之后每次的交互都会通过socket进行。
socket建立过程与backlog
通过一张图看一下,socket建立过程与backlog的意义:
- 服务端监听端口。
- 客户端发起连接请求。
- TCP第一次握手:客户端发起SYN请