네트워크 어댑터는 들어오는 스트림을 단일 스트림으로 읽습니까?


9

기가비트 네트워크 어댑터가 데이터를 수신 할 때 어떻게 비트를 수신합니까? 0과 1의 한 스트림에서 모두보고 있습니까? 아니면 어떻게 든 0과 1의 여러 스트림이 동시에 들어 옵니까?

예를 들어 ... 두 개의 송신 장치와 하나의 수신 장치가 있다고 가정 해 봅시다.

장치 1과 2는 동시에 네트워크 데이터를 장치 3에 보내기 시작합니다.

내 가정은 장치 3의 네트워크 어댑터의 관점에서 모든 0과 1이 단일 데이터 스트림에서 발생한다고 가정합니다. 장치 1 또는 2의 데이터가 무엇인지 알아낼 수 있지만 데이터는 여전히 수백만 / 수십억 비트의 한 스트림입니다.

내가 완전히 틀렸어? :)


1
반이중 연결 또는 전이중을 사용합니까? 1000Base-T에 대한 반이중 장치는 아직 표준에 해당되지 않더라도 결코 없었습니다. 전이중 연결을 사용하면 두 장치의 프레임이 링크에서 동시에 세 번째 장치로 경합되지 않습니다.
Ron Maupin

전이중. 따라서 0과 1의 단일 스트림 (예 : 01010101010001010010101001010100001101011010)과 장치 3의 관점 (수신기)에는 여전히 단일 스트림이 있지만 장치 1과 2는 해당 스트림을 켤 수는 있지만 둘다는 아닙니다. 정확히 0과 1을 동시에 보내고 있습니까?
shihku7

어떤 대답이 도움이 되었습니까? 그렇다면 질문에 대한 답변이 계속 나오지 않도록 답변을 수락해야합니다. 또는 자신의 답변을 제공하고 수락 할 수 있습니다.
Ron Maupin

답변:


14

때에 따라 다르지.

많은 이더넷 PHY가 순수한 직렬 방식으로 데이터를 전송하지만 (예 : 100BASE-TX, 1000BASE-SX, 10GBASE-SR), 일부는 데이터 스트림을 병렬로 전송되는 여러 레인으로 분할합니다.

가장 일반적인 1000BASE-T (일반적인 기가비트-오버-구리 변형)는 인코딩 된 데이터 스트림을 4 개의 레인으로 분할하고 Cat-5 케이블의 4 개의 꼬인 쌍 중 하나에서 각각 개별적으로 전송합니다. 기가비트 이상의 모든 꼬인 쌍 변형은이 4 개의 레인을 사용합니다.

일부 고속 (10G +) 파이버 PHY는 최대 16 개의 파이버 (멀티 모드 파이버 및 단거리) 또는 파장 (단일 모드 파이버 및 장거리)에 대해 다중 레인을 사용합니다.

그러나 모든 것이 단일 소스에서 단일 대상으로 실행되는 프레임 으로 전송 됩니다. 프레임은 일반적으로 원자 적입니다. 그들은 항상 한 조각으로 전송됩니다. 각 프레임은 하나의 특정 연결 / 응용 프로그램에서만 데이터를 전송합니다. 헤더에는 소스 및 대상 주소가 포함되어 있으므로 네트워크를 통해 경로를 찾을 수 있습니다.

네트워크가 동일한 대상 포트에 대해 서로 다른 소스로부터 두 개의 프레임을 동시에 수신하는 경우 대상을 향한 스위치 포트가 첫 번째 프레임 전송을 완료 할 때까지 프레임 중 하나를 대기해야합니다.

이것은 소스와 대상이 동일한 속도로 실행된다고 가정하지만 반드시 그렇지는 않습니다. 1Gbit / s 링크와 10 개의 클라이언트가 각각 100Mbit / s 링크에서 (중요한) 대기열없이 최대 속도로 전송하는 파일 서버를 연결할 수 있습니다. 이것은 "다중 스트림"제안에 다소 근접하며,이 스트림 만 비트 레벨이 아닌 프레임 레벨에서 인터리브됩니다.

네트워크 포트의 속도는 1 초에 수천 또는 수백만 프레임이 될 수 있으므로 사람 관점에서는 여러 스트림을 구별하는 것이 불가능합니다. 모두 '동시'인 것 같습니다.


다른 응답자 @jonathanjo와 함께 1000Base-T에 대한 설명이 올바른지 확인하십시오.
davidbak

1
jonathanjo의 "동일한 매체"는 (실제적으로) 기가비트 이더넷에 존재하지 않으며 10/100 Mbit에 더 이상 사용되지 않는 멀티 포트 충돌 도메인을 설명합니다.
Zac67

2
@ davidbak는 나에게 모두 올바른 것으로 보입니다. -다른 강조점. 실제 1000baseT에서 충돌이 발생하지 않음을 명확히하는 것을 포함하여 답변에 몇 가지 사항을 수정했습니다.
jonathanjo

2
여기에는 기본적으로 여러 비트가 하나에 도달하도록하는 PAM16 및 유사한 인코딩을 추가해야합니다.
PlasmaHH

1
@PlasmaHH 1000BASE-T는 이미 4 개의 레인과 PAM5를 사용하므로 각 클럭 단계마다 약 9.3 개의 원시 비트가 있습니다 (물론 L1의 경우 125MBd에서 8 개의 "사용자"비트).
Zac67

13

지금은 기가비트 부분을 무시하고 "2 개의 장치가 동시에 전송 중"부분에 중점을 두겠습니다.

공유 미디어 이 실제로 발생하고 문제가 될 수 있습니다. 대부분의 무선 전송은 공유 미디어이며, 당시의 이더넷은 다음과 같습니다.

  • 10base2 (coax)는 모든 케이블에 하나 또는 그 이상의 케이블을 사용했습니다. 분명히, 두 개 이상의 스테이션이 동시에 전송할 수있었습니다.
  • 스위치가 아닌 허브가있는 10baseT100baseT (트위스트 페어 기반)는 연결된 장치에서 수신 한 신호가 다른 모든 장치에 반복적으로 전송되므로 두 개 이상의 스테이션이 동시에 전송할 수 있음을 의미했습니다.

이제 두 장치가 동시에 보내는 경우 두 가지 일이 발생할 수 있습니다.

  • 하나의 특정 채널을들을 수 있고 다른 채널에 의해 방해받지 않도록 별도의 "채널"을 허용하는 어떤 형태의 멀티플렉싱 (시분할, 주파수 분할 ...)을 사용합니다. 이것은 무선 전송에 많이 사용되며 유선 전송에 대해서는 훨씬 적습니다 (섬유의 WDM / DWDM은 예외입니다).

  • 또는 두 개 이상의 장치가 같은 채널에서 동시에 전송하는 경우 충돌 이라고하는 것을 얻습니다 . 두 사람이 동시에 말하고있을 때와 같이 장치가 수신되지 않는다는 내용을 이해할 수 없습니다. 모든 장치에서 전송 한 데이터를 디코딩 할 수 있습니다 (또는 더 자주 디코딩 할 수는 있지만 의미가 없으며 CRC 검사를 통과하지 못함).

CSMA-CD (Carrier-Sense Multiple Access, Collision Detection) 와 같은 체계 가 도입되었습니다.

  • 전송하기 전에 장치는 다른 사람이 전송 중인지 확인합니다 (캐리어 감지).
  • 채널이 비어 있으면 전송을 시작합니다.
  • 그럼에도 불구하고 두 장치가 동시에 동시에 시작될 수 있으므로 여전히 충돌이 발생할 수 있습니다.
  • 채널에서 너무 많은 시간을 낭비하지 않기 위해 장치는 충돌을 감지하고 (보내는 내용과 수신 한 내용을 비교하여 일치하지 않으면 다른 사람이 동시에 보내는 것을 의미) 전송을 중단합니다. 무작위 지연 후 다시 시도하십시오 (새 충돌을 피하기 위해).

이것은 매우 재미 있고, 약간로드 된 네트워크에서는 꽤 잘 작동했지만, 트래픽이 커지 자마자 많은 충돌이 발생하여 공유 미디어의 사용이 증가하여 충돌이 더 많이 발생합니다. 꽤 나빠질 수 있습니다.

이에 대한 대답은 전이중 교환 네트워크 로 전환하는 것이 었습니다 . 허브는 생각없이 신호를 반복했습니다. 반면 스위치는 실제로 프레임을 수신 한 다음 대상 링크에서 다시 전송합니다 (추가 보너스 : 프레임은 모든 사람에게 전송되는 것이 아니라 대부분의 경우 대상에게만 전송 됨).

두 장치가 동일한 대상 장치로 전송되면 스위치는 프레임 중 하나를 대기열에 넣습니다. 따라서 동시에 전송 된 두 프레임은 실제로 대상에 차례로 도착합니다.

그 외에도 물리적 수준에서 여러 쌍 또는 여러 케이블을 통해 병렬로 데이터를 교환 할 수 있습니다. 이것이 비트 레벨에서 수행되는지 전체 프레임이 각 쌍 / 케이블로 전송되는지는 사용되는 정확한 기술에 달려 있습니다. 그러나 나는 그것이 당신의 질문이 아니라고 생각합니다.


1
이것은 질문에 대한 가장 적절한 대답 일 것입니다. 실제로 고속 (섬유)에 도달하면 충돌을 피하기 위해 일반적으로 회선의 단일 발신자 및 단일 수신자로 제한됩니다. 다른 입력을 추가해야하는 경우 입력을 다른 채널로 가져와 수신 스트림과 결합한 다음 발신 스트림으로 보냅니다. 요즘도 이더넷은 충돌을 방지하는 "전환"되는 경향이있다 - 주요 장소는 충돌 (2 개 장치가 문제로 하나의 이야기) 요즘 볼 수있다 와이파이 - 다른 대부분의 모든 일 보낸 사람에 1 수신기
빌 K

12

이 특별한 경우는 복잡한 것입니다.

1000baseT에 대하여.

첫째, 일반적으로 두 장치가 동시에 전송한다고 말하면 실제로 동일한 매체에서 동일한 순간에 실제로 비트를 전송하지는 않습니다. 그렇게하면 충돌이 발생하고 모든 청취 장치가이 문제를 해결합니다 (결과적으로 다양한 충돌 감지 체계를 통해). 따라서 두 개의 전송 장치가 약간 다른 순간에 매체에 액세스합니다. 그러나 1000baseT에는 주어진 쌍 세트에 두 개의 장치 만 있습니다. 일반적으로 한 장치는 스위치이고 다른 장치는 호스트입니다.

둘째, 1000baseT는 한 번에 두 개의 데이터 비트를 한 쌍으로 전송하며 5 개의 전압 레벨에서 복잡한 방식으로 인코딩됩니다. 따라서 전선에서 일련의 기본 4 자리가 아니라 일련의 기본 2 자리가 아닙니다.

셋째, 1000baseT는 같은 쌍에서 동시에 양방향으로 전송할 수 있습니다. 하이브리드라고하는 회로를 통해 발신 신호와 수신 신호를 분리 할 수 ​​있습니다.

다른 미디어의 기가비트 이더넷은 다르게 작동합니다. 느린 속도 (예 : 10baseT 및 100baseT)는 더 간단한 구성표를 갖습니다. 허브를 통한 10baseT는 실제로 실제 충돌이 있습니다. 오버 스위치는 일반적으로 스위치에 의해 구성되어 나가는 프레임이 대기합니다. 전이중이면 충돌이 전혀 없습니다.


다른 응답자 @ Zac67과 함께 1000Base-T에 대한 설명이 정확한지 알아보십시오.
davidbak

@jonathanjo 3 비트 심볼에 대해서는 맞지만 5 개의 PAM 레벨 만 있습니다. 대략 8 비트에서 4 개의 3 비트 심볼과 3 비트 심볼이 (시프 팅) PAM 레벨에 매핑되는 스크램블링 인코딩입니다.
Zac67

@davidbak 데리러 주셔서 감사합니다. 요점을 다루기 위해 설명을 단순화하고 (이진이 아닌 복잡한) 실수를 제거했습니다. 명확하게 해주신 Zac에게 감사드립니다.
jonathanjo

7

여기에 모든 유선 이더넷 링크가 있다고 가정합니다.

동일한 네트워크 세그먼트에있는 두 장치가 동시에 전송하는 경우 전송 대상을 충돌 이라고합니다 . 충돌이 발생해도 메시지가 전달되지 않습니다. 다행히 발신자는 충돌감지 할 수 있습니다. 이 경우 각 발신자는 각각 임의의 시간 (초)을 기다렸다가 다시 시도하고 결국에는 한 명의 발신자 만 활성화 될 때까지 프로세스를 반복합니다.

그러나 이것은 더 이상 거의 일어나지 않습니다.

대신, 오늘날 대부분의 유선 연결은 스위치 된 네트워크를 통해 이루어지며 , 각 장치 (발신자 및 수신기 모두)는 스위치에서 각각 별도의 포트에 연결됩니다. 데이터는 패킷 (실제로는 frames ) 으로 나뉘며 스위치는 한 번에 하나의 패킷 만 각 포트에서 활성화되도록합니다. 링크가 사용 중이면 스위치는 링크를 다시 사용할 수있을 때 다른 프레임을 수신기에 저장하고 전달 합니다.

이 방식을 사용하면 충돌을 일으키는 유일한 방법은 스위치에 연결된 장치가 둘 이상 있거나 스위치가없는 허브를 통해 서로 연결되어 있거나 (일부 모델의 "Wi-Fi 라우터"모델의 포트가 여전히 전환되지 않은 경우) 스위치와 장치 사이의 링크는 반이중 모드 에서 작동 합니다 .

우리가 대신 처리하는 것은 혼잡 입니다. 충돌이 발생하지는 않지만 네트워크에서 많이 사용되는 호스트는 링크가 지원하는 것보다 더 많은 데이터와 패킷을 보내려는 장치가있어 버퍼가 가득 찰 수 있습니다. 그러나 그것은 완전히 다른 문제입니다.


1
Nitpicking이지만 이더넷 수준에서는 패킷이 아닌 프레임 입니다.
jcaron

1
@jcaron Nit-nit-picking : 물론 일반적으로 '패킷'을 사용하여 RFC 791에 따라 구성되고 이더넷 프레임의 'MAC 클라이언트 데이터'인 'IP 패킷'을 의미합니다. 그러나 '이더넷 패킷'은 프리앰블의 시작부터 확장 비트의 끝까지 전송되는 모든 것으로 정의됩니다. 'frame'은 대상 주소에서 프레임 검사까지의 부분입니다. (802.3-2015 섹션 3.1.1 "패킷 형식"). 스위치가 한 번에 하나의 Ether 패킷 이 전송되도록하고 Ether 프레임을 저장하고 전달 한다고 말했습니다 .
jonathanjo

5

이더넷 작동 방식에 대한 기본적인 이해가 필요하다고 생각합니다. 예를 들어, 송신 호스트는 수신 호스트의주의를 끌기 위해 교대로 1과 0의 프리앰블을 보냅니다. 수신 호스트가 두 개의 행을 연속으로 볼 때 프레임이 다음에 있음을 알게됩니다. 프레임이 전송되면 다른 프레임이 전송되기 전에 96 비트 동안 회선에 침묵이 있어야합니다.

다른 이더넷 표준은 다른 인코딩을 사용합니다. 예를 들어, 100Base-T는 4 비트의 데이터마다 5 비트를 보내는 4B5B를 사용합니다.


1

(이 질문에서는 허브 공유 네트워크를 가정합니다.)

네트워크 어댑터는 들어오는 스트림을 단일 스트림으로 읽습니까?

예. PHY 구현에 관계없이 단일 입력 스트림입니다. 여러 장치의 통신 이 단일 NIC (MAC 주소)에 동시에 도달 할 수 없습니다 .

내 가정은 장치 3의 네트워크 어댑터의 관점에서 모든 0과 1이 단일 데이터 스트림에서 발생한다고 가정합니다. "

"단일 스트림"예, 그러나 동시에 전송하는 두 장치의 예에서는 추가 처리를 위해 도착하는 데이터 스트림이 없습니다. 1과 0의 "프레임"이 충돌합니다.

장치 1 또는 2의 데이터가 무엇인지 알아낼 수 있지만 데이터는 여전히 수백만 / 수십억 비트의 한 스트림입니다.

할 수 없습니다. 신호가 결합되면 충돌이 감지되고 프레임이 삭제됩니다.

내가 완전히 틀렸어?

귀하의 질문 제목은 정확한 진술이지만 귀하의 Q 게시물에 대한 귀하의 토론은 귀하의 이해와 가설이 잘못되었음을 암시합니다.

더욱이

  • "Network Adaptor"의 유형에 관계없이 단일 비트 스트림 만 수신합니다.
  • 신호를 전송하기위한 물리적 수단은 다수의 서브 스트림 데이터를 포함 할 수 있지만, 이러한 서브 스트림 및 이러한 물리적 처리는 "네트워크 어댑터"로 간주되지 않는다; 이러한 하위 스트림은 상호 의존적이므로 이해하기 위해 결합되어야합니다. 그리고 이러한 서브 스트림은 단일 소스에서 시작해야합니다.
  • 이 답변 (및 다른 답변)에 대해 잘 모를 경우 교환 패킷 이더넷 / IP 네트워크의 기본 사항을 알아야합니다.

이 질문에서는 허브 공유 네트워크를 가정합니다 . OP는 기가비트 NIC를 참조하고 반이중 모드는 (실제적으로) GbE에 존재하지 않습니다. ;-)
Zac67

@ Zac67 저는 관대하고 도움이되는 사람입니다. 나는 OP가 임의로 "기가비트"를 선택했다고 가정하고 모순이 있다는 것을 몰랐다. 이를 통해 궁극적으로 질문의 제목을 직접적이고 간단하게 대답 할 수 있습니다. OP는 다른 답변을 읽고 모순에 대해 자세히 알아볼 수 있습니다.
Todd
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.