TCP为啥是可靠的?
首先 TCP 是面向连接的,就跟打电话一样。
TCP报文格式:源端口、目的端口、校验和、序号、确认号、窗口+数据部分
TCP 是如何保证连接的了?
1.序列号
TCP在传输的过程中,对每一个字节都进行了编号,这就是序列号.
序列号的作用:
1.确保数据按序到达
2.保证可靠性(比如说缺哪个序号的数据就能知道)
3.提高效率,可以多次发送,一次确认
4.去除重复数据
2.校验和
校验和用于检验端到端传输的过程中,TCP头部和数据部分是否发生了变化.在计算校验和的时候添加16位的伪首部用于增强校验。将数据分成16位的多个段,每个段取反相加。
3.拥塞控制
拥塞控制采用慢启动的策略,首先开始的时候,拥塞窗口为1进行试探,然后采用快开始的策略,以指数的方式增大拥塞框框,当达到阈值时,以线性的方式进行增大拥塞窗口。当网络发生拥塞时,将拥塞窗口的大小设置为当前的一般,然后开始慢启动。
4.超时重传
当客户端给服务端发送数据,由于网络等原因,数据包没有到达服务端,或者服务端的响应数据包没有在超时重传的计数范围内到达,导致启动超时重传机制,重新发送数据.
5.流量控制
流量控制涉及到客户端和服务端的协商。TCP报文首部中有一个窗口字段,当客户端向服务端发送数据后,服务端向客户端发送确认报文,报告服务端框框的剩余容量是多少。
6.确认应答
客户端发送一段数据后,需要等待服务端进行确认。当没有收到服务端的确认时,启动超时重传机制。
7.连接管理
三次握手
客户端:A,服务端:B
第一次握手:A向B发送报文,SYN=1,seq=x.
第二次握手:B向A发送确认报文,SYN=1,ACK=1,seq=y,ack=x+1
第三次握手:A向B发送确认报文,ACK=1,seq=x+1,ack=y+1
为啥需要三次握手了?防止资源浪费。比如说A向B发送建立连接的报文,由于网络的原因导致该报文滞后到达B,那么B收到报文后,以为A要建立连接,给A回一个报文,同时建立连接,等待A发送数据过来。A收到B发出的响应报文后,但是它知道自己没有发,就不理会该报文,导致B一直等待,浪费资源。
四次挥手:
客户端:A,服务端B
第一次挥手:A向B发送连接释放报文,FIN=1,seq=u,A进入WAIT-1
第二次挥手:B向A发送响应报文,ACK=1,seq=v,ack=u+1,A进入Wait-2,B进入Wait
第三次挥手:B向A发送连接释放报文,FIN=1,ACK=1,seq=w,ack=u+1
第四次挥手:A向B发送响应报文,ACK=1,seq=u+1,ack=w+1,A进入等待时间.
等待时间为2MSL(最长报文段寿命)
为啥需要2MSL了?
1.为了防止已经失效报文出现在网络中。当A发送最后的ACK报文后,再过2MSL时间,在建立连接产生的报文都将从网络中消失,避免出现在下一次新的连接中。
2.等2MSL是为了确保A发送的报文能够到达B,确保A和B都正常进入close状态。
分享到:
相关推荐
在这个标题为“TCP/IP可靠数据传输代码实现”的主题中,我们将深入探讨如何在编程中实现TCP的可靠传输特性。 首先,TCP通过建立连接来确保数据传输的可靠性,这个过程被称为三次握手。在代码实现中,我们需要创建...
TCP(Transmission Control Protocol)是一种面向连接的、可靠的、基于字节流的传输层通信协议,是互联网协议族的核心部分。在TCP文件传输中,确保数据的可靠性是关键,这包括了数据的顺序传输、错误检测与纠正以及...
TCP/IP协议结构通常被视为四层模型,分别是: 1. **应用层**:提供应用程序间的接口,支持如FTP、HTTP等高层协议。 2. **传输层**:主要功能是提供端到端的数据传输服务,包括TCP和UDP两种协议。 3. **网间层**:...
TCP/IP协议栈是互联网通信的基础,它定义了网络设备如何互相连接、交换数据以及如何确保数据的可靠传输。TCP(Transmission Control Protocol)和IP(Internet Protocol)是TCP/IP模型中最核心的两个协议,它们共同...
Flash动画是一种广泛用于创建互动内容和网络应用程序的技术,它可以通过包含TCP可靠传输概念的动画来直观地解释这一复杂的网络通信机制。 在TCP中,可靠传输主要体现在以下几个方面: 1. 面向连接:在数据传输前,...
总的来说,TCP是互联网通信的重要基石,为各种应用提供了可靠的数据传输服务。通过其独特的特性,TCP确保了数据在不可靠的网络环境中的准确传输,但这也意味着相对于无连接的UDP协议,TCP可能会带来更高的延迟。在...
TCP服务端通过三次握手建立与客户端的连接,确保数据传输的可靠性。 TCP客户端则是发起连接请求的一方,它主动连接到服务端,请求服务。客户端首先发送一个SYN(同步)包到服务端,服务端回应一个SYN+ACK(同步确认...
在这个压缩包中,包含两个名为“TCP客户端通讯V1.2.exe”和“TCP服务器通讯V1.2.exe”的文件,它们很可能就是用于测试TCP连接和MODBUS-TCP通信的软件。TCP客户端软件模拟TCP连接的发起方,可以发送和接收数据,验证...
本项目名为"tcp_TCP/IP_tcp_vb.net_VB.NET.tcp_",显然,它是一个使用VB.NET语言实现的TCP/IP通信示例。 TCP(Transmission Control Protocol)是一种面向连接的、可靠的、基于字节流的传输层通信协议。它的主要...
首先,TCP(Transmission Control Protocol)是互联网协议栈中的传输层协议,它为两台主机之间提供可靠的、基于字节流的通信服务。TCP通过握手和确认机制确保数据的可靠传输,同时采用滑动窗口机制来控制流量和避免...
MODBUS协议包括多种变体,如RTU(远程终端单元)和ASCII(美国标准代码交换信息),但MODBUS-TCP是专为网络环境设计的版本。 MODBUS-TCP的通信标准主要包括以下几个方面: 1. **数据帧结构**:MODBUS-TCP的数据帧...
TCP调试助手源码是一款专为IT专业人士设计的工具,它帮助开发者深入了解TCP协议的工作机制,同时也为TCP编程提供了一个实践平台。源代码的开放性使得用户可以深入学习TCP协议的实现细节,理解网络通信的基本原理,并...
在IT领域,网络通信是至关重要的部分,而TCP(传输控制协议)是互联网上最基础的通信协议之一,它确保了数据的可靠传输。在这个场景中,我们将关注如何使用`sendto()`函数来发送TCP数据包,以及这个过程中的关键知识...
在Android平台上进行网络通信时,TCP(Transmission Control Protocol)是一种常用的方式,因为它提供了一种可靠的、面向连接的数据传输服务。本示例中的"android TCP server 和TCP client通信源码"着重于实现...
在IT行业中,TCP(传输控制协议)是一种广泛用于互联网通信的可靠传输协议,它确保了数据包的有序、无丢失地传输。P2P(点对点)通信是一种网络架构,其中每个节点既是客户端也是服务器,可以直接与其他节点交换数据...
"SmartTCP"工具就是这样一个专为TCP通信设计的调试工具。 SmartTCP允许用户以服务端的身份运行,这意味着它可以监听特定的端口,等待客户端连接。一旦连接建立,它就能够管理这些连接,处理来自客户端的数据,并...
TCP/IP协议是互联网通信的基础,它定义了网络设备如何交换数据和定位网络资源。TCP(传输控制协议)和IP(互联网协议)是该协议族的两个核心组件,负责端到端的数据传输。UDP(用户数据报协议)则是另一种常用协议,...
TCP&UDPDebug测试工具是为开发者设计的,它可以帮助用户测试和分析TCP和UDP连接的性能。这个工具可能包含以下功能: 1. **连接测试**:模拟TCP连接的建立和断开,检查连接的稳定性。 2. **数据发送与接收**:发送和...
串口通信以其简单、稳定的特点广泛应用于设备间近距离通信,而TCP/IP则在广域网中占据主导地位,提供高效、可靠的数据传输服务。然而,当需要将串口设备接入网络时,就需要进行串口到TCP的转换,这时"tcptocom.rar...
TCP是一种面向连接的、可靠的、基于字节流的传输层通信协议,而UDP则是一种无连接的、不可靠的、基于数据报的传输协议。 TCP的主要特点包括: 1. 面向连接:在数据传输前,TCP需要先建立连接,通过三次握手确保...