Transmission Control Protocol je vrlo važan protokol u transportnom sloju za OSI ili TCP/IP model. TCP ima mnoge prednosti kao što su:
- TCP vrši ponovni prijenos ako primatelj ne potvrdi bilo koji poslani podatak unutar nekog vremena.
- TCP uspostavlja neku vezu prije slanja podataka. Tu vezu nazivamo trosmjernim rukovanjem.
- TCP ima mehanizam kontrole zagušenja.
- TCP može otkriti pogrešku pomoću nekih metoda.
Učimo uglavnom o TCP trosmjernom rukovanju. Naučimo također o važnim poljima u Wiresharku za trosmjerno rukovanje.
3-smjerno rukovanje
Postoje tri razmjene okvira koje se događaju u trosmjernom rukovanju:
Prvi okvir uvijek šalje klijent poslužitelju. Razumimo ovo iz jednostavnog dijagrama:
“KLIJENT” “SERVER”
Okvir1: Klijent šalje SYN okvir poslužitelju-----------------------------------><------------------------------------------Poslužitelj šalje SYN+ACK okvir klijentu: Frame2
Frame3: Klijent šalje ACK okvir poslužitelju----------------------------------->
Ova tri okvira možemo vidjeti u Wiresharku. Filter “tcp” može se koristiti u Wiresharku za pregled svih TCP okvira. Evo snimke zaslona za tri okvira:
Razmotrimo sada detaljnije sva tri okvira:
SYN
Ovaj okvir sadrži mnogo informacija o mogućnostima klijenta da informira poslužitelj. Sljedeća snimka zaslona prikazuje sva važna polja okvira SYN:
Ovdje su važna polja za SYN okvir:
Izvorni port: 50602Odredišna luka: 80
Redni broj: 0
Broj zahvalnice: 0
Duljina zaglavlja: 32 bajta
Oznake: 0x002 (SYN):
Potvrda: Nije postavljeno
Guranje: nije postavljeno
Ponovno postavljanje: nije postavljeno
Syn: Postavi -----> Ovaj bit postavljen jer je ovo SYN okvir.
Peraje: Nije postavljeno
Prozor: 65535
Hitan pokazivač: 0
TCP opcija - Maksimalna veličina segmenta: 1460 bajtova
TCP opcija - Skala prozora: 3 (množenje s 8)
TCP opcija - SACK dopušten
POGLED+POTVRDA
Ovaj okvir sadrži mnogo informacija o sposobnostima poslužitelja da informira klijenta. Sljedeća snimka zaslona prikazuje sva važna polja okvira SYN+ACK:
Ovaj okvir također potvrđuje SYN okvir koji šalje klijent.
Ovdje su važna polja za okvir SYN+ACK:
Izvorni priključak: 80Odredišna luka: 50602
Redni broj: 0
Broj zahvalnice: 1
Duljina zaglavlja: 32 bajta (8)
Oznake: 0x012 (SYN, ACK)
Priznanje: Postavljeno
Guranje: nije postavljeno
Ponovno postavljanje: nije postavljeno
Njegov: Set
Peraje: Nije postavljeno
Prozor: 29200
Hitan pokazivač: 0
TCP opcija - Maksimalna veličina segmenta: 1412 bajtova
TCP opcija - SACK dopušten
TCP opcija - Skala prozora: 7 (množenje sa 128)
Vidimo da su bitovi “Acknowledge” i “SYN” postavljeni u ovom okviru. To je zato što je ovaj okvir SYN+ACK.
ACK
Ovaj okvir je posljednji okvir trosmjernog rukovanja i također potvrda SYN+ACK od strane klijenta. Sljedeća snimka zaslona prikazuje sva važna polja okvira ACK:
Ovdje su važna polja za ACK okvir:
Izvorni port: 50602Odredišna luka: 80
Redni broj: 1
Broj zahvalnice: 1
Duljina zaglavlja: 20 bajtova (5)
Oznake: 0x010 (ACK)
Hitno: Nije postavljeno
Priznanje: Postavljeno
Guranje: nije postavljeno
Ponovno postavljanje: nije postavljeno
Syn: Nije postavljeno
Peraje: Nije postavljeno
Prozor: 32768
Ovdje je postavljen samo bit 'Acknowledge' jer je ovo ACK okvir.
Objašnjenje za neka važna uobičajena polja
Priključak 80 : Promotrili smo jedan fiksni priključak 80 u ovom vodiču. To je zato što je ovo HTTP snimanje i port 80 je fiksan (na strani poslužitelja) za HTTP komunikaciju.
Redni broj : Redni broj tog okvira. Sinkronizacija je prvi okvir tako da imamo 0 kao redni broj.
TCP zastavice:
Priznanje – Ovaj bit je postavljen ako je okvir ACK. Primjer: SYN+ACK, ACK okvir.
SYN – Ovaj bit je postavljen ako je okvir SYN. Primjer: SYN.
Prozor : Ovo polje dijeli maksimalnu veličinu prozora pošiljatelja u načinu primanja. Primjer: Imamo veličinu prozora od 65535 bajtova u SYN okviru. To znači da primatelj može primiti maksimalno TCP podatke od 65535 bajtova u bilo kojem trenutku.
VREĆA Dopušteno : Ovaj bit je postavljen ako slanje podržava SACK [selektivna potvrda].
Maksimalna veličina segmenta : Možemo to nazvati i MSS. Ovo definira maksimalni okvir podataka koji pošiljatelj može primiti. Primjer: dobivamo MSS kao 1460 bajtova u SYN okviru.
Zaključak
Naučili smo o TCP trosmjernom rukovanju i svim korisnim poljima za okvire SYN, SYN+ACK i ACK. Ako želite saznati više o TCP-u, možete slijediti ovu RFC vezu https://tools.ietf.org/html/rfc793 .