TCP的可靠连接是如何产生的?
2017-05-05 19:05
197 查看
http://bbs.csdn.net/topics/190011812
看过TCP/IP的源代码没?tcp中所谓的连接只是在tcp的tcb中存储了对端的地址信息,并且记录连接的状态,通过重发之类的来保证可靠传输的。并不存在一个真正的连接,严格的说udp也有连接的过程,只是udp不维护状态,而且数据报发送完后就会断开。
对于传输层来说,高层用户对传输服务质量要求是确定的,传输层协议内容取决于网络层所提供的服务。网络层提供面向连接的虚电路服务和无连接的数据报服务。如果网络层提供虚电路服务,它可以保证报文分组无差错、不丢失、不重复和顺序传输。在这种情况下,传输层协议相对要简单。即使对虚电路服务,传输层也是必不可少的。因为虚电路仍不能保证通信子网传输百分之百正确。例如在X.25虚电路服务中,当网络发出中断分组和恢复请求分组时,主机无法获得通信子网中报文分组的状态,而虚电路两端的发送、接收报文分组的序号均置零。因此,虚电路恢复的工作必须由高层(传输层)来完成。如果网络层使用数据报方式,则传输层的协议将要变得复杂。
现在的基于IP的互联网网络层不是面向连接的,因此需要传输层的TCP来保证传输的可靠。
看过TCP/IP的源代码没?tcp中所谓的连接只是在tcp的tcb中存储了对端的地址信息,并且记录连接的状态,通过重发之类的来保证可靠传输的。并不存在一个真正的连接,严格的说udp也有连接的过程,只是udp不维护状态,而且数据报发送完后就会断开。
对于传输层来说,高层用户对传输服务质量要求是确定的,传输层协议内容取决于网络层所提供的服务。网络层提供面向连接的虚电路服务和无连接的数据报服务。如果网络层提供虚电路服务,它可以保证报文分组无差错、不丢失、不重复和顺序传输。在这种情况下,传输层协议相对要简单。即使对虚电路服务,传输层也是必不可少的。因为虚电路仍不能保证通信子网传输百分之百正确。例如在X.25虚电路服务中,当网络发出中断分组和恢复请求分组时,主机无法获得通信子网中报文分组的状态,而虚电路两端的发送、接收报文分组的序号均置零。因此,虚电路恢复的工作必须由高层(传输层)来完成。如果网络层使用数据报方式,则传输层的协议将要变得复杂。
现在的基于IP的互联网网络层不是面向连接的,因此需要传输层的TCP来保证传输的可靠。
相关文章推荐
- C语言编译产生的.OBJ文件和汇编编译产生的.OBJ文件,如何连接_百度知道
- 如何解决 Windows XP 的 TCP/IP 连接问题
- C#如何使用GetTcpTable API获取TCP/IP连接信息
- TCP/IP连接的唯一性如何确定
- 【Linux网络编程笔记】TCP短连接产生大量TIME_WAIT导致无法对外建立新TCP连接的原因及解决方法—基础知识篇
- 如何自动产生连接数据库odbc的字符串
- keepalived+LVS超时设置产生的realserver的tcp连接不释放问题
- 用tcpdump 分析如何建立与关闭tcp连接
- 如何判断一个tcp连接已经断开
- 用select如何侦测TCP连接是否被对方关闭?
- 令人无比郁闷的tcp Reset是如何产生的
- TCP连接断线后,如何检测?
- TCP可靠传输及流量控制系列六:TCP连接中的TIME_WAIT状态
- 如何拒绝非本机的1433/1434端口tcp连接?
- 在某些成员节点失效时,负载均衡器会如何处理已有TCP连接?
- C#如何使用GetTcpTable API获取TCP/IP连接信息
- 如何在network monitor中查找试图建立TCP连接的帧?
- boost::asio::ip::tcp::socket is connected?(如何知道socket已经连接?)
- 【Linux网络编程笔记】TCP短连接产生大量TIME_WAIT导致无法对外建立新TCP连接的原因及解决方法—实践篇
- TCP/UDP 详解 (可靠传输、流量控制、连接管理等核心章节的详解)