[ðCN] TCP - Transmission Control Protocol
ð Internet Protocol ì ê³µ ìì ì 늬
ì ë¢°ì± ìë ë°ìŽí° ì ì¡ì íµì¬! TCPë ì°ê²° ì§í¥ì ìŽê³ ì ë¢°ì± ìë ì ì¡ì 볎ì¥íë Transport Layer íë¡í ìœìŽë€. íší· ìì€, ìì ë³ê²œ, ì€ë³µ ë± ë€ížìí¬ì ë€ìí 묞ì 륌 íŽê²°íì¬ ìì ì ìž ë°ìŽí° ì ì¡ì ì ê³µíë€.
TCP Service Model
Networkì Challenge
ë€ížìí¬ë ë€ì곌 ê°ì 묞ì ë€ì ë°ììí¬ ì ìë€:
- drop packets: ëëì íší· ìì€ ê°ë¥
- delay packets: ì ìŽê° ì§ì° ê°ë¥
- deliver packets out-of-order: ìì ì§ì°ìŒë¡ ìží ìì ë³ê²œ
- replicate packets: ë묌ì§ë§ íší· ë³µì ë°ì
- corrupt packets: ë°ìŽí° ìì
TCPì íµì¬ êž°ë¥
ðTCP (Transmission Control Protocol): Transport Layerìì ì ë¢°ì± ìê³ ììê° ë³Žì¥ë ë°ìŽíž ì€ížëŠŒ ì ì¡ì ì ê³µíë ì°ê²° ì§í¥ íë¡í ìœ
죌ì í¹ì§:
- Reliable delivery (ì ë¢°ì± ìë ì ë¬)
- IPê° íší·ì ììŽë²ëЬë ê²œì° TCPë retransmission ìí
- In-order delivery (ìì 볎ì¥)
- IPê° out-of-order delivery륌 íë ê²œì° TCPê° reorderingí í applicationìê² ì ë¬
- Flow control (íëŠ ì ìŽ)
- ìì applicationìŽ ë°ì ì ìë ë§íŒë§ ë°°ë¬
- Byte-stream (ë°ìŽíž ì€ížëŠŒ)
- ë°ìŽí°ë ë°ìŽížì ì°ì
- Segmentation â PMTU discovery ìŽì©
- Connection oriented (ì°ê²° ì§í¥)
- ë°ìŽí° ì ì¡êŽëЬ (flow-control, reordering, segmentation, congestion control)
- Hopefully with good performance
TCP Support for Reliable Delivery
ì ë¢°ì± ë³Žì¥ ë©ì»€ëìŠ
1. Checksum
- ìì ììì ììë ë°ìŽí° ê°ì§
- ììë íší·ì ëë¡
2. Sequence numbers
- ëëœë ë°ìŽí° ê°ì§
- ë°ìŽí°ë¥Œ ì¬ë°ë¥ž ììë¡ ì¬ë°°ìŽ
3. Retransmission
- ì¡ì ìê° ìì€ëê±°ë ììë ë°ìŽí° ì¬ì ì¡
- Round-trip time ì¶ì ì êž°ë°í timeout
- Fast retransmit algorithmìŒë¡ ì ìí ì¬ì ì¡
Connection-Oriented
ðConnection Establishment: ë°ìŽí° ì ì¡ ì ì TCPë ì°ê²°ì ì늜íŽìŒ íš
ì°ê²° í¹ì§:
- íëì TCP entityë ì°ê²°ì êž°ë€ëŠŒ (âserverâ)
- ë€ë¥ž TCP entity (âclientâ)ê° ìë²ì ì ì
- ê° ì°ê²°ì full duplex (ìë°©í¥ íµì )
1
2
3
4
5
6
7
8
9
10
11
12
CLIENT SERVER
waiting for
connection
request
Request a connection âââââââââº
âââââââââ
Accept a connection
Data Transfer âââââââââº
âââââââââ
Disconnect âââââââââº
TCP Header
Header 구조
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
0 15 16 31
âââââââââââââââââââââââââ¬âââââââââââââââââââââââ
â Source Port â Destination Port â
â (16 bits) â (16 bits) â
âââââââââââââââââââââââââŽâââââââââââââââââââââââ€
â Sequence Number (32 bits) â
ââââââââââââââââââââââââââââââââââââââââââââââââ€
â Acknowledgment Number (32 bits) â
âââââââ¬âââââ¬âââââââââââââââ¬âââââââââââââââââââââ€
âHdrLenâ 0 â Flags â Advertised window â
â(4bit)â(6b)â (6 bits) â (16 bits) â
ââââââââŽâââââŽâââââââââââââââŒâââââââââââââââââââââ€
â TCP Checksum (16 bits) â Urgent Pointer â
â â (16 bits) â
ââââââââââââââââââââââââââââŽâââââââââââââââââââââ€
â Options (variable) â
âââââââââââââââââââââââââââââââââââââââââââââââââ€
â Data â
âââââââââââââââââââââââââââââââââââââââââââââââââ
죌ì íë
1. Sequence Number (32 bits)
- ìŽ ìžê·žëšŒížì í¬íšë ë°ìŽí°ì ìì ë°ìŽíž ì€íì
2. Acknowledgment Number (32 bits)
- ììëë¡ ìì í ê°ì¥ ëì ìíì€ ë²íž ë°ë¡ ë€ì ë²íž
- âë€ìì êž°ëíë ë°ìŽížë?â
- ì¡ì ìê° ìíì€ Sìì ììíë N ë°ìŽížë¥Œ 볎ëŽë©Ž ACKë S+N
3. Header Length (4 bits)
- TCP í€ëì 4ë°ìŽíž ìë ê°ì
- 5 = ìµì ìì (20 bytes)
4. Reserved (6 bits)
- âMust Be Zeroâ - ììœë ë¹íž
5. Flags (6 bits)
- SYN: ì°ê²° ì늜
- ACK: Acknowledgment ì íš
- FIN: ì°ê²° ì¢ ë£
- RST: ì°ê²° 늬ì
- PSH: Push
- URG: Urgent
6. Advertised Window (16 bits)
- ë°ìŽí° ìì ì ìíŽ ì¬ì© ê°ë¥í ë²íŒ ê³µê°
- TCPì sliding windowì ì¬ì©
- Acknowledgment íë ê°ì ëìŽì ì€íì ìŒë¡ íŽì
7. Checksum (16 bits)
- ìë¬ ê°ì§ì©
8. Urgent Pointer (16 bits)
- URG íëê·žê° ì€ì ë ê²œì° ì¬ì©
ACKing and Sequence Numbers
ACK ë©ì»€ëìŠ
ì¡ì ìê° íší· ì ì¡:
- ë°ìŽí°ë ìíì€ ë²íž Xìì ìì
- íší·ì B ë°ìŽíž í¬íš
- X, X+1, X+2, âŠ, X+B-1
íší· ìì ì, ìì ìë ACK ì ì¡:
Case 1: X ìŽì ì 몚ë ë°ìŽí°ê° ìŽë¯ž ìì ëš
- ACKë X+B륌 íìž (ë€ì êž°ë ë°ìŽížìŽë¯ë¡)
Case 2: ìŽë¯ž ìì í ê°ì¥ ëì ë°ìŽížê° ë ìì ê° Y
- ACKë Y+1ì íìž
- ìŽë¯ž ACKíëëŒë ë€ì ì ì¡
Cumulative ACK (ëì ACK)
- TCPë ëì ACK ì¬ì©
- ACK ë²ížë âìŽ ë²íž ìŽì ê¹ì§ 몚ë ë°ììâì ì믞
- ì€ê°ì ìì€ë íší·ìŽ ììŽë ëìŒí ACK ë°ë³µ ì ì¡
Initial Sequence Number (ISN)
ðISN (Initial Sequence Number): 첫 ë²ì§ž ë°ìŽížì ìíì€ ë²íž
ì ISN = 0ìŽ ìëê°?
ì€ì©ì ìŽì :
- IP 죌ìì í¬íž ë²ížê° ì°ê²°ì ê³ ì íê² ìë³
- ê²°êµ ìŽ í¬íž ë²ížë€ì ë€ì ì¬ì©ëš
- ì€ëë íší·ìŽ ì¬ì í ì ì¡ ì€ìŒ ê°ë¥ì±
- ìë¡ìŽ ì°ê²°ê³Œ ì°êŽë ì ìì
TCPì íŽê²°ì± :
- ISNì ë³ê²œíëë¡ ì구
- 4 ë§ìŽí¬ë¡ìŽë§ë€ í±íë 32ë¹íž íŽë¡ìì ì€ì
- 4.55ìê°ë§ë€ í ë²ë§ wrap around
- ì°ê²° ì늜 ì ížì€ížë€ìŽ ISN êµí
CONNECTION ESTABLISHMENT: THREE-WAY HANDSHAKE
3-Way Handshake 곌ì
ðThree-Way Handshake: TCP ì°ê²° ì늜ì ìí 3ëšê³ ížëì °ìŽí¬ íë¡ìžì€
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
Client (initiator) Server
Active Open Passive Open
connect() listen()
â â
â SYN, SeqNum = x â
ââââââââââââââââââââââââââââââââº
â â
â SYN + ACK, SeqNum = y, â
â Ack = x + 1 â
ââââââââââââââââââââââââââââââââ€
â â
â ACK, Ack = y + 1 â
ââââââââââââââââââââââââââââââââº
â â
accept()
Step 1: Clientì SYN
- Clientê° Serverì SYN ì ì¡
- Clientì ISN í¬íš
Step 2: Serverì SYN-ACK
- Serverê° SYN acknowledgment ë°í
- Serverì ISN í¬íš
- Clientì ISN + 1ì ACK
Step 3: Clientì ACK
- Clientê° Serverì SYN-ACK륌 íìž
- Serverì ISN + 1ì ACK
ê° ížì€ížë ìëë°©ìê² ìì ì ISNì ìë €ì€
- ìë°©í¥ íµì ì ìíŽ ê°ìì ISN íì
- ìŽ íší·ì ë°ìŒë©Ž ë°ìŽí° ì ì¡ ìì ê°ë¥
SYN PacketìŽ ìì€ë멎?
묞ì :
- Serverê° íší·ì ë²ëŠŒ (ì: listen queueê° ê°ë ì°ž)
- ê²°êµ SYN-ACKê° ëì°©íì§ ìì
íŽê²°ì± :
- Senderê° íìŽëšžë¥Œ ì€ì íê³ SYN-ACK륌 ëêž°
- íìì SYN ì¬ì ì¡
- RFC 1122 & 2988: Ʞ볞 3ìŽ ì¬ì© ê¶ì¥
- ë€ë¥ž 구í첎: 6ìŽ ì¬ì©
TEARING DOWN THE CONNECTION
TCP Connection Termination
ðConnection Termination: ê° ë°ìŽí° íëŠì ëì ë 늜ì ìŒë¡ ì¢ ë£ëìŽìŒ íš (âhalf-closeâ)
4ëšê³ íë¡ìžì€:
- Xê° Yìê² FIN ì ì¡ (active close)
- Yê° FINì ACK
- ìŽ ìì : Yë ì¬ì í Xìê² ë°ìŽí° ì ì¡ ê°ë¥
- Yê° Xìê² FIN ì ì¡ (passive close)
- Xê° FINì ACK
Normal Termination
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
A B
â â
â FIN â
ââââââââââââââââââââââââââââââââºâ
â â
â ACK â
ââââââââââââââââââââââââââââââââ€
â â
â â Connection
â â now half-closed
â FIN â
ââââââââââââââââââââââââââââââââ€
â â
â ACK â
ââââââââââââââââââââââââââââââââºâ
â â
â Timeout: Avoid reincarnation â
â â â
â Connection â
â now closed â
Sending/Receiving the FIN Packet
FIN ì ì¡: close()
- íë¡ìžì€ê° ììŒì íµí ë°ìŽí° ì ì¡ ìë£
- íë¡ìžì€ê° âclose()â륌 ížì¶íì¬ ììŒ ë«êž°
- TCPê° ëªšë 믞ìë£ ë°ìŽíž ì ì¡ í FIN ì ì¡
- ë°ìŽížê° ìì§ ACKëì§ ìììŽë FIN ì ì¡
- FINì seqnoê° ëªšë ë°ìŽížë¥Œ ëìŽìë¯ë¡
- 몚ë ë°ìŽížê° ì ë¬ë ëê¹ì§ ACKëì§ ìì
FIN ìì : EOF
- íë¡ìžì€ê° ììŒìì ë°ìŽí° ìœë ì€
- ê²°êµ ìœêž° ìëê° EOF ë°í
- ì¡ì ìê° close() ížì¶íêž° ì ì 몚ë ë°ìŽíž ì ë¬ëš
Abrupt Termination
RST (Reset) ì¬ì©:
- Aê° Bìê² RST ì ì¡
- íë¡ìžì€ í¬ëì ë±ì ìŽì
- Bë RST륌 ACKíì§ ìì
- RSTë ì ë¢°ì± ìê² ì ë¬ëì§ ìì
- ì ì¡ ì€ìž ë°ìŽí°ë ìì€ëš
- Bê° ë 볎ëŽë©Ž ë ë€ë¥ž RST ë°ì
TCP Options
ðTCP Options: TCP í€ëì ê°ë³ êžžìŽ ìµì íë (ìµë 40 bytes, 4 bytes ë°°ì)
죌ì ìµì ì¢ ë¥
| Kind | Option | Length (Byte) |
|---|---|---|
| 0 | End of Option List (EOL) | 1⥠|
| 1 | No Operation (NOP) | 1 |
| 2 | Maximum Segment Size (MSS) | 4 |
| 3 | Window scaling factor | 3 |
| 4 | Selective ACK Permitted | 2 |
| 5 | Selective ACK | 2+8k (k < 5) |
| 8 | Timestamp | 10 |
| 28 | User timeout | 4 |
ìµì ì€ëª :
- EOL: ë€ë¡ ë ìŽì ìµì ìì
- NOP: padding ìí
- MSS: peerìê² payload í¬êž° ì늌 (MSS = MTU - 40)
- WSF: ìì socket buffer > 64KBìŒ ë peerìê² ìë €ì€
- window size (16 bits) < 65,535 KB
- SACK permit: SACK ì¬ì© ê°ë¥ ì늌
- Timestamp: RTT ìž¡ì
- UTO: ìµë ACK êž°ë€ëЬë ìê°
SACK (Selective Acknowledgment)
ðSACK: TCP ìžê·žëšŒíž í ë²ì ì¬ë¬ ê° ë³ŽëŒ ë ì€ê°ì ììŽë²ëа ê²ë§ ìë €ì€ (SLE, SRE)
ì¥ì :
- TCP ì±ë¥ í¥ì
- ë¶íìí ì¬ì ì¡ ê°ì
ëì:
1
2
3
4
5
6
7
8
Continuous data reception â #49 â Gap â #51 â
â â
ACK = 25733 ACK = 25733
ì€ê° íší· ìì í:
Continuous received bytes â #49 â #53 â #54 â #51 â
â
ACK = 28699
FLOW CONTROL
ðFlow Control: ì¡ì ìê° ìì ì륌 ì ë³Žë¡ ìëíë ê²ì ë°©ì§íë ìê³ ëŠ¬ìŠ
TCP Sliding Window Flow Control
í¹ì§:
- Acknowledgment ì ì¡ê³Œ window size ì€ì ìŽ ë¶ëЬëš
- Acknowledgmentê° ìëìŒë¡ window size륌 ìŠê°ìí€ì§ ìì
- Acknowledgmentë ëì ì (cumulative)
Sliding Window Protocol
1
2
3
4
5
6
7
8
9
10
11
Advertised window
âââââââââââââââââââââââº
âââââ¬ââââ¬ââââ¬ââââ¬ââââ¬ââââ¬ââââ¬ââââ¬ââââ¬ââââ¬ââââ
â 1 â 2 â 3 â 4 â 5 â 6 â 7 â 8 â 9 â10 â11 â
âââââŽââââŽââââŽââââŽââââŽââââŽââââŽââââŽââââŽââââŽââââ
âââââ âââââââââ âââââââââ
sent andâ sent butâ can â can'tâ
acknowledgedâ not â be â sent â
âacknowledgedâ sent â â
ââââââââââââ⺠â â
USABLE WINDOW â â
Window Operations
1. Window Closes (ìëì° ë«í)
- ë°ìŽí° ì ì¡ í ACK ìì
- ì ì¡ë ë§íŒ ìëì°ê° ìŒìªœìŒë¡ ìŽë
2. Window Opens (ìëì° ìŽëŠŒ)
- ACK ìì ìŒë¡ ìëì°ê° ì€ë¥žìªœìŒë¡ íì¥
- ìì ìì TCP ë²íŒê° ë¹ìì§ ë ë°ì
3. Window Shrinks (ìëì° ì¶ì)
- ìëì°ê° ì€ë¥žìªœìì ì¶ì
- ì¬ì©íì§ ìììŒ íš
Window Management
ìì ìë ì¡ì ììê² ë íëŒë¯ží° ë°í:
1
2
3
4
âââââââââââââââ¬âââââââââââââââââ
â AckNo â window size â
â (32 bits) â (16 bits) â
âââââââââââââââŽâââââââââââââââââ
íŽì:
- SeqNo = AckNo, AckNo+1, âŠ, AckNo+Win-1ì ì ë°ìŽí°ë¥Œ ë°ì ì€ë¹ê° ëš
í¹ì§:
- ìì ìë ìëì°ë¥Œ ìŽì§ ìê³ ë°ìŽí° íìž ê°ë¥
- ìì ìë ë°ìŽí° íìž ììŽ ìëì° í¬êž° ë³ê²œ ê°ë¥
Flow Control Example
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
Sender Receiver Buffer
sends 2K 0 4K
of data âââââââââââ âââââââââââââââ
â2KâSeqNo=0â â â
ââââââŒââââââ âââââââââââââââ
âââââââââââââ⺠ââââââ¬âââââââââ
â 2K â â
ââââââââââââââââââââââŽâââââââââ
ââââââââââââââââââ â
âAckNo=2048 â â
âWin=2048 â â
ââââââââââââââââââ â
Sender âââââââââââ â
sends 2K â2KâSeqNo=2048â â
of data ââââââŒââââââ â
âââââââââââââ⺠ââââââââââââ
â 4K â
ââââââââââââââââââââââââââââ
ââââââââââââââââââ â
âAckNo=4096 â â
âWin=0 â â
ââââââââââââââââââ â
â
Sender blocked â
â
âââââââââââââââ†âââââ¬âââââ
ââââââââââââââââââ â â â 3K â
âAckNo=4096 â â âââââŽâââââ
âWin=1024 â â
ââââââââââââââââââ â
Advertised Window
ðAdvertised Window: W: ë€ì êž°ë ë°ìŽížë¥Œ ëìŽ W ë°ìŽížë¥Œ ë³ŽëŒ ì ìì
Flow Control ë©ì»€ëìŠ:
- ìì ìë W륌 ì¬ì©íì¬ ì¡ì ìì ë²íŒ ì€ë²íë¡ì° ë°©ì§
- ìëì°ê° WìŽë©Ž ì¡ì ìë ìµë W/RTT bytes/secë¡ ì ì¡ ê°ë¥
- ìì ìë ì묵ì ìŒë¡ ì¡ì ì륌 ìì ê°ë¥í ìëë¡ ì í
- ì¡ì ìê° ë묎 ë¹ ë¥Žë©Ž ìëì° êŽê³ ê° ì ì ììì§
RELIABILITY: RETRANSMISSION
Reasons for Retransmission
1
2
3
4
5
6
7
8
9
10
11
Timeout Timeout Timeout
â â â
Packet ACK Packet ACK Packet
â ââ³â â â ââ³â â â âââââ
â âââ â â âââ â â ââ³ââACKâ
âââââ⺠â âââââ⺠â â ââââââââ
ââââââ ââââââââ âââââ⺠â
ââââââââââââ
Packet lost ACK lost Early timeout â
DUPLICATE DUPLICATE PACKETSâ
PACKET â
How Long Should Sender Wait?
Timeout ì€ì :
- ë묎 ì§§ì: ë¶íìí ì¬ì ì¡
- ë묎 ê¹: íší· ìì€ ì 곌ëí ì§ì°
TCPì RTO (Retransmission Timeout):
- RTTì íšìë¡ ì€ì
- ACKê° ë°ìŽí° ì ì¡ í ëëµ RTT íì ëì°© ìì
- ë³ë(queuing, MAC)ì íì©íë ì¬ë ì¶ê°
ìž¡ì 묞ì
- RTT륌 ìŽë»ê² ìž¡ì í ê²ìžê°?
- RTTì ì¢ì ì¶ì ì¹ë?
- âì¬ëâì ì¢ì ì¶ì ì¹ë?
Problem: Ambiguous Measurement
ì¬ì ì¡ ì 묞ì :
1
2
3
4
5
6
7
8
9
10
11
Sender Receiver Sender Receiver
â Original â â Original â
â Transmission â â Transmission â
ââââââââââââââââºâ ââââââââââââââââºâ
â â â ACK â
âRetransmission â â âââââââ â
ââââââââââââââââºâ âRetransmission â
â ACK â ââââââââââââââââºâ
ââââââââââââââââ†â â
â â â â
SampleRTT ? SampleRTT ?
- ì€ì ACKì ì¬ì ì¡ë íší·ì ACK륌 ìŽë»ê² 구ë¶?
Karn/Partridge Algorithm
ðKarn/Partridge Algorithm: ì¬ì ì¡ ì RTT ìž¡ì 묞ì íŽê²°
ê·ì¹:
- ì볞 ì ì¡ì ëíŽìë§ SampleRTT ìž¡ì
- ìžê·žëšŒížê° ì¬ì ì¡ë멎 ì¶ê° ìž¡ì ì ì¬ì©íì§ ìì
Exponential Backoff ì ì©:
- RTO íìŽëšž ë§ë£ ìë§ë€: RTO â 2·RTO
- ì ìž¡ì ëì°© ì (ì±ê³µì ìž ì볞 ì ì¡): RTO륌 ê³ì°ë ê°ìŒë¡ ë³µì
RTT Estimation
Exponential Averaging
1
2
3
4
SampleRTT = AckRcvdTime - SendPacketTime
EstimatedRTT = α à EstimatedRTT + (1-α) à SampleRTT
α = 7/8 (for one measurement per flight)
ê·žëí:
1
2
3
4
5
6
7
8
9
EstimatedRTT â²
â â±â²
â â± â² â±â²
â â± â²â± â²
âââââââââââââââââ EstimatedRTT
â â±â â±â ââ² ââ²
ââ± â â± â â â² â â²
ââââŽâââŽââââŽâââŽâââŽââ⺠Time
SampleRTT
Jacobson/Karels Algorithm
ðJacobson/Karels Algorithm: êŽì°°ë ë³ëì± ìž¡ë©Žìì âì¬ëâ ê³ì°
íì€ ížì°š ëì íê· ížì°š ì¬ì©:
- íì€ ížì°šë ë¹ìŒ ì 곱귌 íì
- íê· ížì°š(mean deviation) ì¬ì©
1
2
3
4
5
6
Deviation = | SampleRTT â EstimatedRTT |
EstimatedDeviation: Deviationì ì§ì íê·
EstRTT = (1-α) à EstRTT + α à SRTT
RTTvar = (1-β) à RTTvar + β à (SRTT - EstRTT)
RTO = ERTT + 4 Ã RTTvar
αì β ê°
- α = 1/8 (0.125)
- β = 1/4 (0.25)
- RTOë EstimatedRTT + 4ë°°ì ë³ëì±
Alternative to Timeouts: Fast Retransmission
Triple Duplicate ACK
ðFast Retransmission: 3ê°ì ì€ë³µ ACK ìì ì ìŠì ì¬ì ì¡
ëì ì늬:
- íší· nìŽ ìì€ëì§ë§ n+1, n+2, ⊠ëì°©
- ììì ë§ì§ ìë íší· ëì°© ìë§ë€ ìì ìê° ACK ìì±
- n+1, n+2, ⊠ëì°© ì ìíì€ ë²íž nì ëí ë°ë³µ ACK ìì±
- 몚ë ëìŒíê² ë³ŽìŽë¯ë¡ âduplicateâ acknowledgments
- ì¡ì ìê° 3ê°ë¥Œ 볎멎 ìŠì íší· n ì¬ì ì¡ (në§)
Fast Retransmission Diagram
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
Sender Receiver
â segment 1 â
âââââââââââââââââââââââââââ⺠â
â â
ââââââââACK 2 â
â â
â segment 2 â
âââââââââââââââââââââââââââ⺠â
â segment 3 â
âââââââââââââââââââââââââââ⺠â
â â
ââââââââACK 3 â
â â
ââââââââACK 4 â
â â
â segment 4 âââ³ â segment 5 lost
â segment 5 â
âââââââââââââââââââââââââââ⺠â
â segment 6 â
âââââââââââââââââââââââââââ⺠â
â segment 7 â
âââââââââââââââââââââââââââ⺠â
â â
ââââââââACK 4 â â
ââââââââACK 4 â 3 duplicate â
ââââââââACK 4 â ACKs â
â â
â segment 4 â
âââââââââââââââââââââââââââ⺠â Fast Retransmit!
죌ìì¬í:
- ACKë ë€ì êž°ë íší·ì ëí ê²
- íší· ì¬ì ë ¬(reordering)ìŽ ì€ë³µ ACK ì ë° ê°ë¥
- ìëì°ê° ë묎 ììŒë©Ž ì¶©ë¶í ì€ë³µ ACK ìì± ë¶ê°ë¥
Additional TCP Features
Cumulative ACK
ðCumulative ACK (Accumulated ACK): TCP ACKë ëì ì ìŒë¡ ëì
í¹ì§:
- ACK ë²ížë âìŽ ë²íž ìŽì ê¹ì§ 몚ë ìì íìâì ì믞
- ì€ê°ì íší·ìŽ ìì€ëìŽë ì°ììŒë¡ ìì ë ë¶ë¶ê¹ì§ ACK
- ìì€ë íší· ìŽíì ëì°©í íší·ë€ì ëìŒí ACK ë²íž ë°ë³µ
ìì:
1
2
3
4
5
6
7
8
Continuous received bytes â #49 â Loss â #51 â
â â
ACK = 25733 ACK = 25733
ìì€ íší· ì¬ì ì¡ í:
Continuous received bytes â #49 â #53 â #54 â #51 â
â
ACK = 28699
Delayed ACK
ðDelayed ACK: TCPë Ʞ볞ì ìŒë¡ ACK suppress (performance í¥ì)
목ì :
- Full duplex (ë°ëë°©í¥) íì©
- ë°ìŽí°ì íšê» ACK ì ì¡ ê°ë¥
ëì:
- Delayed ACK timer expire ì ACK ì ì¡
- ë ê°ì ìžê·žëšŒížë§ë€ íëì ACK
- ìµë ì§ì°: ë³Žíµ 200ms
Persist Timer
ðPersist Timer: Window size = 0 ìí© ì²ëЬ
묞ì :
- RXë¡ë¶í° 0-ACK (Window size = 0) ë°ìŒë©Ž TX ë ìŽì ì ì¡ ë¶ê°
- RXê° window update í ëê¹ì§ TX freeze
- Window update (ACK) ìì€ ì deadlock
íŽê²°ì± :
- RXê° 0-ACK ìì ì persist timer ìì (RTO)
- Timer expires, RXê° persist probe ì ì¡ (1 byte)
- 0-ACK ë€ì ì ì¡ + ëìŒ ACK#
- 0-ACK ë€ì ì ì¡ + ACK 1ìŠê°
- ACK (window size > 0) ì ì¡
Keepalive Timer
ðKeepalive Timer: Half-open ìí íì§
목ì :
- Half-open (client ì¡°ì©í ë€ìŽë 겜ì°) ìí륌 íì§íì¬ connection ëêž°
- Server overhead ê°ì
ëì:
- TCP íì€ì ìë
- ìœ 2ìê° í timeout
- Keepalive probe: inadequate seq# (ì: ìŽë¯ž ACK ë°ì ê²)
- ìŽì ìë clientì ê²œì° ë°ë¥ž ACK# packet ì ì¡
- Closed client 묎ìëµ â probe 3-5ë² ë€ ì°ê²° íŽì§
TCP ììœ
TCPì íµì¬ í¹ì§
1. ì°ê²° ì§í¥ (Connection-Oriented)
- Three-way handshakeë¡ ì°ê²° ì늜
- Full duplex ìë°©í¥ íµì
- ëª ìì ì°ê²° ì¢ ë£ (FIN)
2. ì ë¢°ì± ë³Žì¥ (Reliable Delivery)
- Sequence numberë¡ ìì 볎ì¥
- Acknowledgmentë¡ ìì íìž
- Timeout & Retransmission
- Fast Retransmit (3 duplicate ACKs)
3. íëŠ ì ìŽ (Flow Control)
- Sliding window mechanism
- Advertised windowë¡ ìì ë²íŒ êŽëЬ
- ìì ìê° ì²ëЬ ê°ë¥í ìëë¡ ì ì¡
4. íŒì¡ ì ìŽ (Congestion Control)
- Network ìíì ë§ì¶° ì ì¡ ìë ì¡°ì
- Good performance 목í
TCP vs UDP
| í¹ì§ | TCP | UDP |
|---|---|---|
| ì°ê²° | Connection-oriented | Connectionless |
| ì ë¢°ì± | Reliable delivery | Unreliable |
| ìì | In-order delivery | No ordering |
| íëŠ ì ìŽ | Yes | No |
| ì€ë²í€ë | ëì (20+ bytes) | ë®ì (8 bytes) |
| ìë | ë늌 | ë¹ ëŠ |
| ì¬ì© ì | HTTP, FTP, Email | DNS, VoIP, Streaming |
TCP ì¬ì©ìŽ ì í©í 겜ì°
- ë°ìŽí° ìì€ìŽ íì©ëì§ ìë 겜ì°
- ììê° ì€ìí 겜ì°
- ì ë¢°ì± ìë ì ì¡ìŽ íìí 겜ì°
UDP ì¬ì©ìŽ ì í©í 겜ì°
- ì€ìê° ì ì¡ìŽ ì€ìí 겜ì°
- ìœê°ì ìì€ìŽ íì©ëë 겜ì°
- ë®ì ì§ì°ìŽ íìí 겜ì°
References:
- RFC 793: Transmission Control Protocol
- RFC 1122: Requirements for Internet Hosts
- RFC 2988: Computing TCPâs Retransmission Timer
- Prof. Jongwon Yoon, Intelligent Machines Lab.