TCP可靠传输和拥塞控制

1.TCP的可靠传输

  • tcp的可靠传输主要靠 来自接收方的确认报文 和 超时重传。
  1. 发出报文,计时器开始计时,在规定超时时间内未收到确认报文则重新发送。
    • 注意:发送报文都留一个副本,如果收到确认报文就会删除,未重新发送之后超时时间会设置为原来的2倍。
  2. 对于流水线形式的请求报文,服务器只会按照顺序发出确认报文,如果出现失序报文,则不会被确认而是继续发送前一个的确认报文。
    • 流水线形式:不必等到一个确认报文到来再发送下一个请求报文,而是连续发送请求报文。序 失效报文是指确认号不正确的报文
    1. 如 第一个请求报文seq=1 带有100个数据,则第一个确认报文ack = 101。
    2. 此时服务器应该收到第二个报文seq = 101, 但是服务器却收到了 seq = 300,这说明第二个报文丢失了或者拥塞还没到来,解决此问题一是等到被拥塞的报文到来,二是通过快重传重新发送。
    3. 在收到失序报文后不会发送对其的确认报文,而是发送上一个正常的确认报文。
  3. 因为只有服务器收到请求报文才会发送确认报文,如果收到确认报文说明该报文的确认号之前的数据都收到了,这些数据不会被重发。

2.拥塞控制

  • 需求产生的原因:需求大于供应,某些网络节点进来的报文没有出去的多,造成数据积压。
  • 判断拥塞的依据就是出现了超时。
  • 拥塞窗口 cwnd : 拥塞窗口随着拥塞程度浮动变化,并且发送窗口就等于拥塞窗口,一次要发送多少个请求就看cwnd数量。
  1. 慢开始:无拥塞时窗口数量加倍,达到慢开始门限进入拥塞控制。
  2. 拥塞避免: 每经过一个RTT窗口数目增加1。 
    • 慢开始和拥塞避免都是基于窗口的。
  3. 快重传:当收到3个连续相同的ack确认报文,则立刻在定时器过期之前重传一次请求报文,避免超时。
    • 有时候个别报文丢失了,而不是发生了拥塞,如果服务器迟迟不发送确认消息就会超时,被认为出现了拥塞,这会导致发送方错误的开启慢启动,减低性能。
    • 当收到失序报文之后会立即发送上一个确认报文,当客户端收到3个连续的相同报文(一共四个相同报文)就认为报文丢失了,则会立即快重传,避免超时。
    • 为啥3个才会认为丢失? 如果遇到了拥塞之后又立刻恢复导致报文段比他后面的报文来的迟,那么在3个确认报文发送期间可以被收到就可以避免快重传,超过三个不管什么原因都进行快重传。
  4. 快恢复:由于收到了3个相同的确认报文,说明有三个报文已经到达了服务器,为了提高性能,窗口就要扩大一些,或者把慢开始上限提高到当前窗口一半,再进行慢开始。

3.UDP

  • 用户数据报协议UDP
  • 传输控制协议TCP
  1. UDP不要先建立连接,不是面向连接的。
  2. UDP只有2个字段,一个首部字段一个数据字段。
  3. 首部字段只有8个字节 。

4.网络层提供不可靠服务

  • 网络层向上提供 无连接 尽最大努力交付的数据报服务。
    1. 尽最大努力就是不可靠:当路由器缓存溢出,他会将缓冲区的所有数据报丢弃并发送UCMP错误报告给发送源
    2. 接收方接收到IP报文时,会计算首部校验和,如果发现有误则丢弃报文,并不会通知任何信息给发送源。
      1. 发送方设置校验和
        1. 首先把校验和(16bit)设为0,将头部每16bit划分为一个间隔字段。
        2. 将所有间隔字段二进制相加求和在取反。
        3. 将结果写入校验和。 
      2. 接收到检验校验和
        1. 将头部每16bit划分为一个间隔字段。
        2. 所有字段(包括校验和)二进制求和取反。
        3. 如果为0,则正确,如果不为0则有错误,就要丢弃。

      3.所有可靠性由运输层或者应用层实现。

5.常见的网络端口和协议

  • 端口地址都是16比特,可以有在0---65535范围内的端口号。
  • 公认端口即众所周知的端口号,范围从0到1023,这些端口号一般固定分配给一些服务。
20/21 TCPFTP文件传输,21端口用于连接,20端口用于传输数据
23TCPTelentInternet远程登录服务
25TCPSMTP简单邮件传输服务器
53UDPDNS域名服务器
69UDPTFTP便于从系统下载启动代码
80TCPHTTP超文本传输协议
110TCPPOP3邮件协议3
443TCPHTTPS安全的超文本传输协议

转载于:https://www.cnblogs.com/mibloom/p/9635923.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值