chuong 3 giaothuc tcp ip (cơ chế Điều khiển lỗi, Điều khiển luồng)

Upload: tr-soi

Post on 13-Oct-2015

117 views

Category:

Documents


1 download

DESCRIPTION

Chuong 3 GiaoThuc TCP IP (Cơ Chế Điều Khiển Lỗi, Điều Khiển Luồng)

TRANSCRIPT

  • Gio trnh Mng my tnh c bn Chng 3.Gii thiu v giao thc TCP/IP

    Nguyn V Quc Hng. Cc CNTT-B GD&T 70

    2.5.4. Cc giao thc vch ng trn internet.

    2.5.4.1. Giao thc RIP

    RIP l giao thc n gin s dng gii php distance vector (Bellman-Ford), cho php cc host v cc router trao i thng tin tm ra ng i (nh tuyn) cho cc gi tin IP.

    RIP l chun ca Internet (IAB) - RFC-1058 (6/1988).

    Mi router qung b thng tin RIP theo khong thi gian 30 giy. Thng tin ly t bng dn ng (Routing Table) gm cp s:

    (a ch IP (ca host, mng, subnet); s chng router ti a ch IP ).

    Routing Table gm cc dng nh sau:

    a ch mng (IP) router ch

    o (Metric) ti IP ch

    a ch IP ca router tip theo trn tuyn ng ti IP ch

    Flag ch tnh trng thay i l trnh (change route Flag)

    Thi gian sng

    V d t mt router

    Destination Route Mask Next Hop Port Metric Type Src Age

    192.168.10.0 255.255.255.0 192.168.10.1 J3 0 DIR LOC 113

    192.168.10.1 255.255.255.255 192.168.10.1 J3 0 DIR LOC 113

    192.168.11.0 255.255.255.0 192.168.10.2 J3 1 REM RIP 31

    192.168.12.0 255.255.255.0 192.168.12.2 J4 0 DIR LOC 114

    192.168.12.2 255.255.255.255 192.168.12.2 J4 0 DIR LOC 114

    Gi tin RIP c chuyn ti trn gi tin UDP (User Data Protocol) hoc IP. S dng cng UDP 520.

    Thi gian sng (Age) ca mt dng trn Lookup Table l 180 giy. Nu khng c updates trong 180 giy th s loi b thng tin v t li khong cch

    l khng xc nh.

  • Gio trnh Mng my tnh c bn Chng 3.Gii thiu v giao thc TCP/IP

    Nguyn V Quc Hng. Cc CNTT-B GD&T 71

    V d trong mt lin mng ta c cc mng w x y z v cc router A-B-C-D nh trong hnh 3.19.

    Gi s ti thi im ta ang xt, router D c bng dn ng nh sau:

    Mng ich (Destination)

    Router tip (next hop)

    Khong cch n ch (metric)

    w A 2

    y B 2

    z B 7

    x - 1

    Tip theo D nhn c mt thng bo t A nh sau:

    Mng ich (Destination)

    Router tip (next hop)

    Khong cch n ch (metric)

    w

    x

    z C 4

    Trn c s thng tin mi nhn c t A, router D tnh li bng dn ng thay i ng i n z (i qua C)

    Mng ich (Destination)

    Router tip (next hop)

    Khong cch n ch (metric)

    w A 2

    y B 2

    z B C 7 5

    x - 1

    2.5.4.2. OSPF (Open Shortest Path First)

    Hnh 3.19. Hnh trng mng cho v d

  • Gio trnh Mng my tnh c bn Chng 3.Gii thiu v giao thc TCP/IP

    Nguyn V Quc Hng. Cc CNTT-B GD&T 72

    B giao thc nh tuyn OSPF c pht trin t nm 1987, version 2 l chun - RFC 2328. Trc s dng RIP i vi nh tuyn ng. Vi s lng mng kt ni vi nhau ln ln th RIP c nhng hn ch so vi OSPF.

    Cc yu cu ban u cho OSPF:

    S lng chng trong tuyn l 65535, cc metric khc nhau nh thi gian tr (delay), gi thnh (cost), bng thng (bandwith) -> tng kh nng cu hnh mng.

    Cho php nhiu tuyn ng cng gi tr (equal-cost multipath) -> nhiu kh nng cho chng tip theo ti a ch ch.

    Mng vi kh nng nh tuyn phn h (routing hierachy): cho php xy dng mng ln (autonomous area) vi cc vng mng nh hn (domain).

    H tr subnet mng vi kch thc thay i (VLSM - Variable Length Subnet Mask).

    Tnh an ninh: gi tin OSPF c trng xc thc (authentication) xc thc cc gi tin nhn v c m kha cho vic xm nhp trong tng domain.

    OSPF l mt dng ca thut ton Link-State, cho php p ng cc thay i v mng nhanh hn RIP. OSPF s dng cc thng tin LSA (Link-State Advertisement) qung b ti cc router ln cn mi khi c thay i v cu hnh mng v gi LSA theo khong thi gian lu hn RIP.

    III. Giao thc lp chuyn ti (Transport Layer)

    3.1. Giao thc TCP

    TCP (Transmission Control Protocol) l mt giao thc c lin kt (connection - oriented), ngha l cn thit lp lin kt (logic), gia mt cp thc th TCP trc khi chng trao i d liu vi nhau.

    TCP cung cp kh nng truyn tin cy d liu theo lung byte mt cch an ton gia cc my trm trong h thng cc mng. N cung cp thm cc chc nng nhm kim tra tnh chnh xc ca d liu khi n v bao gm c vic gi li d liu khi c li xy ra. TCP cung cp cc chc nng chnh sau:

    1. Thit lp, duy tr, kt thc lin kt gia hai qu trnh.

    2. Phn pht gi d liu (segment) mt cch tin cy.

    3. nh s th t (sequencing) cc gi d liu nhm truyn d liu mt cch tin cy.

    4. Cho php iu khin li.

    5. Cung cp kh nng a kt ni vi cc qu trnh khc nhau gia trm ngun v trm ch nht nh thng qua vic s dng cc cng.

  • Gio trnh Mng my tnh c bn Chng 3.Gii thiu v giao thc TCP/IP

    Nguyn V Quc Hng. Cc CNTT-B GD&T 73

    6. Truyn d liu s dng c ch song cng (full-duplex).

    3.1.1. Cu trc gi d liu TCP

    - Source port (16 bits) : s hiu cng ca trm ngun

    - Destination port (16 bits) : s hiu cng ca trm ch

    - Sequence Number (32 bits): s hiu ca byte u tin ca segment tr khi bit SYN c thit lp. Nu bit SYN c thit lp th Sequence Number l s hiu tun t khi u (ISN) v byte d liu u tin l ISN +1.

    - Acknowlegment: v tr tng i ca byte cui cng nhn ng bi thc th gi gi ACK cng thm 1. Gi tr ca trng ny cn c gi l s tun t thu. Trng ny c kim tra ch khi bit ACK=1.

    - Data offset (4 bits) : s tng t 32 bit trong TCP header. Tham s ny ch ra v tr bt u ca vng d liu

    Hnh 3.21. Khun dng gi d liu TCP

    Hnh 3.20 M hnh truyn d liu ca TCP

  • Gio trnh Mng my tnh c bn Chng 3.Gii thiu v giao thc TCP/IP

    Nguyn V Quc Hng. Cc CNTT-B GD&T 74

    - Reserved (6 bits) : dnh dng trong tng lai. Phi c thit lp l 0.

    - Control bits : cc bit iu khin

    - URG : vng con tr khn (Urgent Pointer) c hiu lc.

    - ACK : vng bo nhn (ACK number) c hiu lc.

    - PSH : chc nng Push. PSH=1 thc th nhn phi chuyn d liu ny cho ng dng tc thi.

    - RST : thit lp li (reset) kt ni.

    - SYN : ng b ho cc s hiu tun t, dng thit lp kt ni TCP.

    - FIN : thng bo thc th gi kt thc gi d liu.

    - Window (16 bits): cp pht gi tr kim sot lung d liu (c ch ca s). y chnh l s lng cc byte d liu, bt u t byte c ch ra trong vng ACK number, m trm ngun sn sng nhn, c dng thng bo tin nhn cc bytes trong lung d liu v kh nng tip nhn chng.

    - Checksum (16 bits) : m kim sot li (theo phng php CRC) cho ton b segment (header + data)

    - Urgent pointer (16 bits) : con tr ny tr ti s hiu tun t ca byte i theo sau d liu khn, cho php bn nhn bit c di ca d liu khn. Vng ny ch c hiu lc khi bit URG c thit lp

    - Options ( di thay i): khai bo cc option ca TCP, trong c di ti a ca vng TCP data trong mt segment

    - Padding ( di thay i) : phn chn thm vo header bo m phn header lun kt thc mt mc 32 bits. Phn thm ny gm ton s 0.

    - TCP data ( di thay i) : cha d liu ca tng trn, c di ti a ngm nh l 536 bytes. Gi tr ny c th iu chnh bng cch khai bo trong vng options.

    Mt tin trnh ng dng trong mt host truy nhp vo cc dch v ca TCP cung cp thng qua mt cng (port) nh sau (hnh 3.22):

    Mt cng kt hp vi mt a ch IP to thnh mt socket duy nht trong lin mng. TCP c cung cp nh mt lin kt logic gia mt cp socket. Mt socket c th tham gia nhiu lin kt vi cc socket xa khc nhau. Trc khi truyn d liu gia hai trm cn phi thit lp mt lin kt TCP gia chng v khi kt thc phin truyn d liu th lin kt s c gii phng. Cng ging nh cc giao thc khc, cc thc th tng trn s dng TCP thng qua cc hm dch v nguyn thu (service primitives), hay cn gi l cc li gi hm (function call).

  • Gio trnh Mng my tnh c bn Chng 3.Gii thiu v giao thc TCP/IP

    Nguyn V Quc Hng. Cc CNTT-B GD&T 75

    3.1.2. Thit lp v kt thc kt ni TCP

    Thit lp kt ni

    Thit lp kt ni TCP c thc hin trn c s phng thc bt tay ba bc (Tree - way Handsake) hnh 3.22. Yu cu kt ni lun c tin trnh trm khi to, bng cch gi mt gi TCP vi c SYN=1 v cha gi tr khi to s tun t ISN ca client. Gi tr ISN ny l mt s 4 byte khng du v c tng mi khi kt ni c yu cu (gi tr ny quay v 0 khi n ti gi tr

    232

    ). Trong thng ip SYN ny cn cha s hiu cng TCP ca phn mm dch v m tin trnh trm mun kt ni.

    Mi thc th kt ni TCP u c mt gi tr ISN mi s ny c tng theo thi gian. V mt kt ni TCP c cng s hiu cng v cng a ch IP c dng li nhiu ln, do vic thay i gi tr INS ngn khng cho cc kt ni dng li cc d liu c (stale) vn cn c truyn t mt kt ni c v c cng mt a ch kt ni.

    Khi thc th TCP ca phn mm dch v nhn c thng ip SYN, n gi li gi SYN cng gi tr ISN ca n v t c ACK=1 trong trng hp sn sng nhn kt ni. Thng ip ny cn cha gi tr ISN ca tin trnh trm trong trng hp s tun t thu bo rng thc th dch v nhn c gi tr ISN ca tin trnh trm.

    Tin trnh trm tr li li gi SYN ca thc th dch v bng mt thng bo tr li ACK cui cng. Bng cch ny, cc thc th TCP trao i mt cch tin cy cc gi tr ISN ca nhau v c th bt u trao i d liu. Khng c thng ip no trong ba bc trn cha bt k d liu g; tt c thng tin trao i u nm trong phn tiu ca thng ip TCP.

    Bc 1: Cient (bn ch ng) gi n server mt segment yu cu ni kt, trong cha s th t khi u m n s dng (Flags = SYN,

    Hnh 3.22. Lin h gia cc tin trnh thng qua socket

  • Gio trnh Mng my tnh c bn Chng 3.Gii thiu v giao thc TCP/IP

    Nguyn V Quc Hng. Cc CNTT-B GD&T 76

    SequenceNum = x).

    Bc 2: Server tr li cho client bng mt segment, trong bo nhn rng n sn sng nhn cc byte d liu bt u t s th t x+1 (Flags = ACK, Ack = x + 1) v cng bo rng s th t khi u ca bn server l y (Flags = SYN, SequenceNum = y).

    Bc 3: Cui cng client bo cho server bit, n bit s th t khi u ca server l y (Flags = ACK, Ack = y+1).

    Kt thc kt ni

    Khi c nhu cu kt thc kt ni, thc th TCP, v d c th A gi yu cu kt thc kt ni vi FIN=1. V kt ni TCP l song cng (full-duplex) nn mc d nhn c yu cu kt thc kt ni ca A (A thng bo ht s liu gi) thc

    th B vn c th tip tc truyn s liu cho n khi B khng cn s liu gi v thng bo cho A bng yu cu kt thc kt ni vi FIN=1 ca mnh. Khi thc th TCP nhn c thng ip FIN v sau khi gi thng ip FIN ca chnh mnh, kt ni TCP thc s kt thc.

    Bc 1: Cient (bn ch ng) gi n server mt segment yu cu hy ni kt (Flags =FIN).

    Bc 2: Server nhn c mt segment FIN, s tr li bng mt segment ACK. Sau khi hon tt ht mi th ng ni kt, server s gi cho client tip mt segment FIN.

    Bc 3: Client nhn c FIN s tr li ACK sau n s chuyn

    Hnh 3.23. Quy trnh kt ni TCP 3 bc v kt thc 4 bc

  • Gio trnh Mng my tnh c bn Chng 3.Gii thiu v giao thc TCP/IP

    Nguyn V Quc Hng. Cc CNTT-B GD&T 77

    sang trng thi ch i c nh hn. Trong thi gian ch i ny, client s tr li ACK cho mi khung FIN. Ht thi gian ch i, client s tht s ng ni kt.

    Bc 4: Server khi nhn c ACK s tht s ng ni kt.

    3.2. Giao thc UDP.

    UDP l dch v truyn d liu dng khng ni kt. Khng c thit lp ni kt gia hai bn truyn nhn, do gi tin UDP (segment) c th xut hin ti nt ch bt k lc no. Cc segment UDP t thn cha mi thng tin cn thit c th t i n ch. Khun dng ca chng nh sau:

    Source port Destination port

    Length CheckSum

    Data

    Source Port: a ch cng ngun, l s hiu ca tin trnh gi gi tin i.

    Destination Port: a ch cng ch, l s hiu ca tin trnh s nhn gi tin.

    Length: Tng chiu di ca segment, tnh lun c phn header.

    Checksum: L phn kim tra li. UDP s tnh ton phn kim tra li tng hp trn phn header, phn d liu.

    Data: Phn d liu hai bn gi cho nhau.

    UDP hot ng khng tin cy v khng c bo nhn d liu t trm ch; khng c c ch pht hin mt gi tin hoc cc gi tin n khng theo th t; khng c c ch t ng gi li nhng gi tin b mt; khng c c ch iu khin lung d liu, v do c th bn gi s lm trn ngp bn nhn.

    UDP thng s dng trong nhng ng dng a phng tin truyn d liu theo dng (truyn hnh, video, audio,) chp nhn mt gi v i hi tc truyn d liu cao (nhy cm vi tc ). Ngoi ra ng dng DNS v SNMP (Simple Network Management Protocol) cng dng UDP lm giao thc chuyn ti.

    3.3. Truyn d liu tin cy trong TCP

    3.3.1. Nguyn tc truyn tin cy

  • Gio trnh Mng my tnh c bn Chng 3.Gii thiu v giao thc TCP/IP

    Nguyn V Quc Hng. Cc CNTT-B GD&T 78

    Gi s chng ta c mt cp thc th bn gi-bn nhn ang trong mt phin kt ni truyn d liu. Bn gi v bn nhn s dng mt giao thc truyn d liu tin cy (reliable data transfer protocol) c ngha l m bo cc gi tin (bytes) truyn i v nhn c khng b mt v khng sai lch. Gi tin c truyn i trn ng truyn khng tin cy (unreliable channel), tc l gi tin c th b mt hoc sai lch trn ng truyn. S phc tp khng tin cy ca ng truyn dn n s phc tp ca giao thc truyn tin cy.

    a) K thut pht hin li checksum

    S pht hin bit li n gin nht l ni mt bit chn-l vo cui ca mi t trong khung (Parity check). Mt v d tiu biu l vic truyn cc k t ASCII, m trong mt bit chn-l c ni vo mi k t ASCII 7 bit. Gi tr ca bit ny c la chn sao cho c mt s chn ca bit 1, vi kim tra chn (even parity) hoc mt s l ca bit 1, vi kim tra l (odd parity).

    V d, nu bn gi ang truyn mt k t ASCII G ( m ASCII l1110001) v ang dng phng php kim tra l, n s ni mt bit 1 v truyn i 11100011. Bn nhn s kim tra k t nhn c v nu tng ca cc bit 1 l l, n xem nh khng c li. Nu mt bit hoc mt s l bt k cc bit b li o ngc th r rng bn nhn s pht hin c li. Tuy nhin, nu hai hay mt s chn bt k cc bit b li o ngc th n s khng pht hin c li. Trn thc t nhng xung nhiu li thng di c th ph hy hn mt bit, c bit l vi tc d liu cao. Do , cn phi c mt phng php ci thin trng hp ny.

    C th ci thin s trn bng cch dng phng php checksum. Trong phng php ny, khung c xem nh mt khi nhiu k t c sp xp theo dng hai chiu, v vic kim tra c thc hin c chiu ngang ln chiu dc.

    Theo chiu ngang, mi k t c thm vo mt bit kim tra chn l nh trng hp trn, v c gi l bit Kim tra chiu ngang VRC (Vertical Redundancy Check).

    Hnh 3.24. M hnh truyn tin cy trn ng truyn khng tin cy

  • Gio trnh Mng my tnh c bn Chng 3.Gii thiu v giao thc TCP/IP

    Nguyn V Quc Hng. Cc CNTT-B GD&T 79

    Theo chiu dc, cung cp thm mt k t kim tra, c gi l k t Kim tra chiu dc LRC (Longitudinal Redundancy Check). Trong , bt th I ca k t ny chnh l bit kim tra cho tt c cc bit th i ca tt c cc k t trong khi.

    Cc php o ch ra rng vic dng c hai VRC v LRC gim i t l li

    khng pht hin c hai n bn bc so vi dng ch VRC. Hy xem trng hp bit 1 v 3 trong k t 1 ang b li. Khi bn nhn tnh ton c bit VRC cho k t 1, n s kim tra vi bit VRC nhn, v s khng pht hin c li. Tuy nhin, khi n tnh ton c k t LRC, bit 1 v 3 ca k t ny s khc vi nhng bit trong k t LRC nhn c, v s pht hin c li.

    Tuy nhin, ngay s ny cng khng phi l tht s tt. By gi, nu gi s bit 1 v 3 ca k t 5 cng b li, phng php ny s khng pht hin c im sai.

    Ngoi k thut checksum ta cn c cc k thut khc tt hn nh k thut kim tra phn d tun hon CRC (Cyclic Redundancy Check)

    b) K thut truyn tin cy.

    Bn gi tnh checksum ton b cc byte ca gi d liu v ng gi gi tr checksum vo phn header thnh gi tin hon chnh gi i.

    Hnh 3.25. V d v checksum

  • Gio trnh Mng my tnh c bn Chng 3.Gii thiu v giao thc TCP/IP

    Nguyn V Quc Hng. Cc CNTT-B GD&T 80

    Bn nhn khi nhn c gi tin s cn c vo gi tr checksum kim tra li, nu khng c li n to mt thng ip ACK (acknowledgement) di dng gi tin, nu c li n to thng ip NAK (Not acknowledgement). ACK hoc NAK s c gi tr bn nhn, bn nhn cn c vo truyn gi tin tip theo hoc truyn li gi tin b li.

    Hnh 3.26. S truyn tin cy

  • Gio trnh Mng my tnh c bn Chng 3.Gii thiu v giao thc TCP/IP

    Nguyn V Quc Hng. Cc CNTT-B GD&T 81

    Vi ng truyn khng tin cy cc kh nng sau y c th xy ra: Li d liu trong gi, mt gi d liu, mt gi tr li (ACK/NAK), hoc gi n tr (timeout). Chng ta nu s nguyn tc truyn tin cy trong hnh 3.26.

    3.3.2. Truyn tin cy trong TCP

    Cc ng dng gi cc dng gm cc byte 8-bit ti TCP chuyn qua mng. TCP phn chia dng byte ny thnh cc on (segment) c kch thc thch hp (thng c quyt nh da theo kch thc ca n v truyn dn ti a (MTU) ca tng lin kt d liu ca mng m my tnh ang nm trong ). Sau , TCP chuyn cc gi tin thu c ti giao thc IP gi n qua mt lin mng ti m un TCP ti my tnh ch. TCP c c ch truyn d liu song cng, d liu c truyn hai chiu trn cng mt kt ni, segment d liu c gi t bn gi n bn nhn, thng ip ACK c gi t bn nhn n bn gi.

    TCP kim tra m bo khng c gi tin no b tht lc bng cch gn cho mi gi tin mt "s th t" (sequence number). S th t ny cn c s dng m bo d liu c trao cho ng dng ch theo ng th t. M un TCP ti u kia gi li "tin bo nhn" (acknowledgement) cho cc gi tin nhn c thnh cng; mt "ng h" (timer) ti ni gi s bo time-out nu khng nhn c tin bo nhn trong khong thi gian xc nh, v d liu (c coi l b tht lc) s c gi li. TCP s dng checksum (gi tr kim tra) xem c byte no b hng trong qu trnh truyn hay khng; gi tr ny c tnh ton cho mi khi d liu ti ni gi trc khi n c gi, v c kim tra ti ni nhn.

    Mt vn rt quan trng trong iu khin truyn tin cy ca TCP l xc nh khong thi gian TimeOut (time out), nu TimeOut ngn s gy ra hin tng tc nghn v h thng tng mt gi nn truyn li, nu TimeOut di gy ra tr h thng. Ngi ta dng gi tr RTT (round-trip time) tnh gi tr TimeOut thch hp. RTT l khong thi gian trung bnh ti thiu mt tn hiu i mt vng xut pht t bn gi n bn nhn ri tr li trn mt hin trng mng xc nh, bi v hin trng mng c th thay i tu theo tng thi im nn RTT ch c gi tr trong mt khong thi gian nht nh. tnh RTT chng ta s dng cc gi tr SampleRTT (o thi gian t khi bt u truyn mt

    segment ti khi ACK c nhn li), RTT c tnh theo cng thc truy hi nh sau:

    EstimatedRTT = (1- )*EstimatedRTT + *SampleRTT

    Trong cng thc trn (0.10.2) thng ly gi tr thng dng l 0,125 v EstimatedRTT khi to chnh l SampleRTT u tin. RTT c t bng EstimatedRTT sau qu trnh ly mu. Mt v d v qu trnh tnh RTT c m t qua th hnh 4.25.

    C nhiu cch tnh gi tr time out, cch n gin nht c tnh: TimeOut = 2 * RTT

  • Gio trnh Mng my tnh c bn Chng 3.Gii thiu v giao thc TCP/IP

    Nguyn V Quc Hng. Cc CNTT-B GD&T 82

    Cch th hai, nu gi tr gia cc ln ly mu c s thay i ln ta tnh thm h s an ton qua cng thc truy hi:

    DevRTT = (1-)*DevRTT + *|SampleRTT-EstimatedRTT|

    thng thng = 0.25. Cui cng ly gi tr time out bng cng thc:

    TimeOut = EstimatedRTT + 4*DevRTT

    3.4. Chng tc nghn.

    Chng ta xem xt 2 trng thi tc nghn, tc nghn ti ni nhn v tc nghn ti mt nt no trn ng i ca gi tin. Tc nghn ti ni nhn khi s lng gi tin n qu nhiu vt qu kh nng tip nhn, gii quyt vn ny tng c bn l ta s iu khin lung gi vi tc thch hp. iu khin chng tc nghn trn ng i rt phc tp v ph thuc rt nhiu yu t.

    3.4.1. iu khin lung (Flow Control)

    Mc tiu ca iu khin lung l lm cho my gi khng lm ngp my nhn nhng t tc gi ti a, gii php chnh l my gi hn ch gi cho n khi my nhn cho php tng tc, hn ch tc gi tng thch vi tc nhn.

    a) Gii php dng v ch (Stop and Wait)

    Gi segment v ch thng ip ACK th gi tip. Giao thc ny kh n gin, khng c mt khung, khng c p khung:

    RTT: gaia.cs.umass.edu to fantasia.eurecom.fr

    100

    150

    200

    250

    300

    350

    1 8 15 22 29 36 43 50 57 64 71 78 85 92 99 106

    time (seconnds)

    RTT

    (mill

    isec

    onds

    )

    SampleRTT Estimated RTT

    Hnh 3.27. c tnh RTT qua cc gi tr mu

  • Gio trnh Mng my tnh c bn Chng 3.Gii thiu v giao thc TCP/IP

    Nguyn V Quc Hng. Cc CNTT-B GD&T 83

    /* Giao thc Stop-and-Wait cho knh d liu mt chiu t ni gi n ni nhn. Gi thit knh truyn thng khng c li. Gi thit my nhn ch c b nh hu hn v kh nng x l hu hn, do giao thc ny phi m bo khng b tc lung d liu do tc gi cao hn tc nhn. */

    typedef enum {frame_arrival} event_type; /* khai bo bin - kiu s kin*/

    #include "protocol.h" /* c trong file khai bo protocol.h */

    void sender2(void) /* Qu trnh xy ra ti my gi */

    {

    frame s; /* buffer cho khung i ra */

    packet buffer; /* buffer cho gi ra */

    event_type event; /* frame_arrival l mt kh nng */

    while (true) {

    from_network_layer(&buffer);/* kim tra buffer gi tin lp mng gi */

    s.info = buffer; /* copy vo s truyn */

    to_physical_layer(&s); /* gi khung tin tng PHY */

    wait_for_event(&event); /* khng x l cho n khi nhn thng bo */

    }

    }

    void receiver2(void)

    {

    frame r, s; /* buffers cho cc khung frames */

    event_type event; /* frame_arrival l mt kh nng */

    while (true) {

    wait_for_event(&event); /* frame_arrival l mt kh nng*/

    from_physical_layer(&r); /* ly ni dung t PHY */

    to_network_layer(&r.info); /* chuyn d liu vo tng mng */

    to_physical_layer(&s); /* gi khung gi (dummy) bo cho my gi */

    }

    }

    Xt cc tnh hung phc tp hn:

    - Tng mng ti my A gi mt packet cho tng data link. My B nhn ng gi tin v truyn ti tng mng ti B, v gi khung thng bo ACK ngc li A.

    - Khung ACK b tht lc hon ton.

    - Tng data link ti A thnh thong b ht thi hn (times out), khng nhn c ACK v cho rng (sai) khung gi b mt hoc b hng v gi li mt khung khc.

  • Gio trnh Mng my tnh c bn Chng 3.Gii thiu v giao thc TCP/IP

    Nguyn V Quc Hng. Cc CNTT-B GD&T 84

    - Khung p cng ti c tng data link ca my B v c gi ln tng mng, d liu b hng.

    V d: c thng bo nhn v gi li, xem xt giao thc PAR (Positive Acknowledgement with Retransmission) / ARQ (Automatic Repeat reQuest).

    /* Giao thc PAR truyn d liu trn knh mt chiu v khng n nh. */

    #define MAX_SEQ 1 /* t l 1 cho giao thc ny */

    typedef enum {frame_arrival, cksum_err, timeout} event_type;

    #include "protocol.h"

    void sender3(void)

    {

    seq_nr next_frame_to_send; /* s th t ca khung i ra k tip */

    frame s; /* bin s ty */

    packet buffer; /* buffer cho gi tin i ra ngoi */

    event_type event;

    next_frame_to_send = 0; /* khi to s th t ia ra ngoi */

    from_network_layer(&buffer); /* ly gi tin u tin */

    while (true) {

    s.info = buffer; /* dng khung truyn */

    s.seq = next_frame_to_send; /* t s th t vo khung */

    to_physical_layer(&s); /* gi vo tng vt l */

    start_timer(s.seq); /* nu tr li qu lu, thng bo time out */

    wait_for_event(&event); /* frame_arrival, cksum_err, timeout */

    if (event == frame_arrival) {

    from_physical_layer(&s); /* ly ACK */

    if (s.ack == next_frame_to_send) {

    stop_timer(s.ack); /* tt timer */

    from_network_layer(&buffer); /* ly gi tin tip gi */

    inc(next_frame_to_send); /* o li next_frame_to_send*/

    }

    }

    }

    }

    void receiver3(void)

    {

    seq_nr frame_expected;

    frame r, s;

    event_type event;

    frame_expected = 0;

  • Gio trnh Mng my tnh c bn Chng 3.Gii thiu v giao thc TCP/IP

    Nguyn V Quc Hng. Cc CNTT-B GD&T 85

    while (true) {

    wait_for_event(&event);/* cc kh nng: frame_arrival, cksum_err */

    if (event == frame_arrival) { /* khung hp l n */

    from_physical_layer(&r); /* nhn khung mi */

    if (r.seq == frame_expected) { /* ng gi tr ang ch i */

    to_network_layer(&r.info); /* truyn ln tng mng */

    inc(frame_expected);/* ch i s th t khc tip theo */

    }

    s.ack = 1 - frame_expected; /* cho kqu khung yu cu */

    to_physical_layer(&s); /* gi ACK */

    }

    }

    }

    i vi cc ng truyn hai chiu song cng, p dng k thut piggyback (cng) truyn ACK trn frame d liu tit kim bng thng dnh ring cho hai chiu d liu. Gii php stop-and-wait c nhc im l khng tn dng ht bng thng ca ng truyn.

    b) Gii php Ca s trt (Sliding window)

    s dng gii php ny cc gi tin c nh s th t, my nhn s s mt b m (buffer) cha cc gi tin n, my nhn v my gi u c mt ca s trt nh nhau. Ca s trt cho php gi mt s gi tin cho n khi ht buffer, m khng cn ch thng bo ACK. V d ca s nh ra l 6 gi tin. My

    Hnh 3.28. Ca s trt my gi

  • Gio trnh Mng my tnh c bn Chng 3.Gii thiu v giao thc TCP/IP

    Nguyn V Quc Hng. Cc CNTT-B GD&T 86

    gi gi ln lt 6 gi tin, nhng ch c 3 gi tin 1, 2, 3 l c ACK nhn c. Ca s gi s trt ti v tr tip theo t 4,5,6,7,8,9 gi (hnh 3.28).

    Hot ng ca giao thc ca s trt (hnh 3.29):

    - Mi gi tin khng c bo nhn c ring mt thi hn (time-out). Qu thi hn s gi li.

    - Ca s trt ti my gi v my nhn tng ng nhau.

    - Kch thc ca s c th thay i v c thng bo cho nhau gia my gi v my nhn. V d my gi c th thng bo ca s nh hn hoc l 0 my gi chm li hoc ngng vic gi gi tin. Khi buffer tr li th thng bo cho my gi tip tc gi nh ca s c.

    - TCP thng bo s th t gi k tip tnh theo byte. V d gi tin c s th t 2000, di 1000 th s th t gi tin ACK l 3000.

    c) iu khin lung trong TCP.

    Giao thc TCP s dng gii php ca s trt iu khin lu lng truyn. Bn nhn lun thng bo r rng cho bn gi kh nng tip nhn ca mnh (kh nng ny lun thay i), bn gi gi d liu gi i cha c xc nhn vi s lng nh hn kh nng tip nhn ca bn nhn. Chng ta xem xt s b nh m ca my nhn hnh 3.30. Thng s RcvWindow chnh l ln b nh m, RcvBuffer l khng gian cn kh nng tip nhn trong b m. My nhn s gi gi tr RcvBufer cho my gi bng thng s Window trong gi tin TCP (xem hnh 4.20-Cu trc gi tin TCP).

    Hnh 3.29. Hot ng ca ca s trt

  • Gio trnh Mng my tnh c bn Chng 3.Gii thiu v giao thc TCP/IP

    Nguyn V Quc Hng. Cc CNTT-B GD&T 87

    Byte u tin ca mi lung bytes s c nh s bng s th t khi u, v s ny c dn xp trong giai on bt tay 3 bc. Trng Sequence Number trong TCP segment cha s th t ca byte u tin nm trong segment . Cng nh trong giao thc ca s trt, khi bn nhn nhn c n bytes trong mt segment, bt u t byte th Sequence Number, n s bo nhn tt n bytes ny v ch nhn tip t byte th Acknowledgement (Acknowledgement = Sequence Number + n) (hnh 3.31)

    Do kch thc ca s l ng, nn trong mi khung bo nhn ca mnh, bn nhn nh km theo thng bo v kch thc ca s sn dng ca n (lng buffer cn trng), chnh l trng Window trong TCP segment. Ln sau, bn gi s khng c gi lng bytes vt qu Window.

    V d hnh 3.32, lc u bn nhn c kch thc buffer l 4 KB. Bn gi t s th t khi u l 0, sau truyn 2 KB. Buffer bn nhn cn li 2 KB

    Hnh 3.30. B m bn nhn.

    Hnh 3.31. Lung cc byte v phn on

  • Gio trnh Mng my tnh c bn Chng 3.Gii thiu v giao thc TCP/IP

    Nguyn V Quc Hng. Cc CNTT-B GD&T 88

    rng, do n bo nhn Ack = 2048, Win = 2048. Bn gi gi tip 2 KB, khi buffer bn nhn b y, n lin bo nhn Ack = 4096, Win= 0. Khng cn buffer nhn, nn bn gi s tm thi b nghn. Sau khi bn nhn x l xong 2 KB, n lin bo Ack = 4096, Win = 2048. Lc ny bn gi c th gi tip ti a l 2 KB, nhng n ch cn 1 KB d liu gi m thi.

    3.4.2. Chng tc nghn.

    iu khin lung l tc ng vo lu lng gi cho ph hp vi kh nng ca bn nhn, n ch lin quan n mt cp thc th gi-nhn. Tc nghn xy ra khi lu lng tin i vo vt qu lu lng i ra ti mt router no trn ng i v c th tc nghn khng ch ti mt router. Tc nghn lin quan n t l mt gi tin vi hai yu t - ht hn thi gian v cc gi tin b p.

    Tc nghn c th xy ra i vi mng phc hp cc knh truyn bng thng khc nhau, cc thit b router c kh nng x l v buffer khc nhau. Cc biu hin trng thi mt gi tin khi trn b m ti buffer ca router hoc

    Hnh 3.32. V d v iu khin lu lng trong TCP

  • Gio trnh Mng my tnh c bn Chng 3.Gii thiu v giao thc TCP/IP

    Nguyn V Quc Hng. Cc CNTT-B GD&T 89

    tr truyn tin qu ln (v cc gi tin phi xp hng ti router). Chng ta xem xt cc trng hp c th gy ra tc nghn.

    V d th nht c hai my gi v hai my nhn. D liu c truyn qua mt router vi b m v hn v khng phi truyn li gi tin (xem hnh 3.33). Cu hnh mng ny khng gy mt gi tin v b m lun kh nng cha nhng gy ra tr rt ln nu xy ra tc nghn (cc gi tin xp hng trong router) nhng hiu qu l n cho php gi d liu vi thng lng ti a ca

    ng truyn. Ta gi in l lu lng u vo v out l lu lng u ra th

    mi quan h khi t ti u l in = out v tr (delay) c m t trong th hnh 3.34

    V d th hai c hai my gi v hai my nhn. D liu c truyn qua mt

    router vi b m c hn, c th gy mt gi tin, phi truyn li. Ta gi in l

    lu lng gi c tnh c gi li gi tin. Mng trng thi tt khi in = out, nu

    truyn li hon ho th in > out, nu thm c trng thi tr th in >>

    out (ln hn rt nhiu)

    Hnh 3.33. Mng vi router c buffer v hn

    Hnh 3.34. th quan h gia in v out

  • Gio trnh Mng my tnh c bn Chng 3.Gii thiu v giao thc TCP/IP

    Nguyn V Quc Hng. Cc CNTT-B GD&T 90

    Hnh 3.35. Mng vi router c buffer c hn

    Hnh 3.36. th quan h gia in, in v out

    Hnh 3.37. Mng 4 host vi 4 router c buffer hu hn

  • Gio trnh Mng my tnh c bn Chng 3.Gii thiu v giao thc TCP/IP

    Nguyn V Quc Hng. Cc CNTT-B GD&T 91

    V d th 3 c 4 my va gi va nhn d liu c i qua 4 router, cc router c b m hu hn (hnh 3.37). Vi cu hnh ny rt c th tc nghn gy ra mt gi tin phi truyn li v tr c th rt ln lm time out lun xy ra. Tc nghn nghim trng nh trong th hnh 3.38.

    kim sot tc nghn chng ta a vo mt thng s iu khin gi l ca s chng tc nghn (CongWin Congestion Window). Ta dng thng s ny iu khin lu lng gi khi pht

    hin tc nghn qua tc nhn c gi tin tr li ACK. Thng s congwin c th bao gm s lng gi tin gi nhng cha nhn c ACK (send_base) v s lng gi tin cn gi nhng cha gi c (nextseqnum).

    Nguyn tc iu khin tc nghn khng c s h tr ca mng l dng thm d. Gi s mng khng nghn th ta cn truyn nhanh nht c th, lc ny dng congwin cng ln cng tt. Nh vy ta d tm gi tr congwin ln nht c th c ph hp vi bng thng bng cch tng dn congwin n khi bt u mt d liu, tc l bt u tc nghn. Trong trng hp bt u tc nghn ta gim dn congwin n khi khng mt d liu na th dng. Qu trnh thm d v iu khin ta dng thm mt thng s ngng gi (threshold), ngng ny xc nh n gin nht l nh hn ca s nhn.

    Thut ton Slow Start - khi u chm

    - Khi u congwin t bng 1 gi tin. My gi truyn 1 gi TCP v ch

    ACK. Khi nhn c ACK th congwin tng thm 1.

    - Tc gi ln nht s nh hn gia congwin v threshold.

    - Thut ton ny cho php tng/gim tc t t.

    {

    Hnh 3.38. th quan h gia in v out

    Hnh 3.39. M hnh congwin

  • Gio trnh Mng my tnh c bn Chng 3.Gii thiu v giao thc TCP/IP

    Nguyn V Quc Hng. Cc CNTT-B GD&T 92

    Khi ng: congwin = 1;

    Repeat

    Mi gi tin TCP c ACK;

    Congwin = congwin + 1;

    Until (S kin dng OR congwin> threshold)

    }

    S kin dng y l TimeOut hoc/v 3 ln nhn ACK trng lp.

    Chng ta cng c th dng gii php iu khin tc nghn gi l Fast Star (khi u nhanh). Chng ta khi u vi thng lng nhanh nht c th i vi thng lng l tng ca mng, trong trng hp ny gi tr congwin c th ln hn ngng threshold. Khi bt u gp tc nghn ta mi iu chnh lu lng theo nguyn tc AIMD (Additive Increase, Multiplicative Decrease).

    { /* B qua khi u chm; congwin > threshold */

    Repeat

    If (Mi gi tin TCP trong congwin c ACK) then

    Congwin ++;

    Until (Mt gi tin)

    Threshold = congwin/2;

    Congwin = 1;

    Do (Slow Star)

    }