Simplified, non committee'd [[../OSI Stack|OSI Model]].
![[../../../00 Asset Bank/Pasted image 20250904190839.png|invert_S]]
TCP is a protocol that ensures that when a packet is sent to a destination, it will either get their or there will be a concrete error. In TCP, duplicated and out of order packets are dropped.
#### Layers
- *Application*:
- The more abstract layer & closest to the user, treats data sent through as just a stream
- *Transport*:
- Responsible for making sure the data was sent reliabily and in the correct order
- Two Main Protocols: [[TCP-IP Model|TCP]] or [[User Datagram Protocol|UDP]] depending on whether the communication needs to be reliable or faster.
- *Internet*:
- Responsible for finding the best path for the data to travel across different [[Network|networks]] to land at its destination.
- Responsible for packet forewarding (moving data from one point to another), fragmenting data (breaking apart data to smaller parts), and addressing
- *Network Access Layer*:
- Bottommost layer, deals with the actual physical connection & transmissions of 1's and 0's *on the sam*
![[Pasted image 20251015180619.png|invert_S]]
#### Aproach (Simplified)
- Sender sends $N$ packets out as they are available
- wait for those ack before sending more
- Evaluate how the sending performed:
- Sucessful? - send more, faster!
- Failed? - Slow down, error
- Don't shoot yourself in the foot by sending too man messages and then getting DDOS'ed by the response.