码迷,mamicode.com
首页 > 其他好文 > 详细

socket有没有同步写一说(怎么判定数据一定达到了对端?还得用户态)

时间:2018-12-12 23:50:56      阅读:173      评论:0      收藏:0      [点我收藏+]

标签:font   语义   机器   str   有用   协议   网络   发送   情况   

网络上的同步写和异步写和磁盘的同步和异步不一样

网络上的同步写是写到tcp的缓冲区中,如果缓冲区没有地方了,那么是直接返回给用户态程序还是让用户程序卡住,这个是阻塞和非阻塞发生的地方。

注意:阻塞是指tcp缓冲区中是否有数,然后在机器不重启的情况下,tcp协议会保证你的数据到达对端!!!!也就是tcp协议是一种同步的协议!tcp协议就是文件系统中的“同步写”,他会有各种各样的机制来保证数据一定会达到对端!当然了这一路可能发生各种各样的事情!比如我发送端机器异常重启了,比如对端机器down机了,比如中间路由器挂掉了,所以在网络传输中,是怎么判断数据到没到对端?

有没有一种语义,我这条数据一定达到了对端?只能通过用户态来保证了,比如收到了数据之后,返回一条确认数据,然后对端接收,返回一个确认收到的数据包,只有用户态才能做这件事情。

用户态怎么判定数据一定达到了对端?

tcp链接我们知道数据一定是对到达对端的,但是这些超时重传啊什么的,都是内核态的行为,用户态怎么知道数据发送到没有。

这就是tcp的同步,那么放到了tcp的缓冲区之后,到底是谁发送出去的呢?是当前线程还是别的线程捏?【一切与文件系统对标,哈哈哈哈哈】

阻塞!

socket有没有同步写一说(怎么判定数据一定达到了对端?还得用户态)

标签:font   语义   机器   str   有用   协议   网络   发送   情况   

原文地址:https://www.cnblogs.com/honpey/p/10111408.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!