WebServer
WebServer copied to clipboard
TCP连接3次握手与accept()的关系
hi~ 关于你对“建立连接的过程”的描述有点疑问:“当TCP连接完成3次握手后,会触发listenfd的读事件,应用程序调用accept()”。 accept()的调用应该是服务端接收到SYN分节之后调用的,调用accept()使得TCP层发送一个SYN ACK分节,当收到ACK之后accept()返回。所以accept()返回才标志着TCP三次握手完成。 请问accept()是由MainReactor线程调用的还是SubReactor()线程调用的?
我是在MainReactor里accept的,但你关于accept的描述是完全错误的
咦?关于accept()的描述我是看到《UNIX网络编程》卷1里图2-2所以才这么说的。 能不能麻烦给我讲讲你的理解?
大家加个qq群可好?
------------------ 原始邮件 ------------------ 发件人: "Yingying Xie"[email protected]; 发送时间: 2019年4月19日(星期五) 下午4:40 收件人: "linyacool/WebServer"[email protected]; 抄送: "Subscribed"[email protected]; 主题: Re: [linyacool/WebServer] TCP连接3次握手与accept()的关系 (#8)
咦?关于accept()的描述我是看到《UNIX网络编程》卷1里图2-2所以才这么说的。 能不能麻烦给我讲讲你的理解?
— You are receiving this because you are subscribed to this thread. Reply to this email directly, view it on GitHub, or mute the thread.
我的QQ:1468426665
| | 谢英英 邮箱:[email protected] |
签名由 网易邮箱大师 定制
在2019年04月19日 16:42,ZeroOcyc 写道: 大家加个qq群可好?
------------------ 原始邮件 ------------------ 发件人: "Yingying Xie"[email protected]; 发送时间: 2019年4月19日(星期五) 下午4:40 收件人: "linyacool/WebServer"[email protected]; 抄送: "Subscribed"[email protected]; 主题: Re: [linyacool/WebServer] TCP连接3次握手与accept()的关系 (#8)
咦?关于accept()的描述我是看到《UNIX网络编程》卷1里图2-2所以才这么说的。 能不能麻烦给我讲讲你的理解?
— You are receiving this because you are subscribed to this thread. Reply to this email directly, view it on GitHub, or mute the thread.
— You are receiving this because you authored the thread. Reply to this email directly, view it on GitHub, or mute the thread.
咦?关于accept()的描述我是看到《UNIX网络编程》卷1里图2-2所以才这么说的。 能不能麻烦给我讲讲你的理解?
你好好看看那个图的描述啊,图和描述都没错,到你这话就错了,你可以写个程序试试啊,单纯将可能很难理解
大家加个qq群可好? … ------------------ 原始邮件 ------------------ 发件人: "Yingying Xie"[email protected]; 发送时间: 2019年4月19日(星期五) 下午4:40 收件人: "linyacool/WebServer"[email protected]; 抄送: "Subscribed"[email protected]; 主题: Re: [linyacool/WebServer] TCP连接3次握手与accept()的关系 (#8) 咦?关于accept()的描述我是看到《UNIX网络编程》卷1里图2-2所以才这么说的。 能不能麻烦给我讲讲你的理解? — You are receiving this because you are subscribed to this thread. Reply to this email directly, view it on GitHub, or mute the thread.
别了别了。。。我这渣渣水平还建群。。
hi~ 关于你对“建立连接的过程”的描述有点疑问:“当TCP连接完成3次握手后,会触发listenfd的读事件,应用程序调用accept()”。 accept()的调用应该是服务端接收到SYN分节之后调用的,调用accept()使得TCP层发送一个SYN ACK分节,当收到ACK之后accept()返回。所以accept()返回才标志着TCP三次握手完成。 请问accept()是由MainReactor线程调用的还是SubReactor()线程调用的?
我的理解是accept其实只是从内核维护的已连接队列中抽出一个返回给调用者,和三次握手没啥关系,如果已连接队列为空,则accept会阻塞直到已连接队列不为空。accept可以在三次握手之前调用,也可以在之后调用。不知道理解是否正确,如有错误,感谢指正。
hi~ 关于你对“建立连接的过程”的描述有点疑问:“当TCP连接完成3次握手后,会触发listenfd的读事件,应用程序调用accept()”。 accept()的调用应该是服务端接收到SYN分节之后调用的,调用accept()使得TCP层发送一个SYN ACK分节,当收到ACK之后accept()返回。所以accept()返回才标志着TCP三次握手完成。 请问accept()是由MainReactor线程调用的还是SubReactor()线程调用的?
我的理解是accept其实只是从内核维护的已连接队列中抽出一个返回给调用者,和三次握手没啥关系,如果已连接队列为空,则accept会阻塞直到已连接队列不为空。accept可以在三次握手之前调用,也可以在之后调用。不知道理解是否正确,如有错误,感谢指正。
我也是这样理解的