Chapter 26 TCP

Download Report

Transcript Chapter 26 TCP

CPE 426 Computer Networks
Week 11:
Chapter 25: UDP
Chapter 26: TCP
TOPICS

Chapter 25: UDP (User Datagram Protocol)




Connectionless and Protocol
Communication Semantics and Port Numbers
UDP Format and Encapsulation
Chapter 26: TCP (Transmission Control Protocol)








Transport Services
Transport Protocol Techniques
Congestion Control/Avoidance Techniques
Packet Loss and Adaptive Retransmission
Buffers, Flow Control and Windows
TCP Three-Way Handshake
TCP Congestion Control
TCP Segment Format
Chapter 25: UDP; Datagram
Transport Service

ในกรณีท ี่ Application ต้องการใช ้ Service ของ
Connectionless โดยทีไ่ ม่ตอ
้ งการ Service ใดๆ
เพิม
่ เติม จะสามารถใช ้ IP ได้โดยตรง แต่ย ังมีปญ
ั หา
สองประการ



กล่าวคือ เราต้องการ Layer 4 Protocol บางๆ ไม่ทา
ื่ มต่อระหว่าง
หน้าทีอ
่ ะไรมาก แค่เป็นการเชอ
Application Layer ก ับ IP Layer และมีการกาหนด
หมายเลข Application


Application เป็ น Layer 5 แต่ IP เป็ น Layer 3 นำมำวำงโดยตรง
ไม่ได ้
แต่ละ Host อำจจะมีหลำย Application ทีต
่ ้องกำร Service จำก IP
เรำต ้องมีกำรกำหนดหมำยเลข Application
หมำยเลขทีก
่ ำหนด เรำเรียก Port Number
้ อ
Protocol นีค
ื User Datagram Protocol (UDP)
Ch. 25: 25.2 Transport Protocol
and End-to-end Communication

IP ไม่ม ี Mechanism ในการแยกแยะระหว่าง
่ ในระด ับ End-toหลายๆ Application ทีส
่ ง
end



Field ใน IP Header กำหนดแค่ IP Address คือ
หมำยเลขของ Host เท่ำนัน
้
Host คือ End Point ในมุมมองของ IP
เราต้องการ Transport Layer Protocol


End Point ของ Transport Protocol คือ Application
ดังนัน
้ End-to-End Protocol ทีแ
่ ท ้จริงใน TCP/IP จะอยู่
ใน Transport Protocol แยกต่ำงจำก IP เป็ น Layer 4
Ch. 25: 25.3 The User Datagram
Protocol

TCP/IP จะมีสอง Transport Protocol

User Datagram Protocol(UDP) (Protocol 17; 0x11)




ั ซอน
้ และง่ำย
ไม่มค
ี วำมสลับซบ
แต่จะไม่ม ี Service อะไรมำกนั กให ้กับผู ้ใช ้
Transport Control Protocol(TCP)
UDP จ ัดว่าเป็น






End-to-end สำมำรถแยกแต่ละ Application ได ้
ื่ มต่อโดยไม่ต ้องทำ Connection
Connectionless เชอ
Message-Oriented แต่ละข ้อมูลที่ Application สง่ จะถือว่ำเป็ นหนึง่
Message ไม่มก
ี ำรทำ Segmentation
Best-Effort ใช ้ IP ในกำรสง่ โดยไม่ม ี Mechanism เพิม
่ เติม
Arbitrary Interaction แต่ละ Application สำมำรถสง่ ให ้กับหลำย
และรับได ้จำกหลำย Application
OS Independent
Ch. 25: 25.4 Connectionless
Paradigm


UDP ถือว่าเป็น Thin Protocol Layer
ื่ มต่อระหว่างหลาย Application โดยการ
เชอ
่ ข้อมูลผ่าน IP
สง
ื่ มต่อก ับ Network แบบ
ใชว้ ธ
ิ ก
ี ารเชอ
Connectionless


Application ไม่ต ้องทำ Connection ก่อนจะสง่
Message และเมือ
่ สง่ จบ ไม่ต ้องบอก Network ในกำร
ื่ สำร อยำกจะหยุดเมือ
จบกำรสอ
่ ไร ก็หยุดได ้เลย
ื่ สำร
ไม่มก
ี ำรบันทึก State ของกำรสอ


ไม่มก
ี ำรสง่ Control Message
ดังนัน
้ จะมี Overhead ตำ่ มำก
Ch. 25: 25.5 Message Oriented
Interface


่ Block ของ Data โดยที่ UDP
Application สง
่ ไป
จะมองว่าเป็นหนึง่ Message และจะถูกสง
ทงั้ Message โดยประกอบใน Packet เดียว
ไม่มก
ี ารแบ่ง หรือรวม
ด ังนนไม่
ั้
ตอ
้ งก ังวลเรือ
่ งการประกอบ Data
กล ับคืนมา หรือหาขอบเขตของข้อมูล


แต่ถ ้ำ Message มีขนำดเล็ก จะมี Overhead จำก
Header ต่ำงๆสูง
กลับกัน ถ ้ำ Message มีขนำดใหญ่กว่ำ MTU จะเกิดกำร
ั ้ IP
ทำ Fragmentation ในชน


Fragment อำจจะมีกำรกระทำตัง้ แต่ท ี่ Host ทำให ้ Efficiency
ลดลง
ในทำงปฎิบต
ั ิ ผู ้เขียน Program ควรกำหนดขนำด Message ไม่
เกิน 1400 หรือ 1450 ในกำรสง่ ผ่ำน Ethernet
Ch. 25: 25.6 UDP
Communication Semantics

เนือ
่ งจาก UDP จะใช ้ IP โดยไม่ม ี Service อะไร
่ Message แบบ Best-Effort
เพิม
่ เติม ด ังนนม
ั้ ันจะสง
่ เดียวก ับ IP นน
่ อาจจะ
เชน
่ ั หมายถึงว่า Message ทีส
่ ง
เกิด (เรียกว่า Communication Semantics)







สูญหำย
Duplicate
Delayed
Delivery Out-of-Order
Corrupted
UDP จะไม่มก
ี ารตรวจสอบ หรือพยายามแก้ไขปัญหา
ต่างๆเหล่านี้
หมายความว่า ผูเ้ ขียน Application ทีต
่ อ
้ งการใช ้ UDP
จะต้องเขียน Mechanism ทีจ
่ ะจ ัดการก ับสงิ่ เหล่านีเ้ อง
ใน Software ถ้าต้องการ

ถ ้ำเป็ นพวก Real-time Audio อำจจะไม่ต ้องทำ แต่ถ ้ำเป็ นข ้อมูล
สำคัญ ต ้องทำเอง หรือหันไปใช ้ TCP ซงึ่ จะกล่ำวในบทหน ้ำ
Ch. 25: 25.7 Mode of Interaction
and Broadcast Delivery

่ ข้อมูลได้ 4 แบบ
UDP จะยอมให้มก
ี ารสง


1-to-1
1-to-Many



Many-to-1


หนึง่ Application สำมำรถสง่ Message ให ้หลำย Application
UDP ยอมให ้ Application สง่ Message ผ่ำน Multicast หรือ
Broadcast
หนึง่ Application สำมำรถรับ Message จำกหลำยผู ้สง่
Many-to-Many

กลุม
่ ของ Application สำมำรถแลกเปลีย
่ นข ้อมูลกับกลุม
่ ของ
Application
Ch. 25: 25.8 End Point
Identification with Protocol Port

UDP จะต้องเป็น Independent ก ับ Operating System




UDP จะกาหนด Application ด้วย Port Number ซงึ่ จะ Map
เข้าก ับ PID ของแต่ละ Host อีกทีหนึง่



แต่ละ OS กำหนด Application ด ้วย PID(Process ID)
แต่ละ OS มีวธิ ก
ี ำรกำหนด PID ต่ำงกัน
UDP จะใช ้ PID เป็ นตัวกำหนด Application ไปได ้ เพรำะแต่ละเครือ
่ งจะใช ้
แตกต่ำงกัน แม ้ว่ำจะเป็ น Application เดียวกันก็ตำม
่ Echo Service ใช ้ Port 7 หรือ Timeserver Service ใช ้ Port 36
เชน
Port Number จะ Independent กับ OS ของ Host
ื่ สารกระทาโดย Application จะขอ Service ผ่าน Socket
การสอ
โดยกาหนด Address และ Port Number ให้ก ับ Socket


1-to-1 Application กำหนด Local Port, Remote IP Address, Remote
Port
Many-to-1 Application กำหนด Local Port แต่จะบอก UDP ว่ำ Message
จะมำจำกทีใ่ ดก็ได ้ ดังนั น
้ ทุกๆ Message ทีม
่ ป
ี ลำยทำงที่ Port นี้ จะถูกสง่
มำยัง Application นี้
Ch. 25: 25.8 End Point
Identification with Protocol Port


UDP Port 16 Bit จาก 0 – 65535
กาหนดการใชง้ านโดย IANA





Internet Assigned Numbers Authority
้ ้สำหรับเป็ น Port สง่ และไม่
Port 0 Reserved แต่ใชได
ต ้องกำรรับ
Port 0 – 1023 สำหรับ Common, Well-Known
Service
Port 1024 – 49151 เป็ น Registered Port สำหรับ
Application ทีข
่ น
ึ้ ทะเบียนไว ้กับ IANA
Port 49152 – 65535 เป็ น Dynamic Port ทีส
่ ำมำรถ
้ ้
นำไปใชได
Ch. 25: 25.9 UDP Datagram
Format

แต่ละ UDP Message เรียกว่า User
่ นคือ
Datagram ซงึ่ จะถูกแบ่งเป็นสองสว
ั้
Header ขนาดสนๆ(8
Octet) และ
Payload

UDP Message Length จะกำหนดขนำดของ
Message รวม Header เป็ น Byte
Ch. 25: 25.10 UDP Checksum และ
Pseudo Header


่ น Checksum ของ UDP เป็น Option ถ้าไม่
สว
้ ะใสศ
่ น
ใชจ
ู ย์
UDP Header จะไม่มข
ี อ
้ มูลของ IP Address
เพราะม ันต้องบรรจุใน IP ทีบ
่ ง
่ บอก Address
อยูแ
่ ล้ว


แต่ถ ้ำ IP Layer เกิดมีปัญหำ สง่ Message UDP มำผิดที่
ตัว UDP จะไม่สำมำรถตรวจสอบได ้ว่ำ Message ตัง้ ใจจะ
สง่ มำให ้ตัวเองหรือไม่
ดังนัน
้ Header Checksum จะคำนวนไม่ใชเ่ ฉพำะสว่ นหัว
ของ UDP แต่จะคำนวนจำกสว่ นหัวของมันบวกกับข ้อมูล
จำก IP Header ด ้วย เรียก Pseudo Header
Ch. 25: 25.10 UDP Checksum และ
Pseudo Header

ด ังนน
ั้ ถ้ามีการใช ้ Checksum ม ันจะคานวน
่ นห ัว บวกด้วย IP Address,
จากสว
Protocol(Type) และ UDP Length จาก IP
Header

กำรคำนวณจะนำแต่ละ 16 Bit Work มำทำ 1’s
Complement ผลลัพธ์ทไี่ ด ้จะทำ 1’s Complement อีก
ทีหนึง่ ถ ้ำผลเป็ นศูนย์จะทำ 1’s Complement อีกครัง้
Pseudo
Header
Ch. 25: 25.11 UDP Encapsulation

UDP บรรจุใน IP โดยใช ้ Protocol เบอร์
17 (0x11)
Chapter 26 TCP: Reliable
Transport Service

่
ในกรณีทเี่ ราต้องการความมน
่ ั ใจในการสง
ข้อมูลได้อย่างถูกต้อง ผ่าน IP ทีม
่ ก
ี ารทางาน
แบบ Datagram เราต้องใส ่ Mechanism
เพือ
่ ให้ความมน
่ ั ใจด ังกล่าวลงใน Protocol
ของ Layer 4 (Host-to-Host หรือ
Transport)



เรำจะต ้องเลือกใช ้ TCP (Transmission Control
Protocol)
เรียกรวมๆว่ำ TCP/IP
กำรใช ้ TCP+IP ทำให ้ผู ้เขียน Application ไม่ต ้องกังวล
เรือ
่ งของกำรสง่ ข ้อมูลอีกต่อไป



เพียงแต่นำข ้อมูลสง่ ให ้ พร ้อมกำหนด IP Address และ Port
Number จำกนัน
้ ระบบ TCP/IP จะจัดกำรทีเ่ หลือให ้
ผิดกับกรณีทใี่ ช ้ UDP/IP ในบททีแ
่ ล ้ว
ื่ สำร
กล่ำวคือ TCP จะให ้ Reliability ในกำรสอ
Chapter 26 TCP: 26.3 TCP
Service

่ นใหญ่ๆ ด ังนี้
TCP ให้บริการของ 7 สว

Connection Orientation


Point-to-Point Communication


แต่ละ Connection ของ TCP จะมีสอง End Points เท่ำนัน
้
(กำหนด Port ต ้นทำง-ปลำยทำง และ IP ต ้นทำง-ปลำยทำง )
Complete Reliability


TCP ให ้บริกำรแบบ Connection-Oriented ซงึ่ Application
ื่ มต่อก่อนทีจ
จะต ้องร ้องขอกำรเชอ
่ ะมีกำรสง่ ข ้อมูล
TCP จะ Guarantee ว่ำข ้อมูลทีส
่ ง่ จะไปถึงทีห
่ มำยได ้อย่ำง
ถูกต ้อง สมบูรณ์ และเป็ นลำดับ
Full Duplex Communication

แต่ละ TCP Connection จะยอมให ้ข ้อมูลสง่ ได ้สองทิศทำง
ตลอดเวลำ
Chapter 26 TCP: 26.3 TCP
Service(2)

่ นใหญ่ๆ ด ังนี(้ ต่อ)
TCP ให้บริการของ 7 สว

Stream Interface


Reliable Connection Startup


Application สำมำรถสง่ ข ้อมูลได ้อย่ำงต่อเนือ
่ ง Octet ต่อ Octet
ผ่ำน TCP Connection โดย TCP จะไม่มก
ี ำรรวมกลุม
่ ของ Data
ให ้เป็ น Record หรือ Message และจะไม่ Guarantee ว่ำแต่ละ
สว่ นของข ้อมูลทีไ่ ปถึงมีขนำดเท่ำกับที่ Application สง่ ให ้(มีกำร
ทำ Segmentation)
ื่ สำรได ้อย่ำง
TCP ให ้สอง Application สำมำรถเริม
่ ต ้นกำรสอ
มั่นใจ
Graceful Connection Shutdown

ก่อนทีจ
่ ะจบ Connection นัน
้ TCP จะให ้ควำมมั่นใจว่ำข ้อมูลได ้
ถูกสง่ อย่ำงครบถ ้วนทัง้ สองฝั่ ง และทัง้ สองฝั่ งยินยอมให ้มีกำรจบ
ื่ มต่อ
กำรเชอ
Chapter 26 TCP: 26.4 End-to-End
Service and Virtual Connection

TCP จ ัดว่าเป็น End-to-End Protocol เหมือน
UDP


แต่ม ันเป็น Connection-Oriented



ื่ สำรระหว่ำง Application
เนือ
่ งจำกมันให ้บริกำรกำรสอ
ของสอง Computer
เนือ
่ งจำกต ้องมีกำรทำ Connection ก่อนสง่ ข ้อมูล
และต ้องมีกำรทำ Disconnection
Connection ของ TCP จ ัดว่าเป็น Virtual
Connection

เนือ
่ งจำกกระทำผ่ำน Software เพรำะตัว Network (IP)
นัน
้ เป็ น Connectionless(Datagram)
Chapter 26 TCP: 26.4 End-to-End
Service and Virtual Connection

แต่ละ TCP Message จะถูกบรรจุใน IP Datagram
่ ผ่าน Internet เมือ
และสง
่ ถึงปลายทาง IP จะปลอก
่ ต่อไปย ัง TCP
Datagram Payload และสง


IP จะมอง TCP เป็ นแค่ Data ทีจ
่ ะต ้องสง่
TCP จะมอง IP เป็ นพำหนะสำหรับสง่ ข ้อมูล ไปยัง TCP อีกฝั่ งหนึง่
Chapter 26 TCP: 26.5 Transport
Protocol Techniques

ปัญหาที่ End-to-End Transport Protocol จะต้อง
เจอ ในการได้มาซงึ่ Reliable Service

Unreliable Communication


End System Reboot


ื่ มต่อใน Internet มีควำมสำมำรถรับ-สง่ ข ้อมูลได ้ไม่
แต่ละ Host ทีเ่ ชอ
เท่ำกัน
Congestion in the Internet


ถ ้ำ Host เกิด Crash หรือมีกำร Reboot ข ้อมูลทีค
่ ้ำงอยู่ จะต ้องไม่
ั สนกับ Session ทีถ
สบ
่ ก
ู สร ้ำงขึน
้ มำใหม่
Heterogeneous End System


้ ผิดพลำด ถูกหน่วงเวลำ หรือสง่ มำ
Message อำจจะสูญหำย ซำ้ ซอน
ไม่เป็ นลำดับ (Lost, Duplicated, Corrupted, Delayed, Out of
Order)
เมือ
่ มีกำรสง่ ข ้อมูลมำกเกินไป จะเกิดควำมคับคัง่ ภำยใน Network ได ้
้ ลายๆวิธรี ว
ปกติแล้ว Transport Protocol จะใชห
่ มก ัน
้ ฐานแต่
ในการจ ัดการก ับปัญหาเหล่านี้ เราจะกล่าวพืน
ละอ ันต่อไป
Chapter 26 TCP: 26.5.1 Sequencing to
Handle Duplicates and Out-of-Order
Delivery

Transport Protocol จะทา
Sequencing (กาหนดหมายเลขลาด ับ
ของข้อมูล) ในการจ ัดการก ับปัญหาเรือ
่ ง
Duplicate Data และข้อมูลทีไ่ ปถึงอย่าง
ไม่เป็นลาด ับ



คล ้ำยกับวิธท
ี ก
ี่ ระทำใน Layer 2
หมำยเลขข ้อมูลทำให ้เรำรู ้ว่ำข ้อมูลนัน
้ มำซ้ำกัน
หรือไม่
ทำให ้รู ้ว่ำข ้อมูลมำเป็ นลำดับหรือไม่
Chapter 26 TCP: 26.5.2 Retransmission to
Handle Lost Packet

ในการจ ัดการก ับ Packet Lost นน
ั้ Transport
Protocol จะใช ้ Positive
Acknowledgement ร่วมก ับการ
Retransmission



่ กัน
คล ้ำยกับ Mechanism ใน Layer 2 เชน
เมือ
่ Frame มำถึงอย่ำงถูกต ้อง จะมีกำรสง่ ACK
Message กลับไป
เมือ
่ ผู ้สง่ สง่ ข ้อมูลแต่ละ Packet จะมีกำรจับเวลำโดยใช ้
Timer


ถ ้ำ Timer Expire (คือไม่ได ้รับ ACK ในเวลำทีก
่ ำหนด) ผู ้สง่ จะ
ทำกำร Retransmission ข ้อมูลนัน
้ ไปใหม่
ถ ้ำ Packet มีกำร Delay มำก อำจจะทำให ้เกิด
Retransmission ยังผลให ้เกิด Duplicate Packet
Chapter 26 TCP: 26.5.3
Techniques to Avoid Replay

ในกรณีท ี่ Network มี Delay สูง อาจจะทาให้
เกิด ‘Replay Error’ โดยที่ Packet ที่ Delay
่ ผลต่อการสอ
ื่ สารในตอนหล ัง
นนจะส
ั้
ง
ยกต ัวอย่าง





ื่ สำรกันเมือ
สองคอมพิวเตอร์ตกลงจะสอ
่ เวลำ 13.00 น.
คอมพิวเตอร์เครือ
่ งหนึง่ สง่ 10 Packet ติดต่อกันไปยัง
ฝั่ งตรงข ้ำม
ปั ญหำด ้ำน Hardware ทำให ้ Packet 3 ถูก Delay ไป
้
้ นทำงที
้
เสนทำงกำรส
ง่ ข ้อมูลถูกเปลีย
่ น เพือ
่ ใชเส
ไ่ ม่ผำ่ น
อุปกรณ์ทม
ี่ ป
ี ั ญหำ
Protocol ทีค
่ อมพิวเตอร์ต ้นทำงสง่ Packet 3 ไปใหม่
ื่ สำร
จำกนัน
้ สง่ Packet อืน
่ ๆตำม จำกนัน
้ จบกำรสอ
Chapter 26 TCP: 26.5.3
Techniques to Avoid Replay









ื่ สำรกันเมือ
สองคอมพิวเตอร์ตกลงจะสอ
่ เวลำ 13.00 น.
คอมพิวเตอร์เครือ
่ งหนึง่ สง่ 10 Packet ติดต่อกันไปยังฝั่ งตรงข ้ำม
ปั ญหำด ้ำน Hardware ทำให ้ Packet 3 ถูก Delay ไป
้
้ นทำงที
้
เสนทำงกำรส
ง่ ข ้อมูลถูกเปลีย
่ น เพือ
่ ใชเส
ไ่ ม่ผำ่ นอุปกรณ์ทม
ี่ ี
ปั ญหำ
Protocol ทีค
่ อมพิวเตอร์ต ้นทำงสง่ Packet 3 ไปใหม่ จำกนัน
้ สง่
ื่ สำร
Packet อืน
่ ๆตำม จำกนัน
้ จบกำรสอ
ื่ สำรกันใหม่
เวลำ 13.05 น. คอมพิวเตอร์ทงั ้ สองตกลงทีจ
่ ะสอ
หลังจำกผู ้สง่ คนเดิม สง่ ไปได ้สอง Packet แล ้ว ตัว Packet 3 จำก
ื่ สำรครัง้ แรกทีถ
กำรสอ
่ ก
ู Delay มำถึงยังผู ้รับ
ื่ สำรครัง้ ทีส
ต่อจำกนัน
้ Packet ที่ 3 จำกกำรสอ
่ องมำถึงยังผู ้รับ
Transport Protocol ต้องออกแบบเพือ
่ จ ัดการก ับเรือ
่ ง
นี้ มิฉะนนผู
ั้ ร้ ับจะได้ Packet 3 ทีผ
่ ด
ิ พลาด ในขณะที่
โยนทิง้ Packet ทีถ
่ ก
ู ต้อง

Protocol จะต ้อง Mark แต่ละ Session โดยใช ้ ID ทีเ่ ฉพำะ ไม่ซ้ำ
้
กัน โดยกำรนำ ID กลับมำใชใหม่
ต ้องให ้แน่ใจว่ำจะไม่เกิด Replay
(เวลำต ้องห่ำงกัน)
Chapter 26 TCP: 26.5.3
Techniques to Avoid Replay

Replay ย ังสามารถเกิดก ับ Control
่ ก ัน
Packet ได้เชน

่ Connection Closing Packet ถูก Delay
เชน
และไปถึงหลังจำกมีกำรทำ Connection ใหม่
ครัง้ ทีส
่ อง
Chapter 26 TCP: 26.5.4 Flow
Control to Prevent Data Overrun

ในการจ ัดการเรือ
่ ง Heterogeneous End
System ทีม
่ ค
ี วามสามารถไม่เท่าก ัน ต ัว
Transport Protocol จะใชว้ ธ
ิ ก
ี ารของ Flow
Control เพือ
่ ควบคุม



Stop-and-go Protocol มักจะไม่ใช ้ เนือ
่ งจำกมี
ิ ธิภำพตำ่
ประสท
ปกติจะใช ้ Sliding Window Flowcontrol
่ เดียวกัน จะคล ้ำยกับ Flow Control ใน Layer 2
เชน


กำรคำนวณ Efficiency จะคล ้ำยกับทีก
่ ล่ำวมำแล ้วใน Layer 2
ให ้ดูใน Slide ก่อนหน ้ำ หรือดูจำก CPE 326 Course Notes
Chapter 26 TCP: 26.5.4 Flow
Control to Prevent Data Overrun
Chapter 26 TCP: 26.6 Techniques
To Avoid Congestion

่ มากเกิน
Congestion เกิดเมือ
่ มีขอ
้ มูลทีจ
่ ะสง
กว่าที่ Network จะร ับได้



อธิบำยได ้โดยใช ้ Queuing Theory
Packet จะถูก Delay ไปมำก ในลักษณะ Exponential
ถ ้ำ Queue ล ้น Packet จะสูญหำย
1 Gbps
1 Gbps
1 Gbps
Chapter 26 TCP: 26.6 Techniques
To Avoid Congestion

Retransmission เนือ
่ งจาก Queue ล้น จะทาให้เกิด
Congestion Collapse


Packet ที่ Retransmit จะถูกโยนทิง้ อีก เพรำะ Queue ล ้น
Congestion จะต้องตรวจจ ับได้อย่างท ันท่วงที และทา
ี หายต่อทงั้ Network
การแก้ไข มิฉะนนจะเกิ
ั้
ดผลเสย
ซงึ่ การตรวจจ ับของ Transport Protocol จะใช ้
้ ฐานจากสองวิธ ี
พืน


Intermediate System(Router) จะต ้องแจ ้งไปยังผู ้สง่ เมือ
่ มี
Congestion
ผู ้สง่ ตรวจจับกำรเกิด Congestion เอง โดยดูจำกค่ำ Delay หรือ
จำนวน Loss ของ Packet


ใน Internet จะใชวิ้ ธก
ี ำรนี้ เนือ
่ งจำก Delay และ Loss สว่ นใหญ่ (ถ ้ำ
ไม่ใชเ่ กิดจำก Hardware Failure) จะเป็ นผลมำจำก Congestion
กำรแก ้คือลดกำรสง่ ลง ทำได ้โดยกำรควบคุมที่ Flow Control (ลด
ขนำดของ Window ลง)
Chapter 26 TCP: 26.7 The Art of
Protocol Design




แต่ละ Technique ทีก
่ ล่าวมาจะต้องถูกเลือกใช ้
่ ผลต่อการออกแบบ Protocol
อย่าระว ัง และสง
Protocol Header จะต้องมี Field ทีจ
่ ะรองร ับ
ข้อมูลต่าๆเพือ
่ ควบคุมการทางาน
จะต้องแก้ปญ
ั หาเรือ
่ ง Computer Reboot
ด้วย เพือ
่ ป้องก ัน Duplicate Connection หรือ
การทา Connection ทีไ่ ม่ถก
ู ต้อง
ในห ัวข้อทีจ
่ ะกล่าวต่อไป จะเป็นรายละเอียด
เฉพาะที่ TCP เลือกใช ้
Chapter 26 TCP: 26.8 Techniques
Used In TCP To Handle Packet Loss

้ าร Retransmission ในกรณีท ี่ Packet
TCP ใชก
Loss


ื่ สำรทัง้ สองทิศทำง
ผ่ำนกำรทำ Positive Acknowledge ในกำรสอ
มีกำรใช ้ Transmission Timer




Transmission Timer ควรตัง้ ไว ้เท่ำไร
้ น
่
ตำ่ เกินไป จะมีผลให ้มี Duplicate Data ใน Network ทีช
่ ำเช
Satellite Network
ิ ธิภำพลดลง เชน
่ ใน LAN
สูงเกินไป จะทำให ้ประสท
Congestion ทีเ่ กิดขึน
้ จะทำให ้เกิด Delay และมีผลต่อกำรตัง้
Retransmission Timer


Ack อำจจะมี Delay เพิม
่ ในระดับ Magnitude ถ ้ำมี Congestion
Retransmission Timer ใน TCP จะต ้องมีควำมสำมำรถปรับให ้
เหมำะกับ Delay ใน Network

ไม่เหมือนกับ Layer 2 Retransmission Timer ซงึ่ เป็ นระดับ Point-toPoint (Link) ทีส
่ ำมำรถคำนวณและกำหนดล่วงหน ้ำได ้
Chapter 26 TCP: 26.8 Techniques
Used In TCP To Handle Packet Loss
Chapter 26 TCP: 26.9 Adaptive
Retransmission

ผูอ
้ อกแบบ TCP เล็งเห็นว่า การตงั้ Retransmission
ิ ธิภาพทีล
Timer ทีค
่ งทีจ
่ ะมีผลต่อประสท
่ ดลงของ
Internet


เนือ
่ งจำก Internet ประกอบด ้วย Network หลำยๆ Technology ทีม
่ ี
ค่ำ Delay ต่ำงกัน
TCP จะใช ้ Adaptive Retransmission Timer ที่
สามารถปร ับค่าตามค่า Delay ของ Network

TCP จะประมำณค่ำ Round-trip Delay จำกเวลำทีส
่ ง่ Packet
่ ตอนทำ Connection หรือชว่ ง
ออกไปและได ้รับคำตอบกลับมำ เชน
กำรสง่ ข ้อมูลและได ้รับ ACK




มันจะคำนวณค่ำ Round-Trip Delay โดยใช ้ Weighted Average
ร่วมกับค่ำ Variance
ปกติ มันจะตัง้ ค่ำ Timer สูงกว่ำ Round Trip เล็กน ้อย
เมือ
่ Delay เริม
่ มีกำรเปลีย
่ นแปลง มันจะตัง้ ค่ำ Timer เพิม
่ ขึน
้ ทีส
่ งู กว่ำ
ค่ำ Mean ทีค
่ ำนวณได ้ ร่วมกับค่ำ Variance
กำรใช ้ Weight Average จะทำให ้สำมำรถ Reset Timer เมือ
่ Delay
่ ำ่ ปกติ
กลับเข ้ำสูค
Chapter 26 TCP: 26.10 Comparison
of Retransmission Timer

พิจารณาจากการเกิด Packet Loss ของสอง
Network ทีม
่ ี Delay ต่างก ัน

ถ ้ำ Delay มีคำ่ สูง TCP จะตัง้ ค่ำ Timer ทีส
่ งู ตำม
Chapter 26 TCP: 26.11 Buffers, Flow
Control and Windows

TCP ใช ้ Window Mechanism ในการควบคุม
การใหลข้อมูล


ต่ำงจำก Window Flow Control ใน Layer 2 ทีน
่ ับเป็ น
Frame แต่ TCP จะกำหนด Window เป็ น Byte ของ
Data ทีส
่ ง่ ได ้
หลังจำกทำ Connection คอมพิวเตอร์ทงั ้ สองฝั่ งจะ
้
กำหนดค่ำ Buffer (Memory) เพือ
่ ใชในกำรรั
บ-สง่ ข ้อมูล



จำกนัน
้ มันจะสง่ ขนำดของ Buffer ทีเ่ หลือไปยังฝั่ งตรงข ้ำม
เมือ
่ ได ้รับข ้อมูล มันจะ Acknowledge ด ้วยค่ำของ Buffer ทีย
่ ัง
สำมำรถรับได ้ (Buffer ทีเ่ หลือ)
ดังนัน
้ คำว่ำ Window ในควำมหมำยของ TCP คือ จำนวน
Buffer เป็ น Byte ทีย
่ ังเหลืออยูท
่ จ
ี่ ะรับข ้อมูลได ้


เรียก Window Advertisement
ถ ้ำผู ้สง่ สง่ ข ้อมูลเร็วเกินไป ผู ้รับไม่สำมำรถ Process ทัน มันจะ
Acknowledge กลับมำด ้วย Zero Window

ผู ้สง่ ต ้องหยุดสง่
Chapter 26 TCP: 26.11 Buffers, Flow
Control and Windows(2)

้ นาดของ Segment สูงสุด
่ ใชข
ในต ัวอย่าง ผูส
้ ง
1000 Bytes โดยกาหนด Initial Window
Size 2500 Bytes




ผู ้สง่ สง่ สำม Segment ขนำด 1000, 1000 และ 500
Bytes
ผู ้รับ Process ไม่ทน
ั สง่ Zero Window Advertisement
ผู ้สง่ หยุดสง่
ต่อมำผู ้รัยทำกำร Process 2000 Byte ของ Data
จำกนัน
้ ทำกำร Advertise ว่ำรับได ้อีก 2000 Byte เหนือ
จำกทีร่ ับแล ้ว 2500 Byte



Window Size จะวัดต่อจำก Data ทีท
่ ำกำร Acknowledge
เสมอ
ผู ้สง่ สง่ อีกสอง Segment แต่ละอันมีขนำด 1000 Byte
Window Size ลดลงเหลือศูนย์อก
ี ทำให ้ผู ้สง่ หยุดสง่
Chapter 26 TCP: 26.11 Buffers, Flow
Control and Windows(3)
Chapter 26 TCP: 26.12 TCP ThreeWay Handshake

ในการทีจ
่ ะให้แน่ใจว่าการทา Connection และการ Terminate
Connection ไม่ผด
ิ พลาด TCP จะใชว้ ธ
ิ ก
ี ารของ Three-Way
Handshake




Control Message ทีใ่ ชร้ ะหว่างทา Three-Way Handshake
Connection เรียก Synchronization Segment (SYN
Segment) และเรียก Finish Segment(FIN Segment) สาหร ับ
Control Message ตอนทา Termination
ตอนทา Three-Way Handshake จะมีการเลือก Sequence
Number



ระหว่ำงกำรทำ Three-way Handshake จะมีกำรแลกเปลีย
่ น Control
Message และกำหนดขนำดของ Buffer
Three-Way Handshake จะสำมำรถจัดกำรกับกรณีทเี่ กิด Packet Loss,
Duplicate, Delay และ Replay ได ้ และจะ Guarantee ว่ำ Connection จะ
สร ้ำงและจบลง เมือ
่ ทัง้ สองฝ่ ำยตกลงกัน
แต่ละด ้ำนจะเลือกเลข 32 Bit แบบ Random เป็ น Sequence เริม
่ ต ้น ของ
Data
ถ ้ำเกิดกำร Reboot และ Application พยำยำมจะทำ Connection ใหม่
โอกำสทีจ
่ ะได ้ Sequence เดิมจะน ้อยมำก ดังนั น
้ ปั ญหำ Replay จะเลีย
่ งได ้
่ FIN ร่วมก ับ
ในกรณีทท
ี่ า Close Connection จะมีการสง
Acknowledge เพือ
่ ให้แน่ใจว่า Data ได้ร ับครบถ้วนก่อนจะปิ ด
Connection
Chapter 26 TCP: 26.12 TCP ThreeWay Handshake(Open Connection)
Chapter 26 TCP: 26.12 TCP ThreeWay Handshake(Close Connection)
Chapter 26 TCP: 26.13 TCP
Congestion Control

TCP มี Congestion Control ทีด
่ เู หมือน
ประหลาดกว่าทว่ ั ไป



เนือ
่ งจำก Congestion ทำให ้เกิด Delay สง่ ผลให ้เกิด
Retransmission สง่ ผลกลับมำให ้ Congestion หนักขึน
้
คือเกิด Congestion Collapse
แม ้ว่ำกำรจัดกำรกับ Congestion ทัว่ ไปจะใชวิ้ ธล
ี ดอัตรำ
กำรสง่ แต่ TCP ไม่สำมำรถคำนวณอัตรำกำรสง่ ได ้ เพรำะ
วัดกำรสง่ จำก Buffer ทีไ่ ด ้รับจำกอีกฝั่ งหนึง่
ดังนัน
้ กำรควบคุมอัตรำกำรสง่ ใน TCP จะควบคุมจำกกำร
เปลีย
่ นแปลงขนำดของ Window แทน


กำรลดขนำด Window ลงชวั่ ครำว จะเป็ นกำรลดอัตรำกำรสง่
ข ้อมูลไปในตัว
เมือ
่ มี Data Loss (คือ Congestion ในมุมมอง TCP) ขนำด
Window จะถูกลดลง
Chapter 26 TCP: 26.13 TCP
Congestion Control(2)

TCP มี Congestion Control หลาย
Algorithm ทีน
่ ย
ิ มคือวิธข
ี อง ‘Slow Start’

เมือ
่ เริม
่ Connection ใหม่ หรือกรณีทม
ี่ ี Message Loss
มันจะเริม
่ จำกกำรสง่ หนึง่ Message



ถ ้ำมันได ้รับ ACK มันจะสง่ สอง Message
ถ ้ำได ้รับ ACK ทัง้ สอง มันจะสง่ 4 Messgae
และจะสง่ เป็ นสองเท่ำตรำบใดทีไ่ ด ้รับ ACK ครบ เรือ
่ ยไปจนถึง
สง่ เท่ำกับครึง่ หนึง่ ของ Window Size ที่ Advertise จำกผู ้รับ


ถ ้ำมี Congestion จะเริม
่ สง่ ทีละ Message ใหม่


จำกนั น
้ มันจะเพิม
่ กำรสง่ แบบ Linear ตรำบเท่ำทีไ่ ม่มก
ี ำร
Congestion
ดังนั น
้ ทุกคนจะหยุดสง่ ถ ้ำเกิด Congestion และป้ องกันกำรเกิด
Congestion Collapse
Congestion Control จะใชร่้ วมกับ Congestion
Avoidance ซงึ่ มี Algorithm มำกมำย
Chapter 26 TCP: 26.14 TCP Segment
Format

้ ับ Message,
มี Format เดียว ใชก
Acknowledge, SYN, FIN


แต่ละ Message ของ TCP เรียก Segment
แต่ละ Segment สำมำรถสง่ Data, Acknowledge ของ
Data ทีไ่ ด ้รับ, Window Advertisement




Acknowledgement Number และ Window Field หมำยถึง
Data ทีไ่ ด ้รับ คือ Sequence Number เริม
่ ต ้นของ Data ถัดไป
ทีต
่ ้องกำร และ Buffer ทีเ่ หลือ ถ ้ำ Data ทีไ่ ด ้ไม่เป็ น Order มัน
จะสง่ Ack Number ของ Data ทีค
่ ำดหวังซ้ำๆจนกว่ำจะได ้รับ
Sequence Number หมำยถึง Sequence Number ของ Byte
แรกของ Data ทีส
่ ง่
Checksum จะเป็ น Checksum ของ Header และ Data
Code Bit บ่งบอกว่ำเป็ น Segment ชนิดใหน (Data, SYN, FIN)
Chapter 26 TCP: 26.14 TCP Segment
Format
HW 5: UDP และ TCP

ให้ Download Question จาก Web
End of Week 11

Next Week, Week 12

Routing Part I: Routing Mechanism