네트워크 교실 2장. 신호의 전송과 충돌

sanghee·2021년 11월 30일
0
post-thumbnail

이 글은 네트워크 교실(아미노 에이지 지음)을 읽고 간단하게 정리한 글입니다. 책에 친절한 설명과 관련 그림이 있으므로 직접 사서 읽기를 추천합니다.

2장. 신호의 전송과 충돌

11. 1계층의 역할과 개요

1계층

1계층은 케이블과 연결되어 있는 기기에 신호를 전달한다.

통신 매체

기기와 기기 사이를 연결해서 신호가 지나는 파이프 역할을 하는 것이 통신 매체이다. 선의 유무에 따라 유선과 무선으로 나뉜다. 일반적으로 유선을 사용한다.

유선의 종류

전기신호를 사용하는 동선과 광신호를 사용하는 광파이버가 있다. 동선이 비교적 굽히기 쉬워 좁은 곳에 배선하기 수월하기 때문에 일반적으로 사용된다. 동선 케이블에서 보통 UTP(Unshielded Twitst Pair cable)을 주로 사용하는데, 두개가 한 쌍인 동선 네 쌍으로 이루어져 있다.

인터페이스

이전에 인터페이스란 컴퓨터와 케이블 사이의 중개 역할을 한다고 말했었다. 자세히 말하자면, 인터페이스는 PC의 데이터를 신호로 변환해서 케이블로 보내거나, 받은 신호를 데이터로 변환하는 작업을 한다.

인터페이스 종류

컴퓨터에서 사용되는 인터페이스로는 LAN용 케이블에 접속하기 위한 NIC(Network Interface Card)를 주로 사용한다. WAN용 케이블에서는 DCE(Data Circuit terminating Equipment, 회선종단기기)라는 별도의 신호 변환기를 둔다.

12. 신호와 충돌

인터페이스

인터페이스는 비트를 신호로, 신호를 비트로 변환하는 기기이다. 신호는 아날로그가 아닌 디지털 신호를 사용한다.

비트와 신호의 차이

비트는 0과 1로 구성되어 있고, 신호는 OFF와 ON으로 구성되어 있다. 정해진 전압을 넘는 신호는 1로, 그렇지 않은 신호는 0으로 변환한다.

통신속도(bps, bit per second)

통신 속도는 1초당 전해지는 비트 수로 결정한다. 이상적으로 한 개의 신호를 되도록 짧게, 신호 자체가 많이 표현할수록 통신 속도가 높아진다.

Mega == 10*6승

휴대폰의 데이터 속도가 100메가라는 건, 100 106승 bfs라는 것이다. 1초에 100 106승 비트를 표현할 수 있다는 뜻이다.

신호에 발생하는 문제는 다음과 같다.

1. 신호의 감쇠

동선에는 저항이 있다. 그래서 긴 케이블을 지나는 동안 신호(신호의 진폭이)가 약해진다. 따라서 약해진 신호를 본래 상태로 되돌리기 위해 증폭이라는 처리를 해야 한다.

2. 노이즈 간섭

근처에 큰 전원, 고열 기체, 케이블, 전자파를 발생하는 물체, 번개 등이 있는 경우 신호의 형태가 무너진다. 이렇게 신호가 망가지는 것을 방지하기 위해 케이블에 실드라는 특수 가공을 하여 노이즈나 간섭을 받지 않도록 한다.

3. 충돌

멀티엑세스 네트워크 등에서 일어나는 문제이다. 케이블 한 개에 T자 분배기를 넣어서 여러 대의 컴퓨터를 연결하는 구조이다. 그런데 신호가 보내지고 있는 도중에 다른 신호를 보내게 되는 경우에 신호끼리 충돌하게 된다.

해결 방법으로는 신호를 보내는 타이밍을 엇갈리게 하거나, 신호가 지나는 길을 나누면 된다.

13. 허브

허브

이전에 멀티엑세스 네트워크에서 케이블을 나눠 사용하지 않고 T자 분배기를 넣어서 연결하는데 대신 허브를 사용할 수 있다고 하였다.

허브의 역할

  1. 허브는 김쇠에 의해 붕괴된 신호를 본래 형태로 증폭 및 재생한다.
  2. 복수의 기기를 연결해서 네트워크를 구축한다. 허브에 케이블로 연결되어 있는 기기는 동일 케이블에 연결되어 있는 것과 같으므로 연결된 기기끼리 신호를 주고받을 수 있다.

연속 접속(Cascade Connection)

만약 9개의 기기를 연결하려고 하는데, 8포트를 가진 허브밖에 없다면 어떻게 해야 할까? 허브끼리 연결하면 간단하다. 이렇게 허브와 허브를 연결하는 접속을 연속 접속이라고 부른다. 허브끼리 연결해서 신호가 도달하는 범위를 넓힐 수 있다.

플러딩(Flooding)

허브는 증폭과 재생 이외의 다른 작업을 하지 않는다. 단순하게, 수신한 포트 이외의 모든 포트에 수신한 신호를 송신한다.

충돌 도메인(Collision Domain)

허브의 플러딩으로 인해서 충돌이 일어날 수 있다. 기기가 많이 연결되어 있을수록 신호끼리 충돌할 가능성이 높다. 충돌이 발생할지도 모르는 범위를 충돌 도메인이라고 부른다. 충돌을 막기 위해서는 충돌 도메인이 작아야 하고, 그 말은 결국 도메인 내의 컴퓨터 수가 작아야 한다는 걸 의미한다. 그렇지만 다수의 컴퓨터가 필요한 상황도 분명 있을 것이다. 단순히 컴퓨터 수를 줄이기 보다는, 제어할 수 있는 스위치(17번에서 자세히)를 추가한다.

14. 2계층의 역할과 개요

2계층

신호가 닿는 범위에서의 데이터 전송에 관한 규정을 생각한다. 세그먼트 범위에서의 데이터 전송을 의미한다.

멀티엑세스 네트워크에서 세그먼트 범위

멀티엑세스 네트워크에서의 세그먼트 범위란 허브에 의해 연결되어 있는 범위를 의미한다.

포인트 투 포인트 네트워크에서 세그먼트 범위

포인트 투 포인트 네트워크라면 컴퓨터와 라우터 혹은 라우터와 라우터 사이를 의미한다.

이더넷(Ethernet)

2계층에서 LAN의 사실표준이다. 아래는 이더넷에서 나오는 용어들이다.

프레이밍(Framing), 프레임화

1계층에서 주고받은 신호를 비트화해 데이터로 인식할 수 있게 만든다. 프레임이란 2계층의 PDU(Protocol Data Unit)를 의미한다.

프리엠블(Preamble)

지금부터 프레임이 시작된다는 신호이다. 송신측에서 데이터 앞에 프리엠블을 헤더로서 붙여 보낸다. 수신측에서는 이 프리엠블을 수신하면 프레임 신호가 올 것이라는 것을 판단한다.

프리엠블로 타이밍 맞추기

데이터 통신 직전에 프리엠블을 보내 비트를 읽을 타이밍을 맞춘다. 아래는 비트를 읽은 타이밍이 올바른 것과 올바르지 않은 것을 나타낸 그림이다.

클락(Clock) 신호

동기 통신이다. 타이밍을 맞추는 신호를 계속해서 보낸다. 계속해서 신호를 보내는 것으로, 많이 사용되지 않는다.

15. 2계층 주소와 이더넷

주소(Address)

LAN에서의 2계층은 이더넷이라는 규칙이 적용된다. 이더넷에서 사용되는 주소란 데이터를 보내는 상대와 자신을 특정하는 데이터이다. 송신처와 수신처의 주소가 필요하다. 그리고 이 주소를 어떻게 사용할지 어떻게 배정할지 등을 결정하는 것을 어드레싱(Addressing)이라고 한다.

주소의 3가지

데이터 전송 방법에 따라 3가지로 나뉜다.

1. 유니캐스트(Unicast) == 1대 1

uni란 단 하나의, 유일한이라는 의미이다. 즉, 유니캐스트 주소는 유일해야 한다. 1대1 데이터 통신으로 가장 일반적이다. 각각의 기기는 유니케이스 주소를 갖는다. 또한 복수의 인터페이스를 갖는 기기는 인터페이스마다 유니캐스트 주소를 갖는다.

2. 멀티캐스트(Multicast) == 1대 그룹

1대 다수에게 보내는 데이터 통신이다.

3. 브로드캐스트(Broadcast) == 1대 전체

1대 전체로, 모두에게 보내는 데이터 통신이다.

MAC(Media Access Control) 주소

이더넷에서 사용되는 주소로 인터페이스에 지정된 고정 주소이다. 48비트 값으로 앞 24비트는 벤더코드(인터페이스를 만든 제조업체 번호)이고 뒷 24비트는 벤더 할당 코드(제조업체가 붙인 코드)로 이루어져 있다.

16. 이더넷

이더넷(Ethernet)

LAN에서의 2계층은 이더넷이라는 규칙이 적용된다. MAC이라는 주소는 벤더코드와 제조업체가 붙인 코드로 이루어져 있다. 이 주소정보를 헤더에 기술해서 송신한다.

이더넷에서의 캡슐화

데이터에 그 계층의 제어 데이터를 덧붙여 가는 것을 캡슐화라고 한다. 이더넷에서는 이더넷 헤더와 이더넷 트레일러를 데이터그램에 붙여서 이더넷 프레임으로 캡슐화한다.

이더넷 헤더, 주소 및 타입

이더넷 헤더에는 수신처의 MAC 주소, 송신처의 MAC 주소, 페이로드의 내용을 식별하는 타입을 붙인다.

이더넷 트레일러, FCS

이더넷 트레일러에는 에러를 체크하는 FCS(Frame Check Sequence)를 붙인다. 신호가 전송되는 동안 문제가 발생했는 지, 0과 1을 반대로 읽었는지 등을 체크한다.

FCS의 에러 체크

기본적으로 통신도중에는 에러를 고칠 수 없다. 에러가 발생했다면 보낸 곳에게 다시 바른 정보를 물을 수 밖에 없기 때문이다. 통신 도중에 에러가 발생한다면 고칠 수 없으며 그 프레임은 파기된다. 그리고 파기했다는 것은 송신측에는 알리지 않는다.

플러딩(Flooding)

플러딩이란 멀티엑세스 네트워크에서 허브에 연결되어 있는 모든 기기에게 신호를 송신하는 것을 의미한다. 여기서 두가지를 고려해야 한다. 구별없이 모든 기기에게 보내며, 동시에 신호를 보낼 경우 충돌이 발생할 수 있다는 점이다.

1. 모든 기기에게 보낸다.

유니캐스트의 경우 수신한 프레임의 수신처 MAC 주소를 보고 자기의 주소가 아니라면 해당 프레임을 파기한다. 멀티캐스트이 경우 자신이 해당 그룹에 속하지 않았다면 파기한다. 브로드캐스트는 전체 수신이므로 파기없이 반드시 수신한다.

2. 충돌이 발생할 수 있다.

이더넷에서는 신호를 보내는 타이밍이 겹치지 않도록 비켜나게 함으로써 되도록 충돌이 일어나지 않도록 한다. 이를 위해서 CSMA/CD라는 엑세스 제어를 시행한다.

CSMA/CD(Carrier Sense Multiple Access/Collision Detection)

  • CS(신호 감지) → 누군가가 송신중이라면 송신하지 않는다.
  • MA(다중 엑세스) → 아무도 송신하고 있지 않으면 송신한다.
  • CD(충돌검사) → 송신 후에 충돌이 일어나면 다시 수행한다.

아무도 송신하고 있지 않다는 신호를 감지하여 두 대가 동시에 송신하는 경우에 CD를 통해 충돌여부를 알 수 있다.

17. 스위치

충돌 도메인

충돌 도메인이란 두 컴퓨터가 송신했을 때 충돌할 가능성이 있는 범위를 의미한다. 이전에 허브로 연결된 범위라고 언급했다. 충돌이 계속 발생하게 되면 송신 → 충돌 → 재송신 → 충돌...의 반복으로 효율이 나빠진다.

스위치(Switch)

허브 대신에 사용한다. 신호가 지나는 길을 나눠 충돌이 발생하지 않도록 한다. 허브와 마찬가지로 복수의 포트를 가지고 있다.

충돌 발생?

UTP나 광파이버 케이블은 송신 신호와 수신 신호가 나뉘어 있기 때문에, 송신 신호와 수신 신호가 동시에 지나가도 충돌이 발생하지 않는다. 충돌은 케이블이 아닌 허브에서 나타나며 동시에 여러 신호를 수신하는 경우 발생한다.

수신한 프레임을 따로따로 보낼 수 있도록 처리해서 충돌을 막는다. MAC 주소 필터링과 버퍼링, 두가지를 실행하는데 버퍼링은 바로 다음에 살펴본다.

MAC 주소 필터링 == 학습 + 스위칭

학습이란 수산한 프레임의 송신처 MAC 주소를 기록하는 것이다. 이 학습을 통해서 스위치는 포트에 연결되어 있는 컴퓨터의 MAC 주소를 기억한다. 이 대응표를 어드레스 테이블(Address Table)이라고 한다.

스위칭

프레임을 수신한 스위치는 프레임의 MAC 주소를 보고 해당 주소가 있는 포트만 송신한다. 예를 들어 어드레스 테이블의 포트3에 00.01이 있는 경우 해당 주소의 신호가 오게 되면 포트3만 프레임을 받는다. 이렇게 되면 수신처가 다른 프레임이 동시에 스위치에 도달해도 충돌은 발생하지 않게 된다.

18. 전이중 이더넷

버퍼링(Buffering)

허브에 수신처가 같은 신호가 들어오는 경우 충돌이 발생한다. 그래서 나중에 들어온 신호는 버퍼(Buffer)라는 일시적으로 데이터를 기록하는 메모리에 일시적으로 저장한다. 먼저 들어온 프레임이 끝나면 일시적으로 저장된 프레임을 송신시킨다.

버퍼가 꽉 차면?

버퍼의 용량은 제한적이다. 버퍼의 용량이 부족한 경우에 백 프레셔(Back Pressure) 또는 IEEE802.3x라는 규격을 사용해서 송신을 중지한다.

반이중 통신

누군가가 송신중(자기는 수신중)일때 송신이 불가능한 통신 방식을 의미한다. 동시에 신호를 받으면서 보낼 수 없는 방식을 뜻한다. CSMA/CD는 반이중 통신으로 효율이 나쁘다.

전이중 이더넷

전이중 통신이란 동시에 송신과 수신을 할 수 있는 방식이다. 스위치를 사용하면 충돌이 일어나지 않으므로 전이중 통신이 가능하다. 이렇게 스위치를 사용해 전이중 통신을 하는 것을 전이중 이더넷이라고 부른다.

profile
👩‍💻

0개의 댓글