面试官:说下TCP?

TCP主要特点:

1.TCP是面向连接的运输层协议

也就是说,应用程序在使用TCP协议之前,必须先建立TCP连接

2.每一条TCP连接只能有两个端点,每一条TCP连接只能是点对点的

3.TCP提供可靠交付的服务。通过TCP连接传送的数据,无差错,不丢失,不重复,并且按序到达

4.TCP提供全双工通信。TCP允许通信双方的应用进程子任何时候都能发送数据。TCP连接的两端设有发送缓存和接收缓存,用来临时存放双向通信的数据

5.面向字节流。TCP中的流指的是流入进程或从进程流出的字节序列。

“面向字节流”的含义是:虽然应用程序和TCP的交互是一次一个数据块(大小不等),但TCP把应用程序交下来的数据仅仅看成是一连串的无结构的字节流

TCP端口:套接字

TCP连接的端点是套接字或者插口,端口号拼接到IP地址即构成了套接字

套接字socket={IP地址:端口号}

例如:若IP地址是192.3.4.5而端口号是80,那么得到的套接字就是(192.3.4.5 :80)

每一条TCP连接唯一的被通信两端的两个端点(即两个套接字)所确定

TCP可靠传输的工作原理

一:停止等待协议

1.无差错情况

发送方(A)向接收方(B)发送M1,M2等数据,B收到A发送的数据之后,就向A发送确认报文。在A没有收到B的确认报文之前,是不会再继续发送数据的,只有等到收到了B的确认报文再发送下一个数据。

2.出现差错情况

如果A向B发送的数据在途中丢失了。(图b),那么B就不会收到数据,自然也不会发送确认报文,A只要超过一段时间没有收到B的确认报文,那么A就认为刚才的分组丢失了,就会重新再发送一次同样的报文(在收到确认之前,不会删除刚才发送的报文,而是保留了副本,只有收到了B的确认才清除这个副本)

确认丢失
这种情况是A发送了数据,B也收到了数据并且发送了确认,但是这个确认报文在中途丢失了,导致A一直在等待,这个时候,等待超过了一段时间,A就会重新发送刚才的数据,然后B又接收了这个数据,当然了,这个数据之前已经接收过了,对重复的数据则选择丢弃。

确认迟到

这种情况就是B发送的确认在网络中延时了,之后再到达A,这个上一种情况差不多,A收到了相同的确认之后,也是先收后扔。

注意:

1.A在发送完一个分组后,必须暂时保留已发送的分组的副本(在发生超时重传时使用)。只有在收到相应的确认后才能清除暂时保留的分组副本

2.分组和确认分组都必须进行编号,这样才能明确是哪一个发送出去的分组收到了确认,而哪一个分组还没有收到确认

3.超时计时器设置的重传时间应当比数据在分组传输的平均往返时间更长一些

自动重传请求ARQ

像上述的确认和重传机制,我们就可以在不可靠的传输网络上实现可靠的通信,这种也被称为自动重传请求ARQ。重传的请求是自动进行的,接收方不需要请求发送发重传某个出错的分组

信道利用率

我们刚才讲到了停止等待协议,可是有一个比较大的缺点就是:信道利用率太低,当A向B发送数据的这个过程,数据传输的过程需要一段时间,当B收到了数据然后发送确认的时候,这个确认从A传到B也需要时间,那么中间就浪费了很多的时间。

为了提高效率,发送方可以不采用低效率的停止等待协议,而是采用流水线传输,所谓流水线传输就是发送方可连续发送多个分组,不必每发完一个分组就停顿下来等待对方的确认,这样的话就可以在信道上一直又数据不间断的传送,先然这种方式可以获得更高的信道利用率。
当使用流水线的方式的时候,就要使用连续ARQ协议滑动窗口协议

二: 连续ARQ协议

下图表示发送方维持的发送窗口,它可以将发送窗口内的五个分组连续发送而不需要等待对方的确认,这样信道利用率就提高了。

 当收到一个确认之后,发送窗口就往前滑动一个分组的位置

 不过接收方一般都是采用累积的方式,这个意思就是发送方连续发送5个分组,对按序到达的最后一个分组发送确认,这就表示:到这个分组为止的所有分组都已经正确接收了

       累积确认也有缺点,就是如果我们发送了5个分组,假如中间的第3个分组丢失了,这时候接收方只能对前面两个分组进行确认,那么发送方就必须重新传一次3,4,5分组,这就叫做GO-back-N。可见当通信质量不好的时候,连续ARQ协议会带来很大的负面影响。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值