# Test 02
## Popište protokol TCP (Transmission Control Protocol)
- protokol pro **přenos dat pomocí spojovaných služeb**
- pracuje na transportní vrstvě (L4)
- **velmi složitý protokol** (musí udržovat stav spojení)
- používá se pro **složitější služby s přenosem objemnějších dat**
    - HTTP(S)
    - SMTP(S) / POP3(S) / IMAP(S)

### Spojované služby
- **fragmentaci a defragmentaci dat** na úrovni L4 **zajišťuje síť**
- L4 postkytuje službu virtuálního spojení
    - **zaručuje doručení** nebo chybovou zprávu
    - **zaručuje doručení** segmentů **v pořadí odeslání**
    - **zaručuje doručení** stejného segmentu **právě jednou**
- analogie: ~ telefon
- protokol zajišťuje:
    - **rozdělení dat** do segmentů (=L4 PDU) a jejich číslování
    - **potvrzování příjmu** segmentů **a případné opakování přenosu**
    - **sestavení** segmentů **ve správném pořadí**
    - **řízení toku dat**


## Popište protokol UDP (User datagram protocol)
- protokol pro **přenos dat pomocí nespojovaných služeb**
- pracuje na transportní vrstvě (L4)
- **velmi jednoduchý protokol** (nemusí udržovat žádný stav)
- používá se pro **jednoduché služby typu „výzva + odezva“**, zejména pokud se posílají jen krátké zprávy
    - DHCP
    - DNS

### Nespojované služby
- **fragmentaci a defragmentaci dat** na úrovni L4 **si zajišťuje aplikace** sama
- L4 poskytuje jen službu odeslání segmentu
    - **nezaručuje doručení** a jeho potvrzení
    - **nezaručuje doručení** segmentů **v pořadí odeslání** (↦ směrování)
    - **nevylučuje vícenásobné doručení** stejného segmentu (↦ směrování)
- analogie: ~ pošta
- aplikace musí zajišťovat:
    - **rozdělení dat** do segmentů a jejich číslování
    - **potvrzování příjmu** segmentů **a případné opakování přenosu**
    - **sestavení** segmentů **ve správném pořadí**

## Nakreslete a porovnejte hlavičky protokolů TCP a UDP
### TCP
``` 0             7 8             15 16           23 24            31 ``` \
``` +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ ``` \
``` |          Source Port          |       Destination Port        | ``` \
``` +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ ``` \
``` |                        Sequence Number                        | ``` \
``` +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ ``` \
``` |                    Acknowledgment Number                      | ``` \
``` +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ ``` \
``` |  Data |           |U|A|P|R|S|F|                               | ``` \
``` | Offset| Reserved  |R|C|S|S|Y|I|            Window             | ``` \
``` |       |           |G|K|H|T|N|N|                               | ``` \
``` +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ ``` \
``` |           Checksum            |         Urgent Pointer        | ``` \
``` +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ ``` \
``` |                    Options                    |    Padding    | ``` \
``` +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ ``` \
``` |                             data                              | ``` \
``` +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ ```

### UDP
``` 0      7 8     15 16    23 24    31 ``` \
``` +--------+--------+--------+--------+ ``` \
``` |     Source      |   Destination   | ``` \
``` |      Port       |      Port       | ``` \
``` +--------+--------+--------+--------+ ``` \
``` |                 |                 | ``` \
``` |     Length      |    Checksum     | ``` \
``` +--------+--------+--------+--------+ ``` \
``` |                                   | ``` \
``` |          data octets ...          | ``` \
``` +-----------------+--------+--------+ ```