tcp

可靠数据传输:

  RFC6298定时器管理:这个rfc文档推荐使用单一的重传定时器,而不是为每个报文都启动一个定时器。可以理解为这个单一的重传定时器仅与最小的未确认报文相关联
  假设c向s发送A B C三个报文,s只收到了A和C报文并发送两次A的ack,那么s就会在收到A的ack时重启定时器,直到定时器超时重传B报文
  超时间隔加倍:如果超时发生后,第二次超时时间将会加倍
  快速重传:如果连续收到了3个ack,则直接重传(基于累计确认和冗余ack)
  GBN还是SR:计算机网络自顶向下阅读笔记:滑动窗口、选择重传、TCP

流量控制:发送窗口和接收窗口

  发送方维护一个接收窗口,指示接收方还有多少的缓存空间。如A向B发送报文,主机B会把当前的rwnd放入接收窗口字段中,告诉主机A它还有多少可用的缓存空间。
  主机B跟踪的变量:last_byte_recv last_byte_read
  (rwnd=buffer_size - (last_byte_recv-last_byte_read)):
  last_byte_recv - last_byte_read的意思就是,有多少已经进入缓存但还没有被应用程序读取的数据,这部分数据已经进入缓存正在等待读取,所以占用了一部分缓存空间。把总的缓存减去占用的缓存空间,就等于可用的缓存空间。
  主机A跟踪的变量:last_byte_send last_byte_acked
  last_byte_send - last_byte_acked就等于已经发送但还未被确认的数据
  另外拥塞控制中还有一个cwnd(congestion window)的变量,意思是拥塞窗口的大小,每次tcp未被确认的数据量不能超过min{cwnd, rwnd},也就是last_byte_send - last_byte_acked <= min{cwnd, rwnd}

连接管理:

  c向s发送syn,s收到syn后,分配tcp缓存和变量,然后向c发送synack报文,c收到synack后,分配缓存和变量
  服务端在第二次握手分配缓存和变量,客户端在第三次握手分配缓存和变量
  可能导致syn洪范攻击,防御的方法是使用syn cookie.当s收到syn时,并不分配任何资源,而是生成一个cookie,s发送带有cookie的synack分组。
  客户返回ack时,确认字段中的值等于cookie+1,此时s再次计算一次cookie+1,和客户端返回的值进行对比

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值