服务端没有listen,客户端发起连接建立
服务端只bind了ip和端口,但是没有listen这个socket监听,客户端此时发起建立连接,会怎样?
服务端会返回RST,即把SYN丢掉
RST 报文是什么?
RST 报文是 TCP 中的一种“暴力”断开连接的方式。它的意思是 Reset,即“复位”。当接收方发送 RST 时,它是在告诉对方:“我无法建立这个连接,请立即终止!” 这和正常的四次挥手断开连接不同,RST 是一种不包含任何确认的、突然的连接终止。

不使用listen,可以建立tcp连接吗
可以的。tcp自连接(同一台机器内的不同进程连),也可以是两个客户端同时发起建立连接的请求(两个独
立的客户端之间,它们同时尝试与对方建立连接)。
这两种情况都不需要listen,但都可以建立连接
半连接和全连接队列都是在服务端listen时内核自动创建的,故客户端是没有这个东西的。
但内核有个全局hash表,用来存放sock的信息
在tcp自连接中,客户端在connec方法中,会将自己的连接信息放入这个全局hash表中
然后将信息发出,消息经过回环地址重新回答tcp传输层时,就会根据IP+端口信息去这个全局hash中取信息
于是握手一来一回,最后成功建立连接
在两个独立的客户端之间,同时尝试与对方建立连接时: