论坛
潜水/灌水快乐,沉淀知识,认识更多同行。
ToB圈子
加入IT圈,遇到更多同好之人。
朋友圈
看朋友圈动态,了解ToB世界。
ToB门户
了解全球最新的ToB事件
博客
Blog
排行榜
Ranklist
文库
业界最专业的IT文库,上传资料也可以赚钱
下载
分享
Share
导读
Guide
相册
Album
记录
Doing
搜索
本版
文章
帖子
ToB圈子
用户
免费入驻
产品入驻
解决方案入驻
公司入驻
案例入驻
登录
·
注册
只需一步,快速开始
账号登录
立即注册
找回密码
用户名
Email
自动登录
找回密码
密码
登录
立即注册
首页
找靠谱产品
找解决方案
找靠谱公司
找案例
找对的人
专家智库
悬赏任务
圈子
SAAS
IT评测·应用市场-qidao123.com技术社区
»
论坛
›
物联网
›
物联网
›
大厂口试题之盘算机网络:对于socket编程,accept方法是 ...
大厂口试题之盘算机网络:对于socket编程,accept方法是干什么的,在三次握 ...
徐锦洪
论坛元老
|
2025-3-28 04:18:54
|
来自手机
|
显示全部楼层
|
阅读模式
楼主
主题
1818
|
帖子
1818
|
积分
5454
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要
登录
才可以下载或查看,没有账号?
立即注册
x
在套接字(socket)编程中,accept 方法是一个服务器端的函数,用于接收客户端的连接请求。当一个服务器通过 bind 函数将一个套接字与一个特定的IP地址和端标语绑定后,接着调用 listen 函数开始监听该套接字上的连接请求。一旦有客户端尝试建立连接,服务器端就会调用 accept 函数来接受这个连接请求,并为这个新的连接创建一个新的套接字,这个新套接字专门用于与该客户端通信。这意味着服务器可以同时处置处罚多个客户端的连接,每个连接都对应一个独立的套接字。
至于三次握手(Three-Way Handshake),这是TCP协议中建立连接的过程,发生在客户端与服务器之间,确保双方都准备好进行可靠的数据传输。accept 函数并不直接对应三次握手的某一步,而是发生在握手过程之后。详细来说:
第一次握手:客户端发送一个带有SYN(同步序列编号,Synchronize Sequence Numbers)标志的TCP报文到服务器,请求建立连接。
第二次握手:服务器收到SYN报文后,回应一个SYN-ACK(SYN + 确认ACKnowledge)报文,表示确认客户端的请求,而且自己也准备好开始发送数据。
第三次握手:客户端收到服务器的SYN-ACK报文后,再发送一个ACK报文给服务器,确认收到了服务器的SYN-ACK报文,至此,连接建立完成。
在TCP三次握手成功完成后,服务器端的 accept 调用才会返回,此时服务器得到了一个新的套接字,这个套接字就用于与刚刚完成握手的客户端进行数据传输。因此,accept 可以视为服务器端对已完成三次握手的连接请求的一种响应和采取,但其本身并不直接参与三次握手的任何一个步骤。
accept 做了什么内容,这里就要提到半连接队列和全连接队列了
半连接队列(Syn Queue)
界说:半连接队列用于存放那些已经完成了TCP三次握手的前两个步骤(客户端发送SYN包,服务器回复SYN+ACK包)的连接请求。此时,连接处于SYN_RECEIVED状态,但尚未完成第三次握手(客户端发送ACK确认)。
作用:服务器通过维护这样一个队列来跟踪期待完成握手的连接,确保不会由于短时间内大量连接请求而丢失或肴杂。
设置:Linux体系中,可以通过调解/proc/sys/net/ipv4/tcp_max_syn_backlog参数来设置半连接队列的最大长度。如果队列满,后续的连接请求大概会被丢弃或收到RST(Reset)响应。
全连接队列(Accept Queue)
界说:全连接队列是指那些已经完成了TCP三次握手,即客户端发出了末了一个ACK包确认,但服务器还未通过accept()体系调用将其取出并分配给进程处置处罚的连接。这些连接的状态为ESTABLISHED。
作用:这个队列保证了即便服务器端的进程临时没有调用accept()来处置处罚新连接,客户端与服务器之间的连接也能保持,直到被应用程序处置处罚。
设置:Linux体系中,可以通过listen()函数的backlog参数来指定全连接队列的大小,但现实上能设置的最大值还会受到/proc/sys/net/core/somaxconn和/proc/sys/net/core/netdev_max_backlog等体系变量的限制。
全连接队列就叫做 accept queue, 这个队列内容就等着调用accept()函数把内容拿走,所以accept() 是在三次握手之后就行的。
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复
使用道具
举报
0 个回复
倒序浏览
返回列表
快速回复
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
or
立即注册
本版积分规则
发表回复
回帖并转播
回帖后跳转到最后一页
发新帖
回复
徐锦洪
论坛元老
这个人很懒什么都没写!
楼主热帖
彻底卸载SQL Server
马丽明:选择超融合架构的三个要素 ...
漏洞扫描工具nessus、rapid7 insightvm ...
【计算机网络】TCP为什么需要3次握手 ...
java数据库开发与实战应用,2022最值得 ...
Oracle夺命连环25问,你能坚持第几问? ...
c# 实现定义一套中间SQL可以跨库执行的 ...
iOS16新特性 | 灵动岛适配开发与到家业 ...
WPF工控组态软件之冷却塔和空气压缩机 ...
几种数据库jar包获取方式
标签云
AI
运维
CIO
存储
服务器
浏览过的版块
公有云
容器及微服务
运维.售后
IOS
数据仓库与分析
Postrge-SQL技术社区
主机安全
SQL-Server
Oracle
快速回复
返回顶部
返回列表