สวิตช์เรียนรู้ตารางสวิตช์อย่างไร


22

สมมติว่าตารางสวิตช์ว่างเปล่า หากคอมพิวเตอร์ A ส่งเฟรมไปยังคอมพิวเตอร์ B สวิตช์จะออกอากาศถามว่าใครมีที่อยู่ mac ของ B จะเกิดอะไรขึ้นถ้า C ส่งเฟรมไปที่ A ทันที กลไกคืออะไรสวิตช์จึงไม่คิดผิดว่าคอมพิวเตอร์ C คือคอมพิวเตอร์ B มันคือการจำที่อยู่ mac ของปลายทางที่ต้องการโดยคอมพิวเตอร์ A และเมื่อ C พยายามที่จะได้รับ A ก็ยังมีที่อยู่ mac ของตัวเองและสวิตช์เห็นว่ามันไม่ได้เป็นปลายทางเดียวกับคอมพิวเตอร์ที่ต้องการ?

โดยทั่วไปฉันถามเมื่อสวิตช์ท่วมที่อยู่ Mac ที่ไม่รู้จักสำหรับคำขอที่ส่งโดยโฮสต์ A จะทราบได้อย่างไรว่าปลายทางกำลังตอบสนองต่อโฮสต์ A หรือหากมีโฮสต์อื่น ๆ เพิ่งส่งสัญญาณไปยัง A


คำตอบใดช่วยคุณได้บ้าง ถ้าเป็นเช่นนั้นคุณควรยอมรับคำตอบเพื่อที่คำถามจะไม่โผล่ขึ้นมาเรื่อย ๆ โดยมองหาคำตอบ หรือคุณสามารถให้คำตอบของคุณเองและยอมรับได้
Ron Maupin

คำตอบ:


34

สวิตช์เลเยอร์ 2 (บริดจ์) มีตารางที่อยู่ MAC ที่มีที่อยู่ MAC และหมายเลขพอร์ต สวิทช์ทำตามอัลกอริธึมง่ายๆสำหรับส่งต่อแพ็คเก็ต

  1. เมื่อได้รับเฟรมสวิตช์จะเปรียบเทียบที่อยู่ MAC แหล่งที่มากับตารางที่อยู่ MAC หากไม่ทราบแหล่งที่มาสวิตช์จะเพิ่มเข้าไปในตารางพร้อมกับหมายเลขพอร์ตที่ได้รับแพ็กเก็ต ด้วยวิธีนี้สวิตช์จะเรียนรู้ที่อยู่ MAC และพอร์ตของอุปกรณ์ส่งสัญญาณทุกตัว

  2. สวิตช์จากนั้นเปรียบเทียบที่อยู่ปลายทางของ DESTINATION กับตาราง หากมีรายการสวิตช์จะส่งต่อเฟรมออกจากพอร์ตที่เกี่ยวข้อง หากไม่มีรายการสวิตช์จะส่งแพ็กเก็ตออกไปนอกพอร์ตทั้งหมดยกเว้นพอร์ตที่เฟรมได้รับ (Flooding)

โปรดทราบว่าสวิตช์ไม่ได้เรียนรู้ MAC ปลายทางจนกว่าจะได้รับเฟรมจากอุปกรณ์นั้น


ขอบคุณ @Ron สำหรับการอธิบายให้ดีขึ้น ตอนนี้ฉันรู้ว่าน้ำท่วมคือ สามารถพบได้ที่en.wikipedia.org/wiki/Unicast_flood
Damon

สิ่งนี้ไม่ตอบคำถามที่ฉันถาม
Celeritas

5
@Ceritas สมมติฐานของคุณในคำถามของคุณไม่ถูกต้อง สวิตช์ไม่ "ถาม" ว่าใครมีที่อยู่ mac หากไม่รู้ MAC ปลายทางปลายทางจะทำให้เฟรมเต็มพอร์ตทั้งหมด มันจะเรียนรู้แหล่งที่มาของ MACs เมื่อได้รับเฟรม ดังนั้นในคำถามของคุณสวิตช์สามารถบอกความแตกต่างระหว่าง B และ C เพราะมีที่อยู่ MAC ที่แตกต่างกัน
Ron Trunk

4
@Celeritas - สวิตช์ไม่รู้หรือไม่สนใจว่าเหตุใดโฮสต์จึงส่งข้อมูลบางอย่างไปยังโฮสต์ A เหตุใดจึงเป็นเรื่องสำคัญหากโฮสต์ตอบสนองต่อโฮสต์ A หรือโฮสต์อื่นกำลังส่งสิ่งอื่นไปยังโฮสต์ A สวิตช์จะสนใจว่า MAC ปลายทางนั้นมีไว้สำหรับโฮสต์ A (และ MAC ต้นทางคืออะไรถ้าไม่ใช่ในตารางที่อยู่ MAC) เฉพาะโฮสต์ A ใส่ใจหากเฟรมที่ได้รับเป็นการตอบสนองจากโฮสต์ที่เฟรมส่งมา แต่เดิม
Ron Maupin

สิ่งที่รอนพูดแนวคิดนี้แยกจาก ARP
หัวหน้าจอร์แดน

4

คำถามของคุณสันนิษฐานว่าสวิตช์มีส่วนเกี่ยวข้องหรือรับรู้ถึงการสื่อสาร / การสนทนาระหว่างสองโฮสต์ (นี่เป็นการสนทนาระหว่าง A และ B หรือระหว่าง A และ C หรือไม่) สวิตช์ไม่เกี่ยวข้องในการสื่อสาร / การสนทนาระหว่างสองโฮสต์ มันรู้เพียงแค่ (หรือเรียนรู้) ว่าที่อยู่ MAC ใดที่เชื่อมโยงกับพอร์ตและส่งต่อ (หรือสวิทช์) การรับส่งที่กำหนดสำหรับที่อยู่ MAC เฉพาะไปยังพอร์ตที่เกี่ยวข้อง (เมื่อได้เรียนรู้ว่าพอร์ตใดที่เชื่อมโยงกับที่อยู่ MAC) แหล่งที่มาคือ B หรือ C หรือโฮสต์อื่น ๆ ที่เชื่อมต่อกับพอร์ตสวิตช์อื่น ๆ

สวิตช์ทำงานที่ชั้น 2 การจัดการเซสชั่นเป็นความรับผิดชอบของเลเยอร์ที่สูงขึ้น


-2

มันไม่ได้เรียกว่าตารางสวิตช์; ตาราง MAC ตอนนี้ให้พิจารณาว่าตาราง MAC นั้นว่างเปล่า เมื่อ A พยายามส่งแพ็กเก็ตไปยัง B แพ็กเก็ตประกอบด้วยที่อยู่ MAC ของ A และ B สวิตช์จะอัปเดตที่อยู่ MAC ของ A ในตาราง MAC ตอนนี้เนื่องจากมันไม่รู้พอร์ตที่เชื่อมต่อ B ดังนั้นมันจึงออกอากาศแพ็กเก็ตARPที่พอร์ตทั้งหมดและรอให้โฮสต์ทั้งหมดตอบกลับ

ในเวลาเดียวกันถ้า C พยายามส่งแพ็กเก็ตไปยัง A มันจะแยกที่อยู่ MAC ของ C จากแพ็กเก็ตนั้นและเก็บไว้ในตาราง MAC ตอนนี้เนื่องจากที่อยู่ MAC ของมีอยู่แล้วในตาราง MAC ดังนั้นจึงรู้ว่าพอร์ต A ใดที่เชื่อมต่ออยู่ โปรดจำไว้ว่าแพ็กเก็ตข้อมูลมีที่อยู่ MAC ของทั้งต้นทางและปลายทาง ดังนั้นที่อยู่ MAC ของ B & C จึงแตกต่างกัน ดังนั้นสวิตช์จึงไม่สับสน ตอนนี้สลับไปข้างหน้าแพ็คเก็ตจาก C เป็น A (ระบุว่าทั้งสองมีอยู่ใน VLAN เดียวกัน)

ในการส่งแพ็คเก็ตจาก A ถึง B มันจะรอจนกระทั่ง B ตอบกลับไปยังแพ็กเก็ต ARP ที่ส่งโดยสวิตช์ เมื่อได้รับการตอบสนองจาก B มันจะอัพเดทที่อยู่ MAC ของ B ในตาราง MAC จากนั้นในที่สุดแพ็กเก็ตจะถูกส่งต่อไปยัง B

ดังนั้นสวิตช์จะไม่สับสนเนื่องจาก data packets (tcp / udp) มีทั้ง MAC ต้นทางและปลายทาง และสวิทช์ของคุณจะไม่ส่งต่อแพ็กเก็ตบนอินเทอร์เฟซที่ทราบว่าโฮสต์ MAC address ปลายทางนั้นไม่รู้จัก ต้องรอจนกว่าโฮสต์ปลายทางจะตอบกลับการออกอากาศ ARP ที่ส่งโดยสวิตช์


1
สิ่งนี้ไม่ถูกต้องทั้งหมด สวิตช์ยกเว้นว่ามันเป็นสวิตช์ layer-3 ไม่ใช่ ARP ARP คือการแก้ปัญหาระหว่าง layer-2 และ layer-3 และสวิตช์ไม่รู้จัก layer-3 สวิตช์ทำหน้าที่ถ่ายทอดเฟรมโดยที่ไม่ทราบปลายทาง MAC ไปยังพอร์ตสวิตช์ทุกอัน โฮสต์จะไม่สนใจเฟรมใด ๆ ที่มี MAC ปลายทางไม่ใช่ของตัวเอง
Ron Maupin

1
และความกระจ่างเล็กน้อยในการชี้แจงของรอน ... ส่วนใหญ่เป็นเพียงการแก้ไขคำศัพท์ เมื่อสวิตช์ส่งแพ็คเก็ตออกไปยังทุกพอร์ต (ยกเว้นพอร์ตทางเข้า) เนื่องจากไม่ทราบว่าที่อยู่ MAC โดยเฉพาะอยู่ที่ไหนโดยทั่วไปจะเรียกว่า "การทำให้น้ำท่วม"
Jeff McAdams

@ Ron ขอขอบคุณสำหรับการแก้ไขของคุณ ลืมเขียนว่านี่เป็นสวิตช์เลเยอร์ 3 และฉันก็ยอมรับว่าฉันลืมคำว่าน้ำท่วมดังนั้นฉันจึงเขียนคำตอบสำหรับสวิตช์เลเยอร์ 3 และเจฟฟ์ขอบคุณสำหรับการบอก
Damon

@ Jeff McAdams คุณถูกต้องมันเป็นน้ำท่วมขอบคุณ มันเป็นก่อนที่กาแฟถ้วยแรกของฉันหลังจากฉันตื่น แต่เช้าและฉันหมายถึงการถ่ายทอดในแง่ของภาษาไม่ใช่ความรู้สึกของเครือข่าย
Ron Maupin

@Damon นั่นคือสิ่งที่ฉันไม่ทราบว่าทุกเฟรมมีที่อยู่ MAC ต้นทางและปลายทาง
Celeritas
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.