TCP协议介绍

       与UDP协议不同,在使用TCP协议进行数据传输时,首先客户端要与某一个指定的服务器建立连接,然后再通过该连接与服务器进行数据交换,使用完毕之后再关闭该连接。

       TCP能提供一种可靠地数据传输,当TCP向另一端发送数据时,他要求对端必须返回一个确认信号。如果没有收到确认信号,TCP就会自动重发数据并等待更长时间。在数次重传失败之后,TCP才放弃,如此在尝试发送数据上所花的时间一般为几分钟,具体依赖于具体实现过程。TCP的可靠性,并不是指当TCP一端向另一端发送数据时,它能保证另一端一定能接收得到这个数据,这是不可能做到的,而是它提供了当数据在传递过程中出现异常时,对端能将这种异常通知给本端,这样本端就能根据通知信号决定自己是否重新发送,这样只是提高了数据传输的可靠性,因此我们可以说TCP也不能被描述成100%可靠的协议,它的可靠性只是提供了一种数据的可靠传递或故障的可靠通知。

      TCP还含有用于动态估算客户与服务器之间的往返时间(RTT)的算法,以便它知道等待一个确认需要多少的时间。例如,RTT在一个局域网上大约为几个毫秒,跨越一个广域网则可能是几秒钟。另外,RTT还可能会受到网络流通等各种变化因素的影响,TCP还持续估算一个给定连接的RTT。

      TCP还提供数据的有序传输,它主要时能通过给其中每个字节关联一个序列号对所发送的数据进行排序。例如,假设一个应用写2048个字节到一个TCP套接字,而套接字每次最多只能发送1024个字节,那么就需要分两次传送才能将这些数据发送完,TCP将这些数据分为两个分节来传输,第一个分节的序列号为1~1024,第二个分节的序列号为1025~2048.,这里的分节指的是TCP传递给IP的数据单元。如果这些分节非顺序到达目的地,接收端的TCP就会将先根据他们的序列号进行重新排序,再把结果数据传递给接收应用。如果接收端接收到来自对端的重复数据(比如说对端认为一个分节已丢失并因此而重传,而这个分节实际并没有丢失,只是由于网络通信的拥挤而导致响应通知没有在超时时间内回复回去),它可以根据序列号来判定数据时重复的,从而将重复数据丢弃掉。

       此外,TCP还提供了发送方流量控制。TCP总是告知对端在任何时刻它一次能够从对端接收多少字节的数据,这成为通告窗口。在任何时刻,该窗口指出了接收缓冲区当前可用的空间量,从而确保发送方的数据不会使接收缓冲区溢出。该窗口时刻动态变化:当接收到来自发送端的数据时,窗口大小减小,但是当接收端应用从接收缓冲区中读取数据时,窗口大小就增大,当窗口大小减小到0时,发送方就会减缓发送的速度或是等待不发,一直等到新的窗口值发过来之后,再决定发送的数据大小。

      最后,TCP是一个全双工的链接。这就意味着在一个给定的连接上,应用可以在任何时刻在进出两个方向上及发送数据即接收数据。因此,TCP必须为每个数据流方向跟踪诸如序列号和通告窗口大小等状态信息。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值