说三道四技术文摘-感悟人生的经典句子
说三道四 > 文档快照

对WinSock和TCP/IP协议共同工作的疑惑 请高手指点迷津

编辑:说三道四文库 发布时间:2017-12-16 09:20
HTML文档下载 WORD文档下载 PDF文档下载
我用的是CAsyncSocket类 实现原理和直接调用winsock api 应该是差不多的

1.如何才算成功的建立一个连接
 首先我对TCP协议三次握手不明白 
a 与 b 连接 
a发送一个SYN数据报1  
b回应一个SYN ACK数据报2 
a再发送一个确认ASK数据报3

如果数据报3没有被b接到 算不算成功的建立了一个连接
a如果不通过下一个数据报怎么知道b是否接到了数据报3 所以a应该不知道是否成功的建立了连接 所以建立连接这个概念很模糊

2.套接字如果完成三次握手的
connect 发送数据报1(和上面说的对应) 
accept 发送数据报2 
数据报3 哪个套接字函数来发送??

3.我用windows 的CAsyncSocket 建立一个点对点连接
在服务器的listen 后下了一个断点 不让它调用accept 函数 连接应该无法建立
却发现客户端的mysock.Connect()仍然返回0 并且回调了OnSend函数 这一点非常的不理解
1. a收到数据报2,a认为连接建立成功;b没有收到3,不能确认建立成功,会超时重发syn ack。连接建立是两个方向上的问题。这种情况下a给b发送数据是没有问题的,数据报中的ack字段内容,实际上和你的数据报3是一样的。

2.都不是,connect发送syn,收到数据报2就成功建立连接返回。socket模型下的服务器,连接建立以后才会被accpet接受,也就是说服务器收到了数据报3,accept才返回。而将服务器配置为被动打开是通过listen。

3.见2的解释。
谢谢zengpan_panpan() 解释的非常好 
只是回答2中是不是应该改做"都不是,connect发送syn,收到数据报2,并发送数据报3就成功建立连接返回...."

connect应该是在三次握手建立连接之后才能正确返回。其底层的实现就是tcp的三次握手.
xiaohyy(醉大饿极) 注意看我的问题3
up
realmiss对2的修改是合理的,我只是站在connect的角度说的,它并不理解tcp/ip栈的问题。socket模型并不限于tcp/ip栈。

看来xiaohyy对三次握手建立连接的概念还是模糊的。
connect收到对方对自己的syn的响应,发送ack以后就返回了。
这个时候connect认为连接已经完成了,但这未必就意味着对方认为连接完成,如果对方收不到ack,还会重发syn ack。
连接是两个方向的,是两个方面的问题。

to zengpan_panpan() :
    非也,我不是对三次握手建立连接的概念模糊,而是对connect的实现模糊:),多谢指正。
关闭MDI窗体中所有的子窗体-VB资料 规范设计Windows应用软件菜单-VB资料 VB建立可滚动的视区 -VB资料 VB建立可下拉选择的属性 -VB资料 VB建立无模式窗口 -VB资料 将VB5中的ToolBar变成平面的 将程序从任务列表中隐藏 -VB资料 将我自已的命令加入窗体的控制菜单栏-VB资料 VB利用 UnloadMode 来控制窗体的卸载? VB利用Form_QueryUnload询问使用者是否关闭窗口 利用VB的图片框实现屏幕的滚动 利用VB动态改变Windows显示模式的两种方法 利用VB控制窗口显示风格 利用VB实现浮动按钮 VB利用子类处理技术限制窗体的大小 奇形怪状的窗体 -VB资料 强制ComboBox弹出下拉框 -VB资料 强制和防止窗口重画 -VB资料 巧用“关于”对话框-VB资料 请问在VB中如何关闭别的应用程序窗口 确定屏幕分辨率-VB资料 让VB5支持动画光标 让窗口拒绝接受键盘和鼠标事件 -VB资料 让窗体处于最前面 -VB资料 让窗体居中 -VB资料 让所有的控件都动起来 -VB资料 让最大化和最小化按钮消失-VB资料 任意多边形的窗口-VB资料 如 何将「拒 绝 被 盖 住 的 窗 口 」还 原-VB资料 VB如何创建椭圆形的窗体? VB如何创建无Icon的窗体? 在System.DirectoryServices中如何通过NT用户组来取得组中的用户 高分:在命令提示符中登录mysql并执行包含多个mysql脚本 新手求助!!!! C#中的控制问题,大家来看看 急,哭,IIS下无法调试ASP。555,高手求你们帮帮我吧。 映射网络驱动器错误,我在公司机子上可以用,而在自家电脑上却报错,为什么?在线等待 sos pb巨大一个bug(还是我太菜了?),帮忙呀,兄弟们! 传值调用~,编译通过,可执行时出错 serialize(CArchive& ar)中怎样加载数组? 如何用VC从c代码得到汇编的代码? 如何在<form runat=server>...</form>内调用form外定义的变量? 如何鼠标指到单元格中,把单元格中的文字颜色改变 555~~~~ 100分求together for JBuilder 下载(不知为啥我的IE到borland上竟然无法打开那个弹出的下载页面) 如何定义listview控件中的指定文字的颜色? 我是初学jsp的虾米!请大家来帮我! 关于子窗体向父窗体取值问题 大脑极度混乱后的想法,请大家分析一下可行吗? 冲击波,怎么办? 您好 , 请教如何写一个服务程序 ? 高分求救-----怎么读出excel中的数据? 打印机套打发票问题。。。 怎样读取INI文件?按格式遍历数据 关于我看到的CSDN中的舞弊情况 谁有<<LINUX核心源代码>>的光盘. 爱情森林(原爱情毒药) 一 求有关于java的非GUI输入(windows命令窗口输入输出) 各位朋友多指教( DIRECTSHOW) 有水平的程序员看过来 怎样动态改变控件属性? yurenjf在CSDN上屡次舞弊 1.asp与标记语言wml和脚本语言wmlscript结合能够编写动态wap网站,请问asp.net能与标记语言wml和脚本语言wmlscript结合编写动态wap网站吗 如何从一个 dbexport.out 文件生成一个空数据库 ? 也就是如何用这个文件做参数来生成数据库 ? 谢谢 哪位朋友能提供给我xp pefessional的序列号?急 关于菜单函数的几个问题 请教Sqlserver 2000安装问题? 今天刚开始上汇编语言,老师提问是? 如何只恢复dump后数据库中的某个表,因为整个数据库太大? 请问我的电脑是怎么回事? 我问问题。你们来回答!如何把当前的年度赋值给一个editbox?我不会^_^ 问一下大家都用的什么模板? 请教一个挂fat分区的问题~ 登陆win2000的菜鸟问题 1.asp与标记语言wml和脚本语言wmlscript结合能够编写动态wap网站,请问asp.net能与标记语言wml和脚本语言wmlscript结合编写动态wap网站吗 关于往Excel中写内容的问题? 请各位高手帮忙,如何截取字符串!? 请问哪里有OA系统试用一下? MessageBox()第一个参数怎么设? 有个xsl问题?不知道这样行不行?在线等 今天头晕得很啊. 请大家看看我写的这个将带头节点的单链表置空的函数错在哪里? 捕蛇者说可以用什么成语代替 正方形内切圆的周长是4π,它的外界圆周长是 成语日( )( )日,( )计( Why don't you learn to sing English songs?求Unit 8 read 原文 老版本不要 就是开头是 Today的新目标 Unit 8 reading 原文啊 一个长为80厘米,宽为60厘米的长方形,现在把他分成四个大小不同的长方形,周长多了多少厘米?求你们了! please say it _____(one) more 词形填空 英语这题对答案. 这几题英语答案是什么 七雄争霸里面12小时的免战结束后冷却时间多少啊? 七雄争霸免战冷却时间是多少有的说是9h 有的10h 12h 到底是多少啊 《如梦令》通过描写荷花来表现夏景的句子是 哈佛教授质疑美国饮食指南推出新版本饮罕见日食现象横扫非洲 遇恶劣天气仍壮日本约32万人观看自卫队航空节 特技刚果(金)反政府武装陷入绝境 要求立日本浜名湖渔船失火 恰逢货船经过救起坦桑尼亚当局在一中国人家中查出180日本浜名湖渔船失火 恰逢货船经过救起日本九州遭遇雾霾 政府呼吁民众尽量减玻利维亚北部发生坠机事故 已致8人死印度将发射火星探测器 被指火星探测失评论:新一轮财税体制改革应有新突破杰拉德:贝帅与皇马球星关系似不佳哈马:若拜仁愿意,我当然会续约名宿:克洛普考虑换掉米尼奥莱打啵儿 | 吃完的泡泡糖别吐,因为它阿拉巴父亲谈续约:无可奉告瓜帅续约条件:要更多转会权?枪手大将:防守桑切斯不是一件易事简单干净的“一脚蹬”:UNIQLO 在别的媒体做导购的时候,这家导购开始海淘攻略:钟表礼品商城 JOMASH我中午用饿了么点外卖不成功,但滴滴入荒霄神级盲僧我的都市老婆们仙师无双撸爆末世网游之杀神崛起浴血战魂修仙之人多力量大美女急急如律令,收巅峰狂龙女神办公室青铜峡旅游小榄镇旅游循化旅游荆坪古村旅游蛟河旅游桑植旅游梅河口旅游陆良旅游永安旅游玉屏旅游和县旅游
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘