Overview
1. Transport services and Protocols
- ์๋ก ๋ค๋ฅธ ํธ์คํธ๋ค์ ์คํ์ค์ธ ์ฑ ํ๋ก์ธ์ค ๊ฐ์
logical communication์ ์ ๊ณตํ๋ค - Transport protocols in end sides
- Sender : ๋ฉ์์ง๋ฅผ ๋ถ๋ถ(segments)๋ก ์๋ผ์ network layer์๊ฒ ๋๊ฒจ์ค
- Receiver : ํฉ์ด์ ธ์๋ ์กฐ๊ฐ๋ค์ ๋ชจ์ ๋ฉ์์ง๋ก ๋ง๋ค์ด์ app layer์ ๋๊ฒจ์ค
Internet Transport-Layer Protocols
- TCP
- Reliable, in-order delivery
- ํผ์ก ์ ์ด (Congestion control)
- ํ๋ฆ ์ ์ด (Flow control)
- Connecition setup ํ์
- UDP
- Unreliable, unordered delivery
- "best-effort" IP ์ ๊ธฐ๋ฅ ํ์ฅ์ด ์๋ค
๋ ๋ค
- ์ง์ฐ์ ๋ํ ๋ณด์ฅ X (No delay guarantees)
- ๋์ญํญ ๋ณด์ฅ X (No bandwidth guarantees)
2. Multiplexing and demultiplexing
Multiplexing at sender
: ์ฌ๋ฌ ์์ผ์์ data๋ฅผ ๊ด๋ฆฌํ๊ณ , transport header์ ์ถ๊ฐํ๋ค
์ด ๋ ์ถ๊ฐํ ํค๋๋ฅผ receiver์์ demultiplexing ํ๋๋ฐ ์ฌ์ฉํ๋ค.
Demultiplexing at receiver
: ํค๋์ ์ ๋ณด๋ฅผ ํ์ฉํด์ ์ ์ ํ ์์ผ์ผ๋ก segments๋ฅผ ์ ๋ฌํ๋ค.
Demultiplexing ์ ์๋ ๋ฐฉ๋ฒ
- ํธ์คํธ๋ IP datagrams์ ๋ฐ๋๋ค.
- ๊ฐ datagram์ source IP์ dest IP ์ฃผ์, ํฌํธ๋๋ฒ๋ฅผ ๊ฐ์ง๊ณ ์๋ค
- ๋ ๊ทธ๋ค์ ํ๋์ transport-layer segment๋ฅผ ๊ฐ์ง๊ณ ์๋ค
- ํธ์คํธ๋ IP ์ฃผ์์ ํฌํธ ๋๋ฒ๋ฅผ ์ด์ฉํด์ ์ด segment๋ฅผ ์ ์ ํ ์์ผ์ผ๋ก ๋ณด๋ด์ค๋ค.
Connectionless Demultiplexing // ์ฐ๊ฒฐ ์๋ ๋๋ฉํฐํ๋ ์ฑ (UDP)
Recall
- ๋ง๋ค์ด์ง ์์ผ์ ํธ์คํธ์ ๋ก์ปฌ ํฌํธ ๋๋ฒ๋ฅผ ๊ฐ์ง๊ณ ์๋ค.
DatagramSocket mySocket1 = new DatagramSocket(12534);
- datagram์ ๋ง๋ค์ด์ UDP ์์ผ์ผ๋ก ๋ณด๋ด๋ ค๋ฉด Destination IP ์ฃผ์์ ํฌํธ ๋๋ฒ๋ฅผ ์ง์ ํด์ค์ผ ํจ.
- ํธ์คํธ๊ฐ UDP segment๋ฅผ ๋ฐ์ผ๋ฉด ์ผ๋จ segment์ ์๋ ๋ชฉ์ ํฌํธ ๋๋ฒ๋ฅผ ์ฒดํฌํ๊ณ
- UDP segment๋ฅผ ๊ทธ ํฌํธ ๋๋ฒ๋ฅผ ๊ฐ์ง ์์ผ์ผ๋ก ๋ณด๋ธ๋ค
-> ๋ง์ฝ IP datagram์ด ๊ฐ์ ๋ชฉ์ ํฌํธ ๋๋ฒ๋ฅผ ๊ฐ์ง๊ณ ์๋ค๋ฉด source IP address๋ source port #๊ฐ ๋ค๋ฅด๋๋ผ๋ ๊ฐ์ ์์ผ์ ๋ค์ด๊ฐ๋ค.
Connection-Oriented Demux // ์ฐ๊ฒฐ ์งํฅ ๋๋จน์ค (TCP)
- TCP ์์ผ์ "source IP address, source port #, dest IP address, dest port #" ๋ก ๊ตฌ๋ณ๋๋ค
- demux : receiver๋ ์ด 4๊ฐ์ ๊ฐ์ ์ ์ ํ ์์ผ์ ์ฐพ๋๋ฐ ์ ! ๋ถ ! ์ด์ฉํ๋ค!
- ์๋ฒ ํธ์คํธ๋ ๋์์ ์ฌ๋ฌ๊ฐ์ TCP ์์ผ์ ๊ฐ๋นํ ์ ์๋ค.
- ์น ์๋ฒ๋ ์ฐ๊ฒฐํ๋ ํด๋ผ์ด์ธํธ์ ๋ฐ๋ผ์ ๋ค๋ฅธ ์์ผ์ ๊ฐ์ง๋ค.
(non-persistent HTTP๋ request๋ง๋ค ์์ผ์ด ๋ค๋ฅด๋ค)
UDP : User Datagram Protocol [RFC 768]
1. Protocol
- ๊พธ๋ฐ ์์, ๊ทธ์ ๋งจ ๋ผ (No frills, bare bones)
์ธ๋ฐ ์๋ ๊ธฐ๋ฅ ์น ๋นผ๊ณ ์ง์ง ํ์ํ ๊ฒ๋ง ์๋ Internet Transport Protocol - "Best effort" service
- UDP segments๋ lost, delivered out-of-order to app
- Connectionless
- sender์ receiver๊ฐ์ Handshaking ๊ณผ์ ์ด ์์
- ๊ฐ UDP segment๋ ์๋ก์๋ก์๊ฒ ๋ ๋ฆฝ์ ์ผ๋ก ๊ด๋ฆฌ๋๋ค.
- UDP ์ฌ์ฉํ๋ ๊ฒ๋ค : Streaming multimedia apps (์์ค ํ์ฉ,์๋์ ๋ฏผ๊ฐ) , DNS, SNMP ๋ฑ...
- UDP๋ก ์ ๋ขฐ์ฑ ์๋ ์ ์ก์ ํ๊ณ ์ถ๋ค๋ฉด?
- application layer์์ ์ ๋ขฐ์ฑ์ ์ค ์ ์๋ค.
- application-specific error recovery. (ํน์ application์ ํํ ์๋ฌ ๋ฐ๊ฒฌ..)
UDP Segment Header
* length : Header๋ฅผ ํฌํจํ UDP segment ์ ์ฒด์ ๊ธธ์ด(bytes)
UDP ์ ์?
- ์ฐ๊ฒฐ ์ค์ ์ด ํ์ ์์ (์ฌ๊ธฐ์ ๋๋ ์ด ๊ฐ์)
- ๊ฐ๋จํ๋ค. sender๊ณผ receiver๊ฐ์ ์ฐ๊ฒฐ ์ํ๊ฐ ์๋ค
- ํค๋์ ํฌ๊ธฐ๊ฐ ์๋ค
- ํผ์ก ์ ์ด๊ฐ ์๋ค : UDP๋ ์ํ๋ ๋งํผ ๋น ๋ฅด๊ฒ ๋ณด๋ผ ์ ์๋ค.
2. Checksum : for detect "error" in transmitted segment
- Sender
- header fields๋ฅผ ํฌํจํ ๋ชจ๋ segment content๋ฅผ 16-bit ์ ์๋ก ์ทจ๊ธํ๋ค
- Checksum : segment contents๋ฅผ ๋ํ ๊ฐ(๋ณด์ ํฉ)
- sender๋ ์ด checksum ๊ฐ์ UDP checksum field์ ๋ฃ์ด์ ๋ณด๋ธ๋ค.
- Receiver
- ๋ฐ์ segment์ checksum์ ๊ณ์ฐ์ ํ๋ค
- ๊ณ์ฐํ checksum์ด ๋ฐ์ checksum field ๊ฐ๊ณผ ๊ฐ์์ง๋ฅผ ํ์ธํ๋ค.
- ๊ฐ๋ค๋ฉด ์ค๋ฅ๊ฐ ์๋ค, ๋ค๋ฅด๋ค๋ฉด ์ค๋ฅ๊ฐ ์๋ค. (๋ฌผ๋ก ๊ฐ๋ค๊ณ ์๋ฌ๊ฐ 100ํผ์ผํธ ์๋๊ฑด ์๋)
receiver๋ ๋งจ ์์ ๋ segment๋ฅผ ์ ์ํ ํ ๊ฒ๊ณผ checksum ๊ฐ์ ๋ฐ๊ฒ ๋๋ค.
๋ segment๋ฅผ ๋ํ ๋ค carryout๋๋ ์ซ์ 1์ sum result์ ๋ํ๋ค
๊ทธ ๋ํ ๊ฐ๊ณผ checksum์ ๋ํ์ ๋ 111...1 ์ด ๋์ค๋ฉด ์ฑ๊ณต์ ์ผ๋ก ๋ฐ์ ๊ฒ!
Reliable data Transfer
Reliable data Transfer์ ์๋ฆฌ
- application, transport, link ๊ณ์ธต์ ์ค์์ฑ
- ๊ฐ์ฅ ์ค์ํ networking topics TOP 10 ์ค ํ๋!!
- application layer๋ reliable channel๋ก ์๋น์ค๋ฅผ ์ ๊ณตํ์ง๋ง,
transport layer๋ unreliable channel์.
๋ฐ๋ผ์ ์ด ๊ฐญ์ ํจ์๋ค๋ก ์ฑ์์ค์ผํจ - ์ด๋ ๊ฒ ์ฑ๋์ด unreliableํ๋ค๋ ํน์ฑ์ด reliable data transfer protocol(rdt)์ ๋ณต์ก์ฑ์ ๊ฒฐ์ ํ๊ฒ ๋จ..
Getting Started
- Sender
- rdt_send() : app์ ์ํด ๋ถ๋ ค์ง๋ค. data๋ฅผ ์ ์กํ๊ธฐ ์ํด ์๋๋ก ๋๊ฒจ์ค๋ค.
- udt_send() : rdt์ ์ํด ๋ถ๋ ค์ง๋ค. unreliable channel์ ํตํด ํจํท์ receiverํํ ๋ณด๋ธ๋ค.
- Receiver
- rdt_rcv() : ํจํท์ด rcv-side์ ๋์ฐฉํ์ ๋ ๋ถ๋ ค์ง๋ค.
- deliver_data() : rdt์ ์ํด์ ๋ถ๋ ค์ง๋ค. ๋ฐ์ดํฐ๋ฅผ ์ ๊ณ์ธต๋ก ์ฌ๋ฆฌ๋ ค ํ๋ค.
- reliable data transfer protocol (rdt)๋ sender์ receiver ์ ์ชฝ์ ์ ์ฐจ ๋ฐ์ ์์ผ ๋๊ฐ!
- ๋จ๋ฐฉํฅ ๋ฐ์ดํฐ ์ ์ก๋ง ์๊ฐํ๋ค. (๊ทธ๋ฌ๋ control info๋ ์์ชฝ ๋ฐฉํฅ์ผ๋ก ํ๋ฅธ๋ค!)
- sender์ receiver๋ฅผ ๋ช ์ํ๊ธฐ ์ํด์ finite state machines (FSM)์ ์ฌ์ฉํ ๊ฒ์ด๋ค!
์ด๋ค ์ก์ ์ด ์์ ๋ state๊ฐ ๋ณํ๊ฑฐ๋ ์ ์ง๋๊ฑฐ๋ ํ๋ค.
1. rdt1.0 : Reliable Transfer over a Errorless channel(Reliable Channel)
- ์ด channel์ ์๋ฒฝํ๊ฒ reliable ํ ๊ฒ์ ๊ฐ์ ํ๋ค. (No bit errors, no loss of packets)
- sender๋ ๊ณ์ ๊ธฐ๋ค๋ฆฌ๋ค๊ฐ rdt_send(data)๊ฐ ๋ถ๋ฆฌ๋ฉด packet์ ๋ง๋ค์ด์ udt_send(packet)์ผ๋ก receiverํํ ํจํท์ ๋ณด๋ธ๋ค.
- receiver๋ ๊ณ์ ๊ธฐ๋ค๋ฆฌ๋ค๊ฐ rdt_rcv(packet)์ด ๋ถ๋ฆฌ๋ฉด ํจํท์ด ๋์ฐฉํ๋ค๋ ๊ฒ์ด๋ฏ๋ก packet์ ๋ถํดํด์ data๋ฅผ ๋ฝ์์ deliver_data(data)๋ก ์์ ๊ณ์ธต์๊ฒ ์ ๋ฌํ๋ค.
2. rdt2.0: Channel with Bit errors
- ์ด channel์ ํจํท์ bits๊ฐ ๋ค์งํ ์ ์๋ ๊ณณ!
- ์ฐ๋ฆฌ๋ ์ด bit errors์ ์ฐพ๊ธฐ ์ํด checksum์ ์ธ ๊ฒ!
- ์ด๋ป๊ฒ ERROR๋ฅผ recoverํ ๊ฑด๋ฐ?
- Acknowledgements (ACKs) : sender์๊ฒ pkt ์ ๋ฐ์๋ค๊ณ ๋๋ตํด์ค
- Negative acknowledgements (NAKs) : sender์๊ฒ pkt์ ๋ฌธ์ ๊ฐ ์๋ค๊ณ ๋งํด์ค
- sender๋ NAK๋ฅผ ๋ฐ์ผ๋ฉด ๋ค์ ๋ณด๋ธ๋ค
1. sender๋ ์์์์ call์ ๊ธฐ๋ค๋ฆฌ๋ค๊ฐ rdt_send(data)๊ฐ ํธ์ถ๋๋ฉด udt_send(sndpkt)์ ๋ณด๋ธ๋ค.
2. ๊ทธ๋ฆฌ๊ณ ACK ๋๋ NCK๋ฅผ ๊ธฐ๋ค๋ฆฌ๋ ์ํ๋ก ์ ํ๋๋ค.
.
3. receiver๋ rdt_rcv(rcvpkt)์ผ๋ก ํจํท์ ๋ฐ๊ณ notcorrupt(rcvpkt)์ผ๋ก ํจํท์ ์ด์์ด ์๋์ง ํ์ธํ๋ค.
4. ์ด์์ด ์๋ค๋ฉด udt_send๋ก NAK๋ฅผ ๋ฐํํ๊ณ , ์ด์์ด ์๋ค๋ฉด data๋ฅผ deliver_data(data)๋ก ์๋ก ์ฌ๋ฆฐ๋ค์์ ACK๋ฅผ ๋ณด๋ธ๋ค.
.
5. sender๋ rdt_rcv(rcvpkt)์ผ๋ก ์ด๋ค ํจํท์ด ์์์ ํ์ธํ๊ณ ๋ง์ฝ ์ด ํจํท์ด NAK์ด๋ฉด ๋ฌธ์ ๊ฐ ์๋๊ฑฐ๋๊น ๋ค์ udt_send(sndpkt)ํด์ค๋ค.
6. ๋ง์ฝ NAK๊ฐ ์๋๋ผ ACK๋ผ๋ฉด ์ ์์ ์ผ๋ก ๊ฐ๊ฑฐ๋๊น ๋ค์ ๋๊ธฐ ์ํ๋ก ์ ํ๋๋ค.
2-1. rdt2.1 : receiver, Handles Garbled ACK/NAKs
Fatal Flaw!!!!
๋ง์ฝ ACK/NAK๊ฐ ์ค๊ฐ์ ์ฌ๋ผ์ง๋ฉด ????
- sender๋ ๋์ฒด ์ด receiverํํ ๋ฌด์จ ์ผ์ด ๋ฒ์ด์ง ๊ฑด์ง ์ ์ ์์ !!
- ๊ทธ๋ฅ ๋ค์ ๋ณด๋ด?
- ๋ง์ฝ receiver๊ฐ ์ฒ์ ๋ณด๋ธ ๊ฒ๊ณผ ๋ค์ ๋ณด๋ธ ๊ฒ ๋๊ฐ๋ฅผ ๋ค ๋ฐ์ผ๋ฉด ์ด๊ฒ ์ฌ์ ์ก๋ ํจํท์ธ์ง, ์๋๋ฉด ๋์ผํ ๋ด์ฉ์ ๊ฐ์ง ์๋ก์ด ํจํท์ธ์ง ์ ์๊ฐ ์์
- ์ด๋ ๊ฒ ์ค๋ณต ์ํ์ฑ ๋๋ฌธ์ ๋ฌด์กฐ๊ฑด retransmit ํ ์ ์์!!
Handling Duplicates
- Sender๊ฐ ACK/NAK๋ฅผ ๋ฐ์ง ๋ชปํ ๊ฒฝ์ฐ ๋ค์ ํจํท์ ์ฌ์ ์ก ํ๋ค.
- ๋์ ์ด ๋ ์ด ํจํท์ sequence number๋ฅผ ์ถ๊ฐํ๋ค!
- receiver๋ ์ด seq. no.๋ฅผ ๊ธฐ์ค์ผ๋ก ์ค๋ณต๋ ํจํท์ ์์ ๋ฒ๋ฆฐ๋ค.
stop and wait : sender๊ฐ ํ๋์ ํจํท์ ๋ณด๋ด๋ฉด receiver์ response๋ฅผ ๊ธฐ๋ค๋ฆฐ๋ค.
๋ณต์กํด๋ณด์ด์ง๋ง ์ด์ ๊ฒ๊ณผ ๋ฌ๋ผ์ง ๊ฒ์ Sequence number๋ฅผ ๊ฒ์ฌํ๋ค๋ ๊ฒ!
seq0 ํจํท์ ๋ฐ์์ ๋ 1์ ๊ธฐ๋ค๋ฆฌ๋ ์ํ์๋ค๋ฉด ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ์ง ์๊ณ ACK๋ฅผ ๋ค์ ๋ณด๋ด์ค๋ค. (์ด๋ฏธ ๋ฐ์์ ACK ๋ณด๋์๋๋ฐ ๊ทธ ACK๊ฐ ์ค์ข
๋๊ฑฐ๋๊น!)
seq0 ํจํท์ ๋ฐ์์ ๋ ์๋๋๋ก 0์ ๊ธฐ๋ค๋ฆฌ๋ ์ํ์๋ค๋ฉด ๋ฐ์ดํฐ๋ฅผ ์๋ก ์ ์กํด์ฃผ๊ณ 1์ ๋๊ธฐํ๋ ์ํ๋ก ์ ํํ๋ค.
seq1 ํจํท๋ ๋ง์ฐฌ๊ฐ์ง!
Discussion
- Sender
- ํจํท์ seq #๊ฐ ์ถ๊ฐ๋์์
- ๊ทผ๋ฐ 0, 1์ด๋ฉด ์ถฉ๋ถํด??? ์?
- ์๋๋ฉด ํ์ธํด์ผ ํ ๊ฒ์ ACK/NAK๊ฐ ์ ๊ฐ๋์ง ์๊ฐ๋์ง๋๊น
- sender๋ ์์ ํจํท์ด 0์ผ์ง 1์ผ์ง๋ง ๊ธฐ์ตํ๋ฉด ๋จ
- Receiver
- ์์ ๋ ํจํท์ด ์ค๋ณต์ธ์ง ์๋์ง ํ์ธํ๋ค
- state๊ฐ ๊ฐ๋ฆฌํค๋ 0๋๋ 1์ ์์ ํจํท์ seq #
- ์ฐธ๊ณ ๋ก receiver๋ ๋ง์ง๋ง ACK/NAK๊ฐ sender์๊ฒ ์ ๋์ฐฉํ๋์ง ์ ์ ์๋ค.
2-2. rdt2.2 : a NAK-free Protocol
- ๊ธฐ๋ฅ์ ์ผ๋ก๋ 2.1๊ณผ ๊ฐ์๋ฐ ์ด๊ฑด NAK ์์ด ACK๋ง ์ฌ์ฉํจ
- NAK ๋์ ์, receiver๋ ๋ง์ง๋ง ํจํท์ด ์ ๋์ฐฉํ๋์ง์ ๋ํ ACK ์๋ต๋ง ๋ฐ์
(ACK ํจํท ์์๋ seq # ๊ฐ ํฌํจ๋์ด์ผ ๊ฒ ์ฅฌ) - Sender์๊ฒ ACK๊ฐ ์ค๋ณต๋๋ฉด NAK์ ๋์ผํ ๊ฒฐ๊ณผ๊ฐ ๋์จ๋ค.
Sender๋ ํ์ฌ ํจํท์ ๋ค์ ์ฌ์ ์กํ๋ค.
- ์์๊น์ง ๋ค ๋๊ฐ๋ค. 1 ๋๊ธฐ์ํ์ ์์ ๋ receiver๊ฐ pkt seq1์ ์ ์์ ์ผ๋ก ๋ฐ์ผ๋ฉด ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๊ณ ACK1, chksum์ ์ ์กํ๋ค.
- ๋ง์ฝ ์ด๋ฏธ ๋ณด๋ด์ 0 ๋๊ธฐ์ํ์ ์๋๋ฐ seq1 ํจํท์ ๋ฐ๊ฑฐ๋ ํจํท์ด corruptํ์ผ๋ฉด ๋ฐ์ดํฐ๊ฐ ์ค๋ณต๋๊ฑฐ๋ ์๋ชป๋๋ค๋ ๊ฒ์ด๋ฏ๋ก(ACK ์ค์ข
) ๋ค์ udt_send(sndpkt)์ ๋ณด๋ด์ค๋ค. (sndpkt ์ ACK1, checksum ๊ฐ)
. - ํจํท์ ๋ณด๋ด๊ณ ๋๊ธฐํ๊ณ ์๋ sender๋ ํ์ฌ ack0์ ๊ธฐ๋ค๋ฆฌ๊ณ ์๋ค.
- ack1์ด ์ค๋ฉด ack0์ด ์ ๊ฐ๊ฑฐ๋๊น ack0์ ์ฌ์ ์กํ๋ค. ๋๋ ack๊ฐ ๋ญ๊ฐ ์๋ชป๋์ด๋ ๋ค์ ์ฌ์ ์กํ๋ค.
- ์ ์์ ์ธ ack0์ด ์ค๋ฉด ack1์ ๊ธฐ๋ค๋ฆฌ๋ ์ํ๋ก ์ด๋ํ๋ค.
3. rdt3.0: Channel with error and "loss"
New Assumption
์ฑ๋์์ data์ ACKs ๋ฅผ ๋ด๋ ํจํท๋ ์ค์ข
๋ ์ ์์ง ์์๊น??
- checksum, seq.#, ACKs, retransmissions ์ด ๋์์ ๋๊ฒ ์ง๋ง.. ์๋ฒฝํ์ง ๋ชปํด!
- Sender/receiver๋ ACK๋ ํจํท ๋ฐ์๊ฑธ ๊ธฐ๋ค๋ฆฌ๋๋ฐ ์๋ฌด๊ฒ๋ ๋ชป ๋ฐ์์๋ ์๋ค.(์๋ฅผ ๋ค๋ฉด ๋ฒํผ ์ค๋ฒํ๋ก์ฐ๋ก ์ธํ ์์ค)
Approach : sender๋ ํจํท์ ๋ณด๋ด๊ณ ACK๋ฅผ "reasonable"ํ ์๊ฐ๋์ ๊ธฐ๋ค๋ ค๋ณธ๋ค!
- ๋ง์ฝ ACK๊ฐ ๊ทธ์๊ฐ ์์ ์์ค๋ฉด retransmits!
- ์ด ์๊ฐ์ ์ธ์ค countdown timer๊ฐ ํ์ํ๋ค!
- ACK๋ ํจํท์ด ๋ถ์ค๋๊ฒ ์๋๋ผ ๋จ์ํ ์ง์ฐ๋ ๊ฑธ ์๋ ์๋๋ฐ,
- sender์ timeout์ ์ํด์ ์ค๋ณต๋๋ ํจํท์ retransmit ํ์ง๋ง receiver๋ seq.#๋ก ์ค๋ณต์ ๋ฐฉ์งํ ์ ์๋ค!!
- ๋ฐ๋ผ์ Receiver๋ ๋ฌด์กฐ๊ฑด ACKed๋ฅผ ๋ฐ์ ํจํท์ seq.# ์ ์ง์ ํด์ ๋ณด๋ด์ผ ํ๋ค.
- sender๋ rdt_rct(rcvpkt) ๋ช ๋ น์ด ๋จ์ด์ง๋ฉด pkt0์ ๋ณด๋ด๊ณ ํ์ด๋จธ๋ฅผ ํค๊ณ ACK0 ์ ๊ธฐ๋ค๋ฆฌ๋ ์ํ๋ก ์ ํํ๋ค.
- ๋ง์ฝ ACK0์ด ์ค๊ณ ์ ์์ ์ด๋ผ๋ฉด 1์ ๋ณด๋ด๋ผ๋ ๋ช ๋ น์ด ๋จ์ด์ง ๋๊น์ง ๋๊ธฐํ๋ ์ํ๋ก ์ ํํ๋ค.
- ๋ง์ฝ ACK๊ฐ 1์ด ์ค๊ฑฐ๋ ์๋ชป๋๊ฑฐ๋ ํ๋ฉด ๊ฐ๋งํ ์๋๋ค.
- ๊ทธ๋ฌ๋ค timeout์ด ๋๋ฉด ๋ค์ ํจํท์ ์ฌ์ ์กํ๊ณ ํ์ด๋จธ๋ฅผ ํจ๋ค.
- rdt_rcv(rcvpkt) ๋ช ๋ น์ด ๋ค์ ๋จ์ด์ง ๋๊น์ง ๋๊ธฐํ๋ค๊ฐ pkt1 ์ ๋ํด์๋ ๋ฐ๋ณต์์ !
Stop-and-Wait Operation
- ํจํท์ ์ฒซ ๋ฒ์งธ bit ๊ฐ ์ ์ก ์์๋๋ ์๊ฐ t = 0
๋ง์ง๋ง t = L/R
- ๋ง์ง๋ง bit๊น์ง receiver์ ๋์ฐฉํ๋ฉด ACK๋ฅผ ์ ์กํจ
- ์ด ๋ ๋ง์ง๋ง bit๋ฅผ ๋ณด๋ด๊ณ ACK๋ฅผ ๋ฐ์ ๋ ๊น์ง์ ์๊ฐ = RTT (Round Trip Time)
- ACK๊ฐ ๋์ฐฉํ๊ณ ๋ค์ ํจํท์ ์ ์กํ ๋๊น์ง์ ์๊ฐ t = RTT + L/R
ex. 1 Gbps link, 15ms props. delay, 8000 bit packet:
D_trans = L/R = 8000bits/10^9 bits/sec = 8 microsecs
U_sender : utilization (fraction of time sender busy sending) ์ด ๋ญ๊น...
= L/R / (RTT+ L/R) = 0.008/30.008 = 0.00027
RTT = 30 msec : ๋งค 30์ด๋ง๋ค 1kB ํจํท์ ์ ์กํจ
-> ์ด๊ฒ์ 1 Gbps link์ ๋์ญํญ์์ 33kB/sec์ ๋ณด๋ผ ์ ์์์ ์๋ฏธํจ
rdt 3.0 ์ ์ ํํ ๋์ ์ฑ๋ฅ์ด ์์ข๋ค.
'๐ก๐ธ๐ธ๐ถ5: ๐ฆ๐๐๐๐ถ ๐ฐ๐๐พ๐ > Computer Network(COSE342)' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[์ปดํจํฐ๋คํธ์ํฌ] CH3. Transport Layer (#2) (0) | 2021.10.19 |
---|---|
[์ปดํจํฐ๋คํธ์ํฌ] CH2. Application Layer (#4) (0) | 2021.10.18 |
[์ปดํจํฐ๋คํธ์ํฌ] CH2. Application Layer (#3) (0) | 2021.10.17 |
[์ปดํจํฐ๋คํธ์ํฌ] CH2. Application Layer (#2) (0) | 2021.10.17 |
[์ปดํจํฐ๋คํธ์ํฌ] CH2. Application Layer (#1) (0) | 2021.10.17 |