Adatkapcsolati réteg. Szállítási réteg

Hasonló dokumentumok
A szállítói réteg (transport layer) szolgáltatásai. Számítógépes Hálózatok Szállítói réteg (transport layer) Multiplexálás a szállítói rétegben

A szállítói réteg (transport layer) szolgáltatásai. Számítógépes Hálózatok Szállítói réteg (transport layer) Multiplexálás a szállítói rétegben

Hálózati architektúrák laborgyakorlat

Számítógépes Hálózatok 2012

Számítógépes Hálózatok

TCP ÉS UDP. Médiakommunikációs hálózatok (VIHIM161) évi fóliái alapján készült. Dr. Lencse Gábor

A szállítói réteg (transport layer) szolgáltatásai. Számítógépes Hálózatok Szállítói réteg (transport layer) Multiplexálás a szállítói rétegben

A szállítói réteg (transport layer) szolgáltatásai. Számítógépes Hálózatok Szállítói réteg (transport layer) Multiplexálás a szállítói rétegben

Számítógépes Hálózatok és Internet Eszközök

Hibadetektáló és javító kódolások

SZÁLLÍTÁSI (TRANSPORT, HOST- TO-HOST) PROTOKOLLOK

Dr. Wührl Tibor Ph.D. MsC 05 Ea. Szállítási protokollok - Bevezetés

TCP ÉS UDP. Médiakommunikációs hálózatok (VIHIM161) Médiatechnológiák és -kommunikáció szakirány. Dr. Lencse Gábor

Számítógép-hálózatok A felsőbb rétegek

Szállítási réteg (L4)

A szállítói réteg (transport layer) szolgáltatásai. Számítógépes Hálózatok Szállítói réteg (transport layer) Multiplexálás a szállítói rétegben

Számítógépes Hálózatok 2011

Számítógépes Hálózatok

32 bit (4 bájt) Destination Port 8 bájt. Source Port. DATA, ha van

32 bit (4 bájt) Destination Port 8 bájt. Source Port. DATA, ha van

Szállítási réteg (L4)

24. fejezet A szállítási réteg

[SZÁMÍTÓGÉP-HÁLÓZATOK]

SzIP kompatibilis sávszélesség mérések

Elosztott rendszerek

KANDÓ KÁLMÁN VILLAMOSMÉRNÖKI KAR HÍRADÁSTECHNIKA INTÉZET. Szállítási réteg vizsgálata Wireshark analizátorral. Dr. Wührl Tibor Dr.

Operációs rendszerek és hálózatok GEIAL501M A szállítási réteg

Számítógépes Hálózatok ősz Szállítói réteg TCP, Tahoe, Reno, AIMD, Fairness, hatékonyság

3-4. Transmission Control Protocol

Hálózati architektúrák laborgyakorlat

Távközlési informatika II.

8. Szállítói réteg TCP Tahoe, Reno, AIMD, hatékonyság, fairness. HálózatokII, 2007

Számítógépes hálózatok

URL-LEL ADOTT OBJEKTUM LETÖLTÉSE (1) URL-LEL ADOTT OBJEKTUM LETÖLTÉSE

I. Házi Feladat. internet. Határidő: V. 30.

Hálózati architektúrák és Protokollok GI 8. Kocsis Gergely

Project Report (1998)

Department of Software Engineering

Számítógépes Hálózatok. 3. gyakorlat

Nagy sebességű TCP. TCP Protokollok

Tűzfalak működése és összehasonlításuk

BEÁGYAZOTT RENDSZEREK TERVEZÉSE UDP csomag küldése és fogadása beágyazott rendszerrel példa

8. Szállítói réteg TCP Tahoe, Reno, AIMD, hatékonyság, fairness. HálózatokII, 2006

Hálózatok Rétegei. Számítógépes Hálózatok és Internet Eszközök. TCP/IP-Rétegmodell. Az Internet rétegei - TCP/IP-rétegek

Számítógépes Hálózatok GY 3-4.hét

Hálózatkezelés. Tóth Zsolt. Miskolci Egyetem. Tóth Zsolt (Miskolci Egyetem) Hálózatkezelés / 20

Számítógépes Hálózatok

* Rendelje a PPP protokollt az TCP/IP rétegmodell megfelelő rétegéhez. Kapcsolati réteg

Az IP hálózati protokoll

Adatátviteli rendszerek Mobil IP. Dr. habil Wührl Tibor Óbudai Egyetem, KVK Híradástechnika Intézet

Socket programozás Példák

Transmission Control Protocol (TCP) (a működés alapelvei)

MULTIMÉDIA TOVÁBBÍTÁSA AZ IP FELETT

Kommunikáció - Wi-Fi, Mobil internet - Bluetooth - GSM / GPRS és SMS - NFC

Dr. Wührl Tibor Ph.D. MsC 04 Ea. IP kapcsolás hálózati réteg

Kommunikáció Androidon Mobilinternet Wifi

E Q U I C O M M é r é s t e c h n i k a i K f t. H B u d a p e s t, M á t y á s k i r á l y u T. : F.

Java bevezet o Kab odi L aszl o Kab odi L aszl o Java bevezet o

Számítógépes hálózatok GY

Számítógépes hálózatok I.

Számítógépes Hálózatok GY 6.hét

LAN Technológiák. Osztott médium hálózatok. LAN-ok

Számítógépes Hálózatok

Transmission Control Protocol (TCP) (a működés alapelvei)

Programozható vezérlő rendszerek KOMMUNIKÁCIÓS HÁLÓZATOK 2.

A szállítási szolgálat

Számítógép hálózatok

Az adott eszköz IP címét viszont az adott hálózat üzemeltetői határozzákmeg.

1. Gyakorlat: Telepítés: Windows Server 2008 R2 Enterprise, Core, Windows 7

Dr. Varga Imre. Socket-programozás. C nyelven

Az Internet működésének alapjai

TRANSMISSION CONTROL PROTOCOL (TCP) bevezetés1

Számítógépes Hálózatok. 7. gyakorlat

Az Ethernet példája. Számítógépes Hálózatok Az Ethernet fizikai rétege. Ethernet Vezetékek

Számítógépes Hálózatok. 4. gyakorlat

Autóipari beágyazott rendszerek. A kommunikáció alapjai

Kommunikációs rendszerek programozása. Voice over IP (VoIP)

Nagyteljesítményű mikrovezérlők TCP/IP

Ethernet/IP címzés - gyakorlat

Előnyei. Helyi hálózatok tervezése és üzemeltetése 2

Számítógépes Hálózatok GY 7.hét

Számítógépes Hálózatok. 5. gyakorlat

Ja J v a a v a há h l á óz ó a z t a i al a ka k l a maz ma á z s á o s k o Socket, URL

Hálózati architektúrák és Protokollok GI - 9. Kocsis Gergely

UDP idő szerver. UDP protokollal kapcsolatos ismeretek elmélyítése. Egy UPP protokollt használó időszerver megvalósítása

Tartalom. Az adatkapcsolati réteg, Ethernet, ARP. Fogalma és feladatai. Adatkapcsolati réteg. Ethernet

Tartalom. Hálózati kapcsolatok felépítése és tesztelése. Rétegek használata az adatok továbbításának leírására. OSI modell. Az OSI modell rétegei

Kommunikáció. Távoli eljáráshívás. RPC kommunikáció menete DCE RPC (1) RPC - paraméterátadás. 3. előadás Protokollok. 2. rész

Hibafelismerés: CRC. Számítógépes Hálózatok Polinóm aritmetika modulo 2. Számolás Z 2 -ben

Hálózatok. Alapismeretek. A hálózatok célja, építőelemei, alapfogalmak

Dr. Varga Imre Debreceni Egyetem, Informatikai Kar. Socket-programozás. C nyelven, Linux alatt

Számítógép-hálózatok: 4. Labor. TCP kliens. A gyakorlat célja:

Hálózati Technológiák és Alkalmazások. Vida Rolland, BME TMIT november 5. HSNLab SINCE 1992

Torlódásvezérlés nélküli transzport protokoll teljesítményelemzése Emulab hálózatemulációs környezetben

A TCP/IP számos adatkapcsolati réteggel együtt tud működni:

Adatkapcsolati réteg. A TCP/IP számos adatkapcsolati réteggel együtt tud működni: Ethernet, token ring, FDDI, RS-232 soros vonal, stb.

Számítógépes Hálózatok

A TCP/IP modell szállítási rétege

Csak felvételi vizsga: csak záróvizsga: közös vizsga: Mérnök informatikus szak BME Villamosmérnöki és Informatikai Kar május 30.

Számítógépes Hálózatok GY 4.hét

Átírás:

2 Működési terület Adatkapcsolati réteg Szállítási réteg

3 Szállítási protokoll Alkalmazások, folyamatok között üzenetek garantált célbajuttatása üzenetek szállítása a megfelelő sorendben minden üzenetből csak egy példány eljuttatása tetszőleges hosszúságú üzenetek küldő és fogadó szinkronizációja fogadó szabályozhassa a küldést több alkalmazási folyamat ugyanazon a gépen

4 Szállítási protokoll (folyt.) megoldandó problémák (hálózatok jellemzői) üzenet vesztés üzenetek rossz sorrendbenérkeznek duplikált üzenetek korlátos üzenet méret tetszőlegesen nagy késleltetések

5 Multiplexelés, demultiplexelés TPDU szállítási réteg cím TSAP port segment header alkalmazási réteg adat segment Ht M Hn segment P1 M application transport network vevő M application transport network M M P2 application transport network

6 Internet szállítási szolgáltatások Megbízható, sorrendtartó unicast (TCP) torlódáskezelés adatfolyam szabályozás kapcsolat menedzselés Nem megbízható unicast vagy multicast (UDP) Nem megoldott szolgáltatások valósidejű garantált sávszélesség megbízható multicast

7 TCP, UDP/IP megvalósítások Alkalmazások TCP output Alkalmazások UDP output TCP input proc UDP portok control messages TCP timer TCP proc TCP sor O.R. IP sor O.R. IP proc IP proc IP sorok Dev1 Dev2 Devn Dev1 Dev2 Devn HW NI1 HW NI2 Hardver HW NIn HW NI1 HW NI2 Hardver HW NIn

8 Kapcsolat nélküli szállítás (UDP) kapcsolat nélküli folyamat-folyamat kommunikáció demultiplexálás portokra 16 bites port címek nem megbízható, nincs átvitel vezérlés

9 UDP Előnyök nincs kapcsolat felépítési késleltetés egyszerű nem kell kapcsolat menedzselés kis szegmens header nincs torlódás kezelés azonnali csatornára kerülés

10 UDP (folyt.) UDP felhasználás média streamelés DNS SNMP 0 16 31 SrcPort DstPort Checksum Length Data UDP szegmens

11 Megbízható szállítás Kapcsolat felvétel Kapcsolat bontás Adatfolyam szabályzás és pufferelés Multiplexelés Hibakezelés

12 Megbízható szállítás (folyt.) A megbízhatatlan csatorna (hálózati szolgáltatás) határozza meg a szállítási megoldás bonyolultságát Küld! folyamat Fogadó folyamat Alkalmazási réteg Megbízható csatorna Szállítási réteg RDT protokoll RDT protokoll Nem megbízható csatorna Hálózati réteg

13 Szállítási szolgáltatásprimitívek Alapvető funkciók a szállítási szolgáltatás használatára Primitív Listen Connect Send Receive Disconnect Jelentés Folyamat blokkolása kapcsolatfelvételi kérésig Aktív kapcsolatfelvétel Adatküldése a kapcsolaton Adat fogadása a kapcsolaton Kapcsolat bontása

14 Szállítási szolgáltatásprimitívek (folyt.) Nincs kapcsolat Passzív kapcsolatfelvétel folyamatban Aktív kapcsolatfelvétel folyamatban Szerver oldal Kapcsolat felépítve Kliens oldal Passzív kapcsolatbontás folyamatban Aktív kapcsolatbontás folyamatban Nincs kapcsolat A kapcsolat állapotgépe

15 Kapcsolat felvétel Nem hibamentes hálózat - többszörös kapcsolat felvételt meg kell előzni Rossz megoldások minden átvitelhez új cím kapcsolat azonosítók használata Jó megoldás csomagokhoz TTL szekvenciaszám <- óra csúszó ablakos algoritmus tiltott terület

16 Kapcsolat felvétel (folyt.) Háromutas kézfogás CR (seq=x) ACK (seq=y, ack=x) DATA (seq=x, ack=y)

17 Kapcsolat bontása Cél az adatvesztés elkerülése Két hadsereg probléma Megoldás háromutas kézfogás DR Timer DR ACK Timer

18 TCP Kapcsolat orientált Bájtfolyam Full duplex Adatfolyam szabályozás Torlódás kezelés Alkalmazás folyamat alkalmazás folyamat bájtok írása bájtok olvasása TCP Send buffer TCP Receive buffer Segment Segment Segment Szegmensek átvitele

19 Végpont-végpont adattovábbítás Problémák Explicit kapcsolat felvétel és bontás Különböző RTT-k Nagy hálózati késleltetések Torlódás felléphet

20 TCP szegmens Kapcsolat azonosítás <SrcIPAddr, SrcPort,DestIPAddr,DestPort> 0 4 10 16 31 SrcPort DstPort SequenceNum Acknowledgment HdrLen 0 Flags Checksum AdvertisedWindow UrgPtr Options (variable) Data

21 TCP adatfolyam szabályozás Fejléc mezők Csúszóablakos adatfolyam szabályozás SequenceNum, Acknowledgement, AdvertisedWindow Flagek SYN, FIN, RST, PSH, URG, ACK Checksum pseudo header+tcp header+data

22 TCP kapcsolatfelvétel Háromutas kézfogás Aktív fél (kliens) SYN, SequenceNum = x Passzív fél (szerver) SYN + ACK, SequenceNum = y, Acknowledgment = x + 1 ACK, Acknowledgment = y + 1

23 TCP kapcsolatbontás Kliens Szerver close FIN ACK FIN close timed wait closed ACK

24 TCP kapcsolatmodell Állapot Leírás CLOSED Nincs nyitott vagy függő kapcsolat. LISTEN Szerver bejövő kapcsoaltra vár. SYN RCVD Kapcsolat felvételi kérés érkezett. SYN SENT Kapcsolat felvétel kezdeményezése megtörtént. ESTABLISHED Kapcsolat felépítve, adatátvitel. FIN WAIT 1 Alkalmazás a kapcsolat bontását kezdeményezte. FIN WAIT 2 Másik fél is egyetért a kapcsolat bontással. TIMED WAIT Várakozás a csomagok kihalására. CLOSING Szimultán kapcsolat bontási kísérlet. CLOSE WAIT Másik oldal kapcsolatbontást kezdeményezett. LAST ACK Várakozás az utolsó nyugtára.

25 TCP kapcsolat állapotgép CLOSED Active open/syn Passive open Close Close LISTEN SYN_RCVD SYN/SYN + ACK Send/SYN SYN/SYN + ACK ACK SYN + ACK/ACK SYN_SENT Close/FIN ESTABLISHED FIN_WAIT_1 ACK Close/FIN FIN/ACK ACK + FIN/ACK FIN/ACK CLOSE_WAIT Close/FIN FIN_WAIT_2 CLOSING LAST_ACK FIN/ACK ACK TIME_WAIT Timeout after two segment lifetimes ACK CLOSED

26 TCP szekvenciaszámok Szekvenciaszám a szegmensben lévő első adatbájt streambeli száma Nyugta a következő várt adatbájt streambeli száma kumulatív nyugták Data (SequenceNum) Sender Receiver Acknowledgment + AdvertisedWindow

27 TCP nyugták Esemény Vevő oldali történés szegmens érkezik sorrendben, nincs rés, eddig minden nyugtázva szegmens érkezik sorrendben, nincs rés, késleltett nyugtázás folyamatban szegmens érkezik nem sorrendben, rés keletkezik szegmens érkezik, mely a rés elejét betömi késleltett nyugtaküldés nyugtaküldés duplikált nyugta küldése az első várt bájtra nyugtaküldés

28 TCP output processz egy lehetséges TCP output megvalósítás send IDLE all segments & ACKs sent TRANSMIT all segments & ACKs sent retr. timer expires ACK arrives zero window window becomes nonzero RETRANSMIT PERSIST retr. times expires persist timer expires

29 Újraküldési helyzetek Host A Host B Host A Host B Seq=92, 8 bytes data timeout Seq=92, 8 bytes data X sérülés ACK=100 Seq=92, 8 bytes data Seq=100 timeout Seq=92 timeout Seq=100, 20 bytes data ACK=100 ACK=120 Seq=92, 8 bytes data ACK=100 ACK=120 idő elveszett ACK scenárió korai timeout, cumulative ACKs

30 Csúszóablakos adatfolyam szabályozás Küldő alkalmazás Fogadó alkalmazás TCP TCP LastByteWritten LastByteRead LastByteAcked LastByteSent NextByteExpected LastByteRcvd

31 Adatfolyam szabályozás Küldő puffer mérete: MaxSendBuffer Fogadó puffer mérete: MaxRcvBuffer Fogadó oldal LastByteRcvd - NextByteRead MaxRcvBuffer AdvertisedWindow = MaxRcvBuffer - (LastByteRcvd - NextByteRead)

32 Adatfolyam szabályozás (folyt.) Küldő oldal NextByteExpected LastByteRcvd + 1 LastByteSent - LastByteAcked AdvertisedWindow EffectiveWindow = AdvertisedWindow - (LastByteSent - LastByteAcked) LastByteWritten - LastByteAcked MaxSendBuffer küldő blokkolása ha (LastByteWritten - LastByteAcked) + y > MaxSendBuffer

33 A szekvenciaszám tartomány 32 bites szekvencia szám Sávszélesség T1 (1.5Mbps) Ethernet (10Mbps) T3 (45Mbps) FDDI (100Mbps) STS-3 (155Mbps) STS-12 (622Mbps) STS-24 (1.2Gbps) Átfordulási idő 6.4 hours 57 minutes 13 minutes 6 minutes 4 minutes 55 seconds 28 seconds 16 bites AdvertisedWindow RTT 100 ms Sávszélesség T1 (1.5Mbps) Ethernet (10Mbps) T3 (45Mbps) FDDI (100Mbps) STS-3 (155Mbps) STS-12 (622Mbps) STS-24 (1.2Gbps) Késleltetés x Sávszélesség 18KB 122KB 549KB 1.2MB 1.8MB 7.4MB 14.8MB

34 Implementálási részletek TCP állapotgép megvalósítása Tábla-vezérelt állapot-esemény kétdimenziós fv. pointer-táblázat Eljárás-vezérelt eljárás minden lehetséges bejövő állapothoz

35 Implementálási részletek (folyt.) Ellenőrző összeg unsigned short tcpcksum(struct ep *pep, unsigned len) { struct ip *pip = (struct ip *)pep->ep_data; struct tcp *ptcp = (struct tcp *)pip->ip_data; unsigned short *sptr; unsigned long tcksum; unsigned i; tcksum = 0; sptr = (unsigned short *) &pip->ip_src; /* 2*IP_ALEN octets = IP_ALEN shorts... */ /* they are in net order. */ for (i=0; i<ip_alen; ++i) tcksum += *sptr++; sptr = (unsigned short *)ptcp; tcksum += hs2net(ipt_tcp + len); if (len % 2) { ((char *)ptcp)[len] = 0; /* pad */ len += 1; /* for the following division */ } len >>= 1; /* convert to length in shorts */ for (i=0; i<len; ++i) tcksum += *sptr++; tcksum = (tcksum >> 16) + (tcksum & 0xffff); tcksum += (tcksum >> 16); } return (short)(~tcksum & 0xffff);

36 Implementálási részletek (folyt.) Silly Window szindróma int tcprwindow(struct tcb *ptcb) { int window; } window = ptcb->tcb_rbsize - ptcb->tcb_rbcount; if (ptcb->tcb_state < TCPS_ESTABLISHED) return window; /* * Receiver-Side Silly Window Syndrome Avoidance: * Never shrink an already-advertised window, but wait for at * least 1/4 receiver buffer and 1 max-sized segment before * opening a zero window. */ if (window*4 < (int)ptcb->tcb_rbsize window < (int)ptcb->tcb_rmss) window = 0; window = max(window, ptcb->tcb_cwin - ptcb->tcb_rnext); ptcb->tcb_cwin = ptcb->tcb_rnext + window; return window;

37 Implementálási részletek (folyt.) Urgent feldolgozás Urgent flag bit Urgent pointer (adatok vége) Push feldolgozás Push flag Puffer kiürítése vevő felébresztése

38 TCP torlódáskezelés sávszélesség kihasználása max. Congwin növelés csomag vesztésig csökkentés két fázis lassú kezdés torlódás elkerülés küszöbérték

39 TCP slowstart Slowstart algoritmus initialize: Congwin = 1 for (each segment ACKed) Congwin++ until (loss event OR CongWin > threshold) RTT Hoszt A Hoszt B 1 szegmens 2 szegmens 4 szegmens idő

40 TCP Tahoe TCP Tahoe Congestion avoidance /* slowstart is over */ /* Congwin > threshold */ Until (loss event) { every w segments ACKed: Congwin++ } threshold = Congwin/2 Congwin = 1 perform slowstart

41 TCP Reno TCP Reno Congestion avoidance /* slowstart is over */ /* Congwin > threshold */ Until (loss event) { every w segments ACKed: Congwin++ } threshold = Congwin/2 If (loss detected by timeout) { Congwin = 1 perform slowstart } If (loss detected by triple duplicate ACK) Congwin = Congwin/2 congestion window size (segments) 14 12 10 8 6 4 2 0 threshold 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 Transmission round TCP Tahoe TCP Reno

42 TCP fast retransmit 70 60 50 B K 40 30 20 10 1.0 2.0 3.0 4.0 5.0 6.0 7.0 8.0 9.0 Time (seconds) 70 60 50 B40 K30 20 10 1.0 2.0 3.0 4.0 5.0 6.0 7.0 Time (seconds)

43 TCP Vegas B K s p B K 70 60 50 40 30 20 10 g 1100 n r i 900 d e 700 n t 500 e u o 300 S r 100 n i 0.5 1.0 1.5 2.0 2.5 3.0 3.5 4.0 4.5 5.0 5.5 6.0 6.5 7.0 7.5 8.0 8.5 Time (seconds) 0.5 1.0 1.5 2.0 2.5 3.0 3.5 4.0 4.5 5.0 5.5 6.0 6.5 7.0 7.5 8.0 8.5 Time (seconds) e z i s e u e u Q 10 5 0.5 1.0 1.5 2.0 2.5 3.0 3.5 4.0 4.5 5.0 5.5 6.0 6.5 7.0 7.5 8.0 8.5 Time (seconds)

44 TCP Vegas (folyt.) let BaseRTT be the minimum of all measured RTTs (commonly the RTT of the first packet) if not overflowing the connection, then ExpectedRate = CongestionWindow / BaseRTT source calculates current sending rate (ActualRate) once per RTT source compares ActualRate with ExpectedRate Diff = ExpectedRate - ActualRate if Diff < a increase CongestionWindow linearly else if Diff > b decrease CongestionWindow linearly else B K 70 60 50 40 30 20 10 leave CongestionWindow unchanged 0.5 1.0 1.5 2.0 2.5 3.0 3.5 4.0 4.5 5.0 5.5 6.0 6.5 7.0 7.5 8.0 Time (seconds) s p B240 K200 160 M120 A 80 C 40 0.5 1.0 1.5 2.0 2.5 3.0 3.5 4.0 4.5 5.0 5.5 6.0 6.5 7.0 7.5 8.0 Time (seconds)

45 TCP AIMD tisztességessége R egyenlő sávszélesség Kapcsolat 2 átvitele kapcsolat 1 átvitele R

46 Adaptív újraküldés Eredeti algoritmus Measure SampleRTT for each segment/ack pair Compute weighted average of RTT EstimatedRTT = α x EstimatedRTT + β x SampleRTT where α + β = 1 α between 0.8 and 0.9 β between 0.1 and 0.2 Minták Átlag Set timeout based on EstimatedRTT TimeOut = 2 x EstimatedRTT

47 Karn/Partridge algoritmus Küldő Fogadó Küldő Fogadó Eredeti küldés Eredeti küldés Mért RTT Újraküldés ACK Mért RTT ACK Újraküldés Újraküldéskor ne mérjünk Újraküldés esetén Timeout=2*Timeout

48 Jacobson/Karel algoritmus Diff = SampleRTT - EstimatedRTT EstimatedRTT = EstimatedRTT + (δ x Diff) Deviation = Deviation + δ( Diff - Deviation) where δ is a fraction between 0 and 1 TimeOut = μ x EstimatedRTT + φ x Deviation where μ = 1 and φ = 4 T i m e O u t 11 10 9 8 7 6 5 4 3 2 1 RTT: 1 -> 5 Time

49 TCP kiterjesztések Opcionális fejlécként megvalósítva 32 bites időbélyeg a szekvenciaszám tartomány kiterjesztésére advertisedwindow skálázott használata

50 Berkeley Socket API Primitív SOCKET BIND LISTEN ACCEPT CONNECT SEND RECEIVE CLOSE Jelentés Új hálózati komm. végpont létrehozása. Cím hozzárendelése a sockethez. Kapcsolat fogadás engedélyezése. Blokkolás bejövő kapcsolatig. Aktív kapcsolódás. Adatküldés. Adatfogadás. Kapcsolat lezárása.

51 Socket API TCP példa import java.io.*; import java.net.*; class TCPClient { public static void main(string argv[]) throws Exception { String sentence; String modifiedsentence; BufferedReader infromuser = new BufferedReader(new InputStreamReader(System.in)); Socket clientsocket = new Socket("hostname", 6789); DataOutputStream outtoserver = new DataOutputStream(clientSocket.getOutputStream()); BufferedReader infromserver = new BufferedReader(new InputStreamReader(clientSocket.getInputStream())); sentence = infromuser.readline(); outtoserver.writebytes(sentence + '\n'); modifiedsentence = infromserver.readline(); System.out.println("FROM SERVER: " + modifiedsentence); } } clientsocket.close(); Kliens

52 Socket API TCP példa (folyt.) import java.io.*; import java.net.*; class TCPServer { public static void main(string argv[]) throws Exception { String clientsentence; String capitalizedsentence; ServerSocket welcomesocket = new ServerSocket(6789); while(true) { Socket connectionsocket = welcomesocket.accept(); BufferedReader infromclient = new BufferedReader(new InputStreamReader(connectionSocket.getInputStream())); DataOutputStream outtoclient = new DataOutputStream(connectionSocket.getOutputStream()); clientsentence = infromclient.readline(); capitalizedsentence = clientsentence.touppercase() + '\n'; } } } outtoclient.writebytes(capitalizedsentence); Szerver