Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- Durván összetett azért ahhoz, hogy egyszerűen a+b=c legyen (:
- Megpróbálom a minimumot/legegyszerűbbet összerakni (nem életszagú).
- Egyetlen ethernet keret layer 1-en (MTU 1500, VLAN tag nincs):
- Alatta leírom mennyi kell belőle.
- -----------------------------------------------
- 12byte Ethernet gap + 8byte Ethernet preamble
- -----------------------------------------------
- -- Ethernet Frame:
- ----------------------------------------------
- --Ethernet header:
- --6 byte dest addr
- --6 byte src addr
- --[4 byte 802.1q VLAN Tag ha van..]
- --2 byte length/type
- -------------------------------------------------
- ------ IP Packet
- --------------46-1500 byte data (payload)----------
- ----20byte IPv4 header:
- ----1byte Version; 1byte IHL; 1byte ToS; 2byte Length;
- ----2byte Identification; 3bit Flag; 13bit Fragment offset
- ----1byte TTL; 1byte Protocol; 2byte Header Checksum;
- ----4byte dest addr; 4byte src addr
- ----8byte Options (ha van, mert az IHL több, mint 5 (5x32=20byte a header))
- ---------------------------------------------------
- -------- TCP segment
- -----------------------------------------------------
- --------20byte TCP header
- --------2byte src port; 2byte dst port;
- --------4byte sequence number
- --------4byte acknowledge number
- --------4bit data offset;
- --------3bit reserved; 9bit flag (syn;ack;psh;rst;...)
- --------2byte window size
- --------2byte checksum; 2byte URG pointer
- --------(Ha a data offset 5-nél nagyobb akkor az Options rész is
- --------tartalmaz adatot- nagyságát az 5-nél magasabb offset
- --------határozza meg (5x32=20byte a header alapból, ha nincs
- --------az Options alatt semmi akkor 0-val van feltöltve 4byte-ig de
- --------úgyis lesz egy kevés, mert kell pl. SYN-ben MSS-t megadni..))
- -----------------------------------------------------
- -----------------
- -----------------
- ----------------- A HTTP adat, ami a végén 1MB-ot fog kiadni.
- -----------------
- -----------------
- ----------------- Csomagonként 1460byte a maximum..
- -----------------
- -----------------
- -----------------------------------------------------
- --------
- ---------------------------------------------------
- ------
- ----------------------------------------------
- --4 byte Ethernet FCS
- -----------------------------------------------
- 4byte Ethernet trailer
- -----------------------------------------------
- Na, ekkor jön egy olyan, hogy 3way handshake miatt egy SYN, egy SYNACK
- és egy ACK. => 3x Ethernet frameben IP csomag 0 payload-al.
- Kell egy HTTP GET, ami minimum ennyi:
- GET / HTTP/1.0[ENTER] \
- [ENTER] |-- 17 byte összesen
- [ENTER] /
- ..amire a szerver válaszol egy "üres" ACKel és tolja az 1MB file-t így:
- Tekintsük a TCP receive window-t a maximumnak: 65536byte (nincs specifikálva se az
- kliens OS, se a szerver, se a szerver OS; az életben pl. a TCP receive window 17.5KB
- lenne mondjuk egy "átlagos gépnél").
- Így (1024*1024byte)/65536byte = 16 TCP full window lenne az átvitel ideális esetben
- de mivel az ack is kell és 1460byte egy csomag, így ideális (csomagvesztés nélküli)
- esetben kell 16 ACK csomag is és a data 44.89 tehát 44db 1460byte-os valamint egy
- 1296byte-os csomag lesz egy teljes TCP window. Ehhez jön még window-nként egy ACK.
- Majd a végén a lezárás (nem az "elegáns" Windows Serveres RST, hanem) egy rendes,
- FINACK a klienstől +ACK a szervertől.
- Durvaélet kihagytam valamit, de tippre a tanár már így is többet kap mint amire számít.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement