So let's start by looking at loss-based congestion inference. TCP Reno is as we said, it's a widely used in Windows OS, and that's kind of the case study example that we'll look at here. so under this each round trip time we ask ourselves one question, and the question is have all the packets been received properly? And if the answer's yes, then we increase the congestion when it says by 1. And if the answer is no, then we cut the congestion windows side in half. So, here we do plus one and here we do just the divide by two [NOISE]. So, another question, well, what is not property? RIght? So we said have all the packets been received properly. And that's very easy logic to execute. Well, we have to know what we mean by properly. so one way we look at properly there's two different ways. so really we want to determine whether it has not been received properly. And the first way it could have not been received properly, is if a Certain number of RTTs have passed, right? So a certain multipliciative factor, those two assumptions that we made and the second one is that a certain number of future packets have been acknowledged right, so. This was assumption number 1. This was assumption number 2 with the sequencing. And this was the with timing. So, let's look at a, let's look an example here to really illustrate what we're talking about. so suppose we start at time 0, and the current congestion window is five. Right, so, then what we do right away is that we send five packets. Then, at time one, we receive five acknowledgements. Right so, we'be received five acknowledgements to this point. So, we take our window size and we increase it by one. So, we do 5 plus 1 equals 6 so and the new condition window size and then we send six packets. And then at time two. supposed we receive six acknowledgements, well then we take the current window size as 6 plus one is 7. And that becomes the new window size, because we're all good we received all six, and then we send seven packets. And similarly, now at time three we receive seven acknowledgements. We do 7 plus 1 equals 8 which is the current window size and then we send eight packets. Now, at time four we detect a loss. Okay, so one of the packets doesn't get acknowledged properly. So what happens? Well now we take the window size and we cut if in half, 8 divided by 2 is 4, which is the new window size. So now we can only send four packets. So this is just a diagram to show what's happening basically when we go from a window size of seven to eight and then down to four. so right at time time three when we go up to eight and then time four is when we detect the loss so at time two we receive six acknowledgements so that window size goes up to seven. And then we we can send out seven packets. So we have seven outstanding packets this time, at at time two. And then once we receive the acknowledgement the window size has gone up to eight, right? So the window size is eight we send eight of them out. Right, so one, two get received properly four, five, six, seven and eight get received properly but packet three, never, get's received, or is determined to have been lost. So, then what happens is that, the next time the window size is four. So now we can only have four outstanding packets at any given time. So, now at time five, suppose we receive all four acknowledgements, then we would continue, we would say okay well the window size is four, now let's gradually increase it. and now the window size goes up to five which is a new window size. And then we can send five packets, and so, then we can plot the congestion window over time. And let's point out here that time is in round trip time. So we're not doing time in seconds or anything like that. We're assuming that we have a constant RTT A constant round-trip time which doesn't have to be the case and so if the RTT was like 50 milliseconds, this would be zero. This would be 50. This would be 100. This could be 150 and so on. But, we can just plot RTTs without a loss of generality. So, then at time one we jump up to six, time two we jump up to seven. Time three we jump up to eight and then we have a sharp decrease down to four then up to five then up to six. Sharp decrease again halving. It's just we only got up to here with what we did but if we continue that maybe just making this up as you go that increases. And you see it's kind of trying to hover around like some given point over here wherever that may be and that would be like the window size. That would be in equilibrium. But it just notes the fact that you have a linear or gradual increase, and you have a very sharp decrease that's occurring once you detect some sort of congestion.