Network | Socket连接建立步骤

在这里插入图片描述

服务端创建一个 IPv4 的 TCP 传输的 socket 的步骤:

  1. 调用系统函数 socket (),创建并绑定一个 IP 地址和端口。
  2. 调用系统函数 listen (),进行地址监听。此时可以通过 netstate 命令查看对应端口是否被监听。
  3. 调用系统函数 accept (),从内核获取客户端的连接,如果没有客户端进行连接,则会阻塞等待。
  4. 最后调用完成需要close() 连接

客户端发起连接的步骤:

  1. 客户端创建 socket 连接
  2. 调用系统函数 connect () 发起连接请求,在该函数中指定要连接的服务端的 IP 和 Port,然后进行 TCP 三次握手确认连接状态

在 TCP 连接中,内核要为每个 socket 维护两个队列

  1. 半连接队列
    没有完全建立连接的队列
    还未完成三次握手,服务端处于 syn_rcvd 状态,既等待客户端发送回执
  2. 全连接队列
    建立连接的队列
    完成了三次握手,服务端处于 established 状态

当 TCP 全连接队列不为空时,服务端的 accept () 函数就会从队列中取出完成的连接返回给应用,后续的数据传输度使用这个 socket。建立连接后,客户端和服务端就可以互相传输数据了,双方都可以通过 read () 和 write () 函数来读写数据了。

参考:

https://blog.m2ez.com/2021/001/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值