运输层详解(二)(TCP)

传输控制协议TCP

TCP的特点
  • TCP是面向连接的运输层协议。也就是说,应用程序在交互时必须先建立连接,交互完成后必须要断开连接。
  • 每一条TCP连接只能有两个端点,每一条TCP连接只能是点对点的(一对一)。
  • TCP提供了可靠交付的服务,通过TCP连接传送的数据,无差错、不丢失、不重复,并且按序到达。
  • TCP提供全双工通信。TCP允许通信双方的应用进程在任何时候都能发送数据。TCP连接的两端都设有发送缓存和接收缓存,用来临时存放双向通信的数据。在发送时,应用程序把数据传送给TCP的缓存后,就可以做自己的事,而TCP在合适的时候把数据发送出去。在接收时,TCP把收到的数据放入到缓存中,上层的应用程序在合适的时候读取缓存中的数据。
  • 面向字节流。TCP中的“流”指的是流入到进程或者从进程流出的字节序列。面向字节流的含义是:虽然应用程序和TCP的交互是一次一个数据块(大小不等),但是TCP把应用程序交下来的数据仅仅看成是一连串的无结构的字节流,或者称为字节序列。
TCP连接
  • TCP连接的端点叫做套接字(socket)或者插口,根据定义:端口号拼接到IP地址即构成了套接字。因此,套接字的表示方法是在IP地址后面写上端口号,中间用冒号或逗号隔开。
    • 套接字socket = { IP地址:端口}
  • TCP连接的端点是一个很抽象的套接字(IP地址:端口),同一个IP地址可以有多个不同的TCP连接,而同一个端口号可以出现在多个不同的TCP连接中。
可靠传输的工作原理
  • 由于IP层提供是尽最大努力服务,因此TCP必须采取适当的措施才能使得两个运输层之间的通信变得可靠。
    • 理想的可靠传输必须满足以下两个条件。
    1. 传输信道不产生差错
    2. 不管发送方以多快的速度发送分组,接收方总是可以及时处理得到的数据。
  • 然而实际的网络并不具备以上两个条件,因此,我们可以使用一些可靠的传输协议,当出现差错时让发送方重传出现差错的数据,同时,在接收方来不及处理收到的数据时,及时告知对方适当降低发送数据的速度。
停止等待协议
  • 于是我们引入了停止等待协议。在计算机网络发展初期,通信链路不太可靠,因此在链路层传送数据时都要采用可靠的通信协议。其中最简单的就是停止等待协议,在运输层并不使用这种协议,我们从这个简单的概念说,是为了引出后面更好的协议。
  • 停止等待就是每发送完一个分组就停止发送,等待对方的确认。在收到确认后再发送下一个分组。
    1. 无差错情况
  • 最简单的情况,发送方发送一个分组,然后接收方收到这个分组后,接收方发送确认收到的分组给发送方。发送方收到确认分组后,继续发送下一个分组。依次进行上面的步骤。
    2.出现差错
  • 有两种情况,接收方接收到分组后,检测分组出现了差错,就丢弃了分组,但是不通知发送方收到了有差错的分组。第二种情况,发送的分组在传输的过程后丢失了,这是接收方什么也不知道。以上两种情况,接收方都不会发送任何消息。
  • 为了解决这个问题。发送方只要超过一段时间任然没有收到确认,就认为刚才发送的分组丢失了,就会重新发送,这就是超时重传
  • 要实现超时重传机制,那么发送方在发送完一个分组之后,就会设置一个超时计时器,如果在计时前收到了对方的确认,那么就重置计时器。
  • 因此,这个机制必须注意以下三点
    • A在发送完分组之后,必须要暂时保留自己发送的分组的副本(在发送超时重传的时候使用)。只有在收到确认分组之后才能清除暂时保留的分组副本。
    • 超时计时器设置的时间应当比数据在分组传输的平均往返时间要更长一些。这是一个很复杂的算法。
      3. 确认丢失和确认迟到
  • 两种情况,接收方收到了发送方发来的分组,但是接收方发送的确认分组丢失了,或者是在发送方设定的超时重传时间内没有收到确认,并且无法知道自己发送的分组是出错、丢失,或者接收方的确认分组丢失。因此,发送方在超时计时器到后就要重传分组。
  • 现在接收方的动作有两个。
    • 第一:丢弃这个重复的分组,不向上层交付。
    • 第二:向发送方发送确认分组。
  • 那么还有一种情况就是接收方发送的确认分组迟到了,发送方收到迟到的确认分组处理很简单:收下后就直接丢弃。
    4.信道利用率
  • 停止等待协议的优点就是简单,但缺点就是信道利用率太低。信道在绝大多数的情况下都是空闲的。
    这时出现了流水线传输,出现了连续ARQ协议,流水线式传输就是发送方可连续发送多个分组,不必每发完一个分组就停顿下来等待对方的确认,这样可使信道上一直有数据不断地在传送。发送方有一个滑动窗口,即发送了一个分组之后,窗口就向后移动。接收方不必对收到的分组进行逐个确认,只需要确认最后一个分组就好。优点:容易实现,即使确认丢失也不用重传。缺点:不能向发送方反映出接收方已经正确接收到的所有分组的信息。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值