TCP Socket在客户端和服务器中是如何建立连接的

本文详细阐述了TCP Socket在客户端和服务器建立连接的过程。服务器首先创建并绑定socket,然后监听特定端口,使用accept函数响应客户端的SYN报文,完成三次握手。客户端则创建socket并绑定端口,通过connect函数发起SYN报文,接收服务器的ACK+SYN并回应ACK,建立连接。此外,还讨论了如何自定义报文以手动完成三次握手的特殊情况。
摘要由CSDN通过智能技术生成

TCP Socket在Client和Server中是如何建立连接的

Server

  • 先调用函数创建tcp socket,创建的是一个“主动”套接字对象

  • 然后用这个套接字调用bind函数,传入ip和port参数,绑定ip和端口号

  • 接着调用listen函数,监听在这个端口上,等待客户端的连接请求,这一步可以让socket收到客户端的SYN报文,但是收到后协议栈并不会自动回复SYN+ACK,自动回复需要调用accept函数

  • 最后调用函数accept,如果有请求过来(SYN报文),就会让Server端的协议栈自动回复(ACK+SYN),自动完成三次握手

这里有一些需要特别注意和理解的内容:

调用listen函数会将Server端创建的“主动”socket转为“被动”socket,来不停地接收外来的客户端请求。所以listen函数传入的参数中有一个最大值的参数,表示server端允许接受的tcp连接请求的最大值

“被动”socket调用accept函数,能够让此套接字按照顺序提取监听到的来自客户端的连接请求,驱动协议栈自动完成三次握手连接,同时生

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

汽车通信技术

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

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

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

打赏作者

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

抵扣说明:

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

余额充值