Ağ bağdaştırıcıları gelen bitleri tek bir akışta okuyor mu?


9

Bir Gigabit ağ bağdaştırıcısı veri alırken, bitleri nasıl alıyor? Hepsini 0'lar ve 1'lerin bir akışında mı görüyor? Yoksa aynı anda 0 ve 1'in birden fazla akışı var mı?

Örneğin ... diyelim ki iki gönderme cihazı ve bir alıcı cihaz var.

Aygıt 1 ve 2, ağ verilerini Aygıt 3'e aynı anda göndermeye başlar.

Benim varsayım, Aygıt 3'ün Ağ bağdaştırıcısının bakış açısından, 0'ların ve 1'lerin tek bir veri akışında karşılaştığıdır. Cihaz 1 veya 2'den hangi verilerin olduğunu bulabilir, ancak veriler hala milyonlarca / milyarlarca bitlik bir akıştır.

Tamamen yanlış mıyım? :)


1
Yarım dubleks bağlantı mı yoksa tam dubleks mi kullanmak istiyorsunuz? Hala bu standartta olmasına rağmen, 1000Base-T için hiçbir yarı çift yönlü cihaz yoktu. Tam çift yönlü bağlantıda, bağlantıda aynı anda üçüncü aygıt için yarışan iki aygıttan çerçeve olmaz.
Ron Maupin

Tam dubleks. Tamam, bu yüzden hala 0'lar ve 1'lerin tek bir akışı olurdu (ör: 01010101010001010010101001010100001101011010) ve Cihaz 3'ün bakış açısından (alıcı), Cihaz 1 ve 2 bu akışı açarken, ikisi de asla 0'ları ve 1'leri aynı anda gönderiyor olmak, değil mi?
shihku7

Herhangi bir cevap size yardımcı oldu mu? Öyleyse, cevabı kabul etmelisiniz, böylece soru sonsuza kadar ortaya çıkmayacak, bir cevap arıyor. Alternatif olarak kendi cevabınızı verebilir ve kabul edebilirsiniz.
Ron Maupin

Yanıtlar:


14

Değişir.

Birçok Ethernet PHY'si verileri tamamen seri bir şekilde iletirken (örn. 100BASE-TX, 1000BASE-SX, 10GBASE-SR), bazıları veri akışını paralel olarak iletilen birden çok şeride böler.

En yaygın olarak, 1000BASE-T - bakır üzerindeki ortak gigabit üzeri varyant - kodlanmış veri akışını dört şeride böler ve her birini bir Cat-5 kablosundaki dört bükümlü çiftten birinde ayrı olarak iletir. Gigabit'ten tüm bükülmüş çift varyantları bu dört şeridi kullanır.

Bazı yüksek hızlı (10G +) fiber PHY'ler ayrıca on altı fibere kadar (çok modlu fiber ve kısa menzilli) veya dalga boylarında (tek modlu fiber ve uzun menzilli) birden fazla şerit kullanır.

Bununla birlikte, her şey her birinin tek bir kaynaktan tek bir hedefe koştuğu çerçevelerde iletilir . Çerçeveler genellikle atomiktir, yani. her zaman tek parça halinde iletilirler. Her çerçeve yalnızca belirli bir bağlantıdan / uygulamadan veri aktarır. Başlığı kaynak ve hedef adresleri içerir, böylece ağ üzerinden yolunu bulabilir.

Ağ, aynı hedef bağlantı noktası için aynı anda farklı kaynaklardan iki kare aldığında, hedefe doğru anahtar bağlantı noktası ilk kareyi iletmeyi bitirinceye kadar karelerden birinin sıraya alınması gerekir.

Bu, kaynakların ve hedefin aynı hızda çalıştığını varsayar ve bu da doğru değildir. 1 Gbit / s bağlantıyla bağlı bir dosya sunucunuz olabilir ve her biri 100 Mbit / s bağlantılarında tam (önemli) kuyruk olmadan tam hız gönderen on istemciniz olabilir. Bu, "çoklu akışlar" önerinize biraz yakındır, yalnızca bu akışlar bit düzeyinde değil, çerçeve düzeyinde serpiştirilir.

Bir ağ bağlantı noktasındaki oran tek bir saniyede binlerce hatta milyonlarca kare olabilir, bu yüzden insan bakış açısından birden fazla akışı ayırt etmek imkansızdır - hepsi 'eşzamanlı' görünür.


Lütfen diğer answerer @jonathanjo ile bir araya gelin ve 1000Base-T'nin hangi açıklamasının doğru olduğunu öğrenin.
davidbak

1
jonathanjo'nun "aynı ortamı", Gigabit Ethernet'te (pratik olarak) bulunmayan ve 10/100 Mbit için kullanılmayan çok portlu bir çarpışma alanını tarif ediyor.
Zac67

2
@davidbak burada benim için her şey yolunda görünüyor - Zac genellikle! - sadece farklı vurgu. Cevabımdaki pratik 1000baseT'de çarpışmaların netleşmemesi de dahil olmak üzere birkaç şeyi düzelttim.
jonathanjo

2
Buna temel olarak birden çok bitin bire ulaşmasını sağlayan PAM16 ve benzer kodlamalar eklemeniz gerekir.
PlazmaHH

1
@PlasmaHH 1000BASE-T zaten dört şerit ve PAM5 kullanıyor, bu yüzden her saat adımında kabaca 9.3 ham bit (ve elbette L1 için 125 MBd'de 8 "kullanıcı" biti).
Zac67

13

Şimdilik Gigabit bölümünü görmezden gelelim ve "2 cihaz aynı anda gönderiyor" bölümüne biraz odaklanalım.

On paylaşılan medya , bu aslında olur ve bir sorun olabilir. Çoğu kablosuz iletim paylaşılan ortamdır ve Ethernet eskiden eskiden şöyle idi:

  • 10base2 (koaksiyel), üzerinde her biri olan az çok tek bir kablo kullanıyordu. Açıkçası, iki (veya daha fazla) istasyon aynı anda iletim yapabildi;
  • 10baseT ve 100baseT (bükümlü çift tabanlı), hub'lı (anahtarlar yerine) aynı zamanda iki (veya daha fazla) istasyonun aynı anda iletilebileceği anlamına geliyordu, çünkü bağlı herhangi bir cihazdan alınan sinyal diğerlerine tekrar tekrar verildi.

Şimdi, iki cihaz aynı anda gönderiliyorsa, iki şey olabilir:

  • bir kişinin belirli bir kanalı dinleyebilmesi ve diğerleri tarafından rahatsız edilmemesi için ayrı "kanallara" izin veren bir çeşit çoklama (zaman bölme, frekans bölme ...) kullanırsınız. Bu, kablosuz iletimler için çok kullanılır, kablolu iletimler için çok daha azdır (fiberlerde WDM / DWDM bir istisnadır).

  • veya aynı kanalda aynı anda iki veya daha fazla cihaz gönderiyorsa, çarpışma denilen şeyi alırsınız : iki kişi aynı anda konuşurken, her ikisinin de söylediklerini anlayamazsınız, alıcı cihazların herhangi bir cihaz tarafından gönderilen verileri deşifre edebiliyor (veya daha sıklıkla, bunların kodunu çözebiliyorlar, ancak mantıklı değil ve CRC kontrollerini geçmeyecek).

CSMA-CD (Carrier-Sense Çoklu Erişim, Çarpışma Algılama) gibi şemaların devreye girdiği yer burasıdır :

  • Aktarmaya çalışmadan önce, bir cihaz başka birinin gönderip göndermediğini kontrol eder (operatör algısı)
  • Kanal boşsa, iletmeye başlar.
  • Ancak bununla bile, iki cihaz aynı anda başlayabilir, böylece yine de bir çarpışma yaşayabilirsiniz.
  • Kanalda çok fazla zaman harcamaktan kaçınmak için, cihazlar çarpışmaları algılar (gönderdiklerini aldıkları ile karşılaştırarak: eşleşmezse, o zaman başka birinin aynı anda gönderdiği anlamına gelir), iletimi iptal eder, ve rastgele bir gecikmeden sonra tekrar deneyin (yeni bir çarpışmadan kaçınmak için).

Bu oldukça eğlenceliydi ve hafif yüklü ağlarda oldukça iyi çalıştı, ancak trafik önemli hale gelir gelmez tonlarca çarpışma ile sonuçlanacaksınız, bu da paylaşılan medyanın kullanımını arttırıyor ve bu da daha fazla çarpışma ile sonuçlanıyor, böylece oldukça kötüleşebilir.

Bunun cevabı tam çift yönlü anahtarlamalı ağlara geçmekti . Hublar sinyali düşünmeden tekrarladılar. Diğer yandan anahtarlar gerçekten bir çerçeve alır ve hedef bağlantıya yeniden gönderir (ek bonus: çerçeve herkese gönderilmez, çoğu durumda hedefe gönderilir).

İki cihaz aynı hedef cihaza gönderilirse, anahtar çerçevelerden birini sıraya alır, böylece aynı anda gönderilen iki çerçeve aslında hedefe birbiri ardına gelir.

Bunun ötesinde, fiziksel düzeyde, birkaç çift veya hatta birkaç kablo üzerinden veri alışverişi yapmak oldukça olasıdır. Bunun bit düzeyinde yapılıp yapılmaması veya her bir çift / kablo üzerinde tüm çerçevelerin gönderilmesi, kullanılan teknolojiye bağlıdır. Ama bence bu gerçekten senin sorunun değildi.


1
Bu mükemmel bir noktadır - muhtemelen soru için en uygun cevap. Gerçekten yüksek hızlara (fiber) ulaştıklarında, çarpışmalardan kaçınmak için genellikle bir hatta tek bir gönderen ve tek bir alıcı ile sınırlı olduklarını ekleyebilirim. Başka bir girişin eklenmesi gerekiyorsa, başka bir kanala alınır ve gelen akışla birleştirilir ve ardından giden bir akışa gönderilir. Bu günlerde bile Ethernet, çarpışmaları önleyen "Anahtarlı" olma eğilimindedir - çarpışmaları gördüğünüz ana yer (söz konusu gibi biriyle konuşan 2 cihaz) bu gün wifi - diğer her şey 1 alıcıdan 1 alıcıya
Bill K

12

Bu özel durum karmaşık bir konudur.

1000baseT ile ilgili olarak.

Birincisi: genel olarak iki cihazın aynı anda iletim yaptığını söylediğimizde, normal olarak aynı ortamda aynı anda bit göndermiyorlar. Bunu yaparlarsa, bir çarpışma olur ve tüm dinleme cihazları bunu yapar (sonunda, çeşitli çarpışma tespit şemaları aracılığıyla.) Böylece, iki verici cihaz ortama biraz farklı anlarda erişir. Ancak 1000baseT'de belirli bir çift setinde sadece iki cihaz vardır; normalde bir cihaz bir anahtar ve diğeri bir ana bilgisayardır.

İkinci olarak, 1000baseT, bir çift üzerinde bir kerede iki veri biti iletir ve beş voltaj seviyesinde karmaşık bir şekilde kodlanır. Yani tel üzerinde bir dizi taban-4 basamak, bir dizi taban-2 basamak değil.

Üçüncü olarak, 1000baseT her iki yönde aynı anda, aynı çiftte iletim yapabilir. Giden sinyali gelen sinyalden hibrid adı verilen bir devre ile ayırabilir.

Gigabit ethernet diğer ortamlara göre farklı davranır. Daha düşük hızlar, örneğin 10baseT ve 100baseT daha basit şemalara sahiptir. Bir hub üzerindeki 10baseT'nin gerçek çarpışmaları var; over anahtarları normalde anahtar tarafından düzenlenir, böylece giden kareler sıraya alınır; eğer tam çift yönlü ise, hiç çarpışma olmaz.


Lütfen diğer answerer @ Zac67 ile bir araya gelin ve 1000Base-T'nin hangi açıklamasının doğru olduğunu öğrenin.
davidbak

@jonathanjo Üç bitlik semboller konusunda haklısın ama sadece beş PAM seviyesi var. Kabaca, 8-bit ila dört 3-bit semboller ve 3-bit sembollerin PAM seviyelerine (kaydırma) eşleştirildiği karıştırma kodlaması.
Zac67

@davidbak aldığınız için teşekkürler. Açıklamayı ana noktayı (karmaşık ve ikili değil) kapsayacak şekilde basitleştirdim ve hatadan kurtuldum. Açıklık için teşekkürler Zac.
jonathanjo

7

Burada tüm kablolu ethernet bağlantılarını varsayalım.

Aynı ağ kesimindeki iki cihaz aynı anda gönderildiğinde, kime gönderdikleri önemli değil, buna çarpışma denir . Her iki mesaj da bir çarpışma olduğunda iletilmez. Neyse ki, gönderenler çarpışmaları algılama yeteneğine sahiptir . Bu olduğunda, her gönderenin beklemek ve tekrar denemek için rastgele bir süre (saniyenin küçük kısımları) seçer ve sonunda yalnızca bir gönderici etkin olana kadar işlemi tekrarlar.

Ama bu artık neredeyse hiç olmadı.

Bunun yerine, bugün çoğu kablolu bağlantı, her cihazın (hem alıcılar hem de alıcılar) bir anahtar üzerindeki kendi ayrı bağlantı noktalarına bağlandığı anahtarlamalı ağlar üzerinden yapılır . Veriler paketlere ayrılır (gerçekten: çerçeveler ) ve anahtar, her bağlantı noktasında bir seferde yalnızca bir paketin etkin olmasını sağlar. Bir bağlantı meşgulse, bağlantı yeniden kullanılabilir olduğunda anahtar diğer çerçeveleri kaydeder ve alıcıya iletir .

Bu şema ile, çarpışmaların tek yolu, anahtara bağlı birden fazla aygıtın veya birbirinin anahtarsız bir hub aracılığıyla (ev wifi "yönlendirici" nin bazı modellerindeki bağlantı noktaları hala devre dışı kaldığında) veya bir anahtar ve bir cihaz arasındaki bağlantı yarı çift yönlü modda çalışır .

Bunun yerine ele aldığımız şey tıkanıklıktır . Çarpışma olmayabilir, ancak ağdaki popüler bir ana bilgisayarda, arabellek doldurulacak şekilde bağlantının destekleyeceğinden daha fazla veri ve paket göndermek isteyen cihazlar olabilir. Ama bu başka bir mesele.


1
Nitpicking, ancak Ethernet düzeyinde, paketler yerine çerçeveler olurdu .
jcaron

1
@jcaron Nit-nit-picking: Elbette RFC 791'e göre düzenlenen ve bir Ethernet Çerçevesinin 'MAC İstemci Verileri' olan 'IP paketi' anlamına gelen 'paket' kullanırız. Ancak bir 'Ethernet paketi', başlangıç ​​ekinin başlangıcını uzatma bitlerinin sonuna dahil olmak üzere iletilen her şey olarak tanımlanır; ve 'frame', bunun varış adresinden çerçeve kontrolüne olan kısmıdır. (802.3-2015 Bölüm 3.1.1 "Paket Biçimi"). Anahtarın bir seferde bir Ether paketinin gönderilmesini sağladığını ve Ether çerçevelerini saklayıp ilettiğini söyleyebilirim .
jonathanjo

5

Bence ethernet'in nasıl çalıştığı hakkında temel bilgilere sahip olmalısınız. Örneğin, gönderen ana bilgisayar, alıcı ana makinenin dikkatini çekmek için alternatif olanların ve sıfırların bir önsözünü gönderir. Alıcı ana bilgisayar arka arkaya iki tane gördüğünde, çerçevenin bir sonraki olduğunu bilir. Çerçeve iletildikten sonra, başka bir çerçeve gönderilmeden önce 96 bit boyunca hatta sessizlik olmalıdır.

Farklı ethernet standartları farklı kodlama kullanır. Örneğin, 100Base-T, her dört veri biti için beş bit gönderen 4B5B kullanır.


1

(Bu soru için bir Hub paylaşılan ağı olduğunu varsayıyorum.)

Ağ bağdaştırıcıları gelen bitleri tek bir akışta okuyor mu?

Evet. PHY uygulamasından bağımsız olarak, bu tek bir girdi akışıdır. Birden fazla cihazdan gelen iletişim , aynı anda tek bir NIC'ye (MAC Adresi) başarıyla ulaşamaz .

Benim varsayım, Aygıt 3'ün Ağ bağdaştırıcısının bakış açısından, 0'ların ve 1'lerin tek bir veri akışında karşılaştığıdır. "

"tek akış" evet, ancak eşzamanlı olarak gönderilen iki cihaz örneğinizde, daha fazla işlem için gelen veri akışı olmayacaktır; 1s ve 0s "kareleri" çarpışır.

Cihaz 1 veya 2'den hangi verilerin olduğunu bulabilir, ancak veriler hala milyonlarca / milyarlarca bitlik bir akıştır.

Olamaz. Sinyaller birleştirildiğinde bir çarpışma algılanır ve çerçeve atılır.

Tamamen yanlış mıyım?

Soru başlığınız doğru bir ifadedir, ancak Q yayınınızdaki tartışmanız anlayışınızın ve hipotezinizin yanlış olduğunu ima eder.

Daha ileri

  • "Ağ Bağdaştırıcısı" türünden bağımsız olarak, yalnızca tek bir bit akışı alırlar.
  • Bir sinyali iletmek için fiziksel araçlar birden fazla veri alt akışı içerebilir, ancak bu alt akışlar ve bu fiziksel işlemler "Ağ Adaptörü" olarak değerlendirilmez; bu alt akışlar kod bağımlıdır, anlamlı olmak için birleştirilmeleri gerekir; ve bu alt akışların tek bir kaynaktan gelmesi gerekir.
  • Bu yanıttan (ve diğer yanıtlardan) emin değilseniz, anahtarlamalı paket ethernet / IP ağlarının temellerini öğrenmeniz gerekir.

Bu soru için Hub paylaşımlı bir ağ olduğunu varsayıyorum - Gigabit NIC'ye atıf yapılan OP ve yarı çift yönlü mod GbE için (pratik olarak) mevcut değil. ;-)
Zac67

@ Zac67 Cömert ve yardımsever bir duruş gibiyim. OP'nin keyfi olarak "Gigabit" i seçtiğini ve bir çelişki olacağını fark etmediklerini varsaydım. Bu, nihayetinde sorunun başlığını doğrudan ve basit bir şekilde cevaplamama izin veriyor. OP, çelişki hakkında daha fazla bilgi edinmek için diğer cevapları okuyabilir.
Todd
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.