tcp的建立连接和断开连接

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

tcp的建立连接和断开连接

建立连接和断开连接简介

TCP的三次握手和四次挥手是TCP协议中非常重要的概念,以下是详细介绍:

三次握手:

TCP的三次握手过程是建立TCP连接的过程,由三个步骤组成:

第一次握手:客户端发送一个SYN(SYN=1)包到服务器,进入SYN_SENT状态。这个包中包含了一个随机生成的序列号(seq=x)。
第二次握手:服务器收到SYN包后,发送一个ACK(ACK=1)包和SYN(SYN=1)包到客户端,进入SYN_RECV状态。这个包中包含了一个确认号(ack=x+1)和另一个随机生成的序列号(seq=y)。
第三次握手:客户端收到服务器的SYN+ACK包后,发送一个ACK(ACK=1)包到服务器,进入ESTABLISHED状态。这个包中包含了一个确认号(ack=y+1)和自己的序列号加一(seq=x+1)。
三次握手之后,客户端和服务器之间就建立了一条TCP连接,可以开始传输数据。

四次挥手:

TCP的四次挥手过程是关闭TCP连接的过程,由四个步骤组成:

第一次挥手:服务器发送一个FIN(FIN=1)包到客户端,进入FIN_WAIT_1状态。这个包中包含了一个序列号(seq=w)。
第二次挥手:客户端收到服务器的FIN包后,发送一个ACK(ACK=1)包到服务器,进入CLOSE_WAIT状态。
第三次挥手:客户端发送一个FIN(FIN=1)包到服务器,进入LAST_ACK状态。这个包中包含了一个序列号(seq=x+1)。
第四次挥手:服务器收到客户端的FIN包后,发送一个ACK(ACK=1)包到客户端,进入TIME_WAIT状态。
四次挥手之后,TCP连接被关闭,双方都可以释放资源。需要注意的是,在半关闭状态下,服务器可能会发送一些数据,因此在第三次挥手时服务器可能还有数据没有发送完毕。

常用api函数

socket():创建一个新的套接字(即TCP连接),返回一个文件描述符。
bind():将套接字绑定到一个指定的IP地址和端口上。
listen():使套接字进入监听状态,等待客户端连接。
accept():接受来自客户端的连接请求,返回一个新的套接字,用于与客户端进行通信。
connect():尝试与服务器建立TCP连接。
send():向套接字发送数据。
recv():从套接字接收数据。
close():关闭套接字。
getpeername():获取远程客户端的IP地址和端口号。
getsockname():获取本地套接字的IP地址和端口号。
setsockopt():设置套接字的选项。
getsockopt():获取套接字的选项。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

付宇利

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值