※ 질문/내용오류/공유할 내용이 있다면 jinkilee73@gmail.com으로 메일 주세요 :-)


30개의 PC가 연결된 네트워크를 구성에 대해서 허브, 브릿지, 스위치 등을 예로 들어가면서 설명을 이전의 포스팅에서 했다. 이번에는 실제로 네트워크를 적당히 구성해보고 데이터를 어떤 원리로 주고 받는지에 대한 이야기를 몇 개의 포스팅에 걸쳐 자세히 할 생각이다.

우선 30개가 아닌 6개의 PC가 연결되어있는 네트워크로 크기를 줄이고 생각해보자. 6개의 PC가 아래와 같이 구성되어있다.


스위치에는 3대의 PC와 한 대의 허브가 연결되어있다. 그리고 그 허브에는 3대의 PC가 연결되어있다. 그리고 각 PC는 다음과 같이 세팅해두었다.



IP address와 Subnet Mask는 나중에 더욱 자세히 다를 것이니 지금은 이렇게만 알아두자.

IP address는 각각의 PC를 구별해주는 하나의 Identifier 같은 거로만 알아두자. 그래서 위의 모든 PC들은 서로 다른 IP address를 가지고 있다. IP 주소를 보고 하나의 네트워크 영역이 어디까지인지 알려주는 숫자라고만 알자. 이 말이 무슨 말인지 이해를 못 해도 좋다. 나중에 다 자세하게 이야기 할 것이다.


MAC address는 각각의 랜카드가 가지는 주소이다. IP address는 사실은 경우에 따라 같을 수도 있다. 하지만 MAC address는 무조건 다르다. 이 값은 LAN 카드가 가지고 있는 고유의 숫자(address)이기 때문이다. MAC을 위키피디아에서 검색해보면 다음과 같이 나온다.


MAC address (http://en.wikipedia.org/wiki/MAC_address)

media access control address (MAC address) is a unique identifier assigned to network interfaces for communications on the physical network segment. MAC addresses are used as a network address for most IEEE 802 network technologies, including Ethernet. Logically, MAC addresses are used in the media access control protocol sublayer of the OSI reference model.


아래의 그림은 MAC address 의 구조를 보여준다. 전체 6바이트의 크기로 high 3바이트는 OUI 즉, 그 LAN 카드를 만든 회사의 고유 번호이다. low 3바이트는 해당 회사에서 만든 LAN 카드끼리의 Identifier 이다.


이 MAC address가 꼭 있어야 LAN에서 통신이 가능하다. 예전의 ARPANET을 생각해보자. 그 때는 단일 LAN에서 통신을 했기 때문에 그 때 역시, 자세하게는 모르지만, MAC address를 기반으로 통신을 했을 것이다. 


여기서 궁금증이 하나 생긴다. 아까 위에서 6개의 PC가 연결되어있는 하나의 LAN을 보여줬었다. 그 밑에는 각 PC의 IP, Subnet Mask 등등의 정보들을 줬었다. 그런데 이 PC들은 단지 LAN에 연결되어있을 뿐이니까 이 PC들은 굳이 IP같은거 설정 안 해줘도 MAC address만으로 통신이 가능하다는 것인가? 한번 해보자.



PC0에 할당한 IP와 Subnet Mask 등등을 제거하여도 스위치와 라우터에 초록색 불이 정상적으로 나온다. 문제없이 통신이 가능하다는 이야기가 된다. 한 가지 아쉬운건 요즘 거의 TCP/IP 통신이만 이루어지고 있기 때문에 오로지 MAC만 사용해서 통신을 직접할 수 있다는 것을 보여줄 만한 것을 못 찾았다. 그냥 위의 그림에서 초록색이 뜬다는 것에만 만족을 하자.


MAC만을 이용해서 통신할 것이 없다는 것을 한탄하며 ARP를 논해보자. ARP가 뭐냐고? Address Resolution Protocol의 약자로, IP address와 MAC address를 이어주는 프로토콜이라고 보면 된다. 아직까지는 IP address를 그렇게 깊게 논하지는 않을 것이다. 아직은 IP address에 대해서는 그저 PC를 구별해주는 주소라고만 알면 된다.


다음 포스팅에서 자세하게 ARP에 대해서 설명할 생각이다. 뭔가 흐름을 제대로 갖고 포스팅을 하는지 조금 의문이 들지만 그래도 열심히 해봐야지...

'Computer Networks' 카테고리의 다른 글

[NW] Packet structure  (0) 2013.06.16
[NW] Address Resolution Protocol (ARP)  (2) 2013.06.13
[NW] Media Access Control (MAC)  (0) 2013.06.13
[NW] Hub, Bridge and Switch  (2) 2013.06.11
[NW] CSMA/CD  (0) 2013.06.07
[NW] The definition of a network  (2) 2013.06.05
Posted by 빛나유

댓글을 달아 주세요

※ 질문/내용오류/공유할 내용이 있다면 jinkilee73@gmail.com으로 메일 주세요 :-)



30대의 PC를 연결하는 네트워크 환경을 구축하는 예시로 다시 돌아와보자.


그렇다. Ethernet 랜카드를 장착한 PC들끼리만 통신이 되기 때문에 이제 모든 PC의 랜카드 종류를 Ethernet으로 맞춰놓은 상태이다.


이제 그 다음에 할 일은 매우 간단하다. 그냥 선만 연결하면 된다. 어디에? 스위치에 연결하면 된다. 자 이제 우리가 원하는 30대의 PC를 연결하는 네트워크가 구성이 됐다. 그런데 너무 심심하게 끝났다. 그냥 이으라니;;


여기서 허브를 이야기해볼까 한다. 허브는 스위치가 나오기 이전에 사용했던 장비이다. 그 목적은 역시나 여러 대의 PC를 연결하여 서로 통신할 수 있게 해주는 것이다. 허브의 사용법은 매우 간단하다. 그냥 전원을 연결하고 PC를 끼워주면 OK이다. 이렇게 사용하기 간편한 것들은 보통 그 기능에서 허접한 측면이 많다. 그렇다면 허브의 단점은 뭘까? 아래의 그림을 보고 이야기해보자.



허브를 통해 D가 A와 통신을 하려고 할 때의 모습이다. 그림만 봐도 단점이 딱 떠오를 것이다. 왜 D가 메세지을 보내는데 A, B, C에게도 메세지가 가느냐? 물론 B와 C는 메세지를 받지 않는다. B와 C의 랜카드까지는 메세지가 가지만 B와 C는 이 메세지가 자기에게 오는 것이 아니라는 것을 알고 CPU까지 데이터를 올리지 않는다. 그렇다하더라도 이러한 형태는 매우 비효율적이다. D가 메세지를 보내고 있을 때 A, B, C는 아무런 통신을 못 하기 때문이다. 만일 한다면 충돌이 일어나는 것이다. 이렇게 충돌이 일어나는 영역을 Collision Domain이라고 한다. 그렇다 허브의 단점은 허브에 연결되는 모든 장비들은 하나의 Collision Domain을 갖는다는 사실이다. 그렇게 되면 허브에 연결된 각각의 PC들은 동시 통신이 불가능하다는 것이다. 더욱이 안 좋은 것은 허브에 장비들을 연결했을 경우 연결한 장비의 개수가 많으면 많을 수록 Collision Domain의 크기도 커져서 충돌의 위험이 높아진다는 것이다.



위와 같이 볼 수 있다. 허브와 허브를 연결하여 규모를 더 크게 만들었을 경우 하나의 PC에서 보낸 데이터가 허브로 연결되어있는 모든 PC로 전송이 된다. 물론 아까도 말했듯이 오로지 하나의 목적지 PC만이 데이터를 실제로 받아들이고 나머지는 모두 버리겠지만 그것이 네트워크에 영향을 미친다는 것이 문제이다. 그렇다면 이러한 문제를 어떻게 해결할 수 있을까? 가장 간단하게 생각해보면 Collision Domain을 나누면 될 것 같다. 



초등학생도 할 수 있을 정도의 생각이지만 바로 이것이 허브의 진화판인 Bridge이다. 따라서 위와 같은 그림으로 구현을 하려면 실제로 아래와 같이 가능하다.



위와 같이 하나의 브릿지 장비를 통해 collision Domain을 나눌 수 있다. 이렇게 나누면 왼쪽의 Collision Domain의 F PC가 통신하는 동안 오른쪽의 E도 통신을 할 수 있다. 물론 왼쪽과 오른쪽의 Collision Domain에 있는 PC끼리도 통신 가능하다. 그러면 충돌이 날 확률이 반으로 줄어들게 된다. 그러면 만일 브릿지에 n개의 포트가 있다고 하자. 각각의 포트가 서로 다른 Collision Domain을 가지고 있다면 얼마나 좋을까? 그러면충돌이 날 확률은 없어지게 되잖아? 그렇다. 그것이 바로 스위치이다. 아래의 그림을 보자.


 

각각의 포트가 각각의 서로 다른 Collision Domain을 갖는다. 이러면 어떤 PC도 동시에 패킷을 보낼 수 있을 것이다. 얼씨구나 좋댜.

 

이쯤 왔는데 뭔가 내 블로그답지 않다고 생각이 드는 사람이 있다면 정확하게 본 것이다. 왜 그냥 데이터를 보낸다고 설명하고 어떻게 보내는지 설명하지 않는가? 바로 네트워크를 설명하기 위해서는 우선은 어느 정도 대충 넘어가고 나중에 구체적으로 가는게 맞다고 생각해서이다. 지금 스위치에 대해서도 그렇게 자세하게 다루지는 않았다. 그런데 잠시만 참자. 스위치에 대해서도 나중에 열심히 공부해서 포스팅해둘 것이니 그 때까지 조금만 기다리시라.

 

아무튼 이제부터 다룰 생각이다. 어떻게 통신이 이루어지는지에 대해서 말이다. ARP니 TCP니 IP니 앞으로 쭉 다루게 될 것이다. TCP/IP는 조금 더 후에 다룰 것이다. 아무튼 다음 포스팅에서는 구체적으로 어떻게 LAN에서 통신이 이루어지는지 살펴볼 것이다.


p.s. 네트워크에 대한 포스팅을 하겠다고 마음을 먹었을 때부터 뭔가 시작이 어려울 것이라고 생각하긴 했지만 역시나 너무 어렵다. 내용이 어렵다기 보다는 내용을 어떤 순서로 풀어나갈지가 정말 애매하기도 하고 복잡하다.

'Computer Networks' 카테고리의 다른 글

[NW] Address Resolution Protocol (ARP)  (2) 2013.06.13
[NW] Media Access Control (MAC)  (0) 2013.06.13
[NW] Hub, Bridge and Switch  (2) 2013.06.11
[NW] CSMA/CD  (0) 2013.06.07
[NW] The definition of a network  (2) 2013.06.05
시작하며...  (0) 2013.06.04
Posted by 빛나유

댓글을 달아 주세요

  1. 안녕하세요 2015.04.07 15:20  댓글주소  수정/삭제  댓글쓰기

    스위치의 경우는 목적지가 동일한 생태에서 충돌이 발생한다는 말이지요? 이전 네트워크 설명하는 부분에서는 스위치에 연결된 상태에서 통신을 하는대 서로 다른 목적지로 가고있음에도 충돌이 발생한걸로 나오는대 그럼 위의 내용과 상충되는것 아닌가 해서 다시 가봤더니 뎃글에 그에 관련된 내용이 있는것 같아서 다시 올립니다. 그 뎃글 내용이 이해가 정확히 안되는지라.ㅎㅎㅎ 결국 스위치의 경우 내부적으로 전체에 데이터를 전달하는게 아니고 타켓에게만 데이터가 전송됨으로 동시에 통신을 하더라도 수신자와 송신자들이 각각 모두 다르면 충돌이 발생하지 않는 것이지요?

    • 빛나유 2015.04.07 20:45 신고  댓글주소  수정/삭제

      네네!! 스위치는 각각의 포트가 collision domain이니까 결국은 구멍이 n개 있는 것은 n개의 서로 다른 collision domain이 있는 셈이죠. 그런데 말씀하신것은 항상 옳지는 않을 것 같아요. 예를들어 스위치에 있는 하나의 포트에 허브를 하나 연결했고 그 허브에 PC4대 연결하면요... 그 4대끼리는 collision이 발생합니다!! 즉, 수신자와 송신자들이 각각 달라도 이럴 경우에는 충돌이 발생하겠죠??

[NW] CSMA/CD

Computer Networks 2013. 6. 7. 03:14

※ 질문/내용오류/공유할 내용이 있다면 jinkilee73@gmail.com으로 메일 주세요 :-)


이번 포스팅에서는 CSMA/CD를 공부해보자. CSMA/CD는 Carrier Sense Multiple Access/Collision Detection의 약자이다. 의미만 생각을 해보면, 충돌을 감지하는 다수 접근? 대충 이 정도로 추측을 하고 접근을 해보자.


CSMA/CD를 설명하기 전에 CSMA/CD이 무엇인지부터 정의해보자. 위키피디아에는 다음과 같이 정의되어 있다. 

http://en.wikipedia.org/wiki/Carrier_sense_multiple_access_with_collision_detection


Carrier sense multiple access with collision detection (CSMA/CD) is a Media Access Control method in which:[1]

  • carrier sensing scheme is used.
  • a transmitting data station that detects another signal while transmitting a frame, stops transmitting that frame, transmits a jam signal, and then waits for a random time interval before trying to resend the frame.

CSMA/CD is a modification of pure carrier sense multiple access (CSMA). CSMA/CD is used to improve CSMA performance by terminating transmission as soon as a collision is detected, thus shortening the time required before a retry can be attempted.

CSMA/CD is notable for its usage in early Ethernet installations, although this has fallen out of use as Ethernet switches have become commonplace.



위와 같이 위키피디아에서 정의해두었다. MAC method라고 하는데 MAC이 무엇인지는 차차 설명하기로 하고, 지금은 그냥 무슨 방법이다 정도로만 이해하도록 하자.


CSMA/CD는 다음과 같이 작동한다. 하나의 네트워크에 컴퓨터가 다음과 같이 연결되어있다고 가정해보자.

위의 그림은 A, B, C, D의 컴퓨터가 하나의 이더넷 네트워크에 연결이 되었을때, A가 t1부터 t2까지 데이터를 전송하는 것을 그림으로 나타낸 것이다. (세로축은 시간이라고 보면 된다.) A는 우선 자신이 속한 네트워크에 전송되고 있는 데이터가 있는지 확인한다. 있으면 기다렸다 보낼 것이고, 없으면 즉시 전송할 것이다. 이 때 CSMA/CD로 전송되는 모든 데이터들이 내부에 있는 모든 네트워크로 전달이 된다. 


여기서 잠깐!! 뭐라고? 하나의 LAN에 연결되어있는 PC가 데이터를 전송할 때 모든 PC에 데이터를 뿌른다고? 특정 목적지한테만 뿌리는게 아니고? 딱 들어도 비효율적이다. 이 부분에 대해서는 나중에 설명을 할 터이니 우선은 그냥 그런가보다~ 하고 넘어가자.


그러면 가령, D에서는 t3부터 t4까지 데이터를 감지하게 된다. 여기서 중요한 사실은 Delay가 존재한다는 것이다. 비록 A가 t1이라는 시간에 데이터를 전송했지만 데이터가 캐이블을 타고 가는 동안 시간이 조금 걸려서 t3라는 시간에 D에 도달하게 된다. 반대로 생각해보자. D입장에서는 t3라는 시간까지는 D는 네트워크가 idle 하다고 느끼게 된다. 비록 t1이라는 시간에 A가 이미 데이터를 보냈음에도 불구하고. 바로 이것이 Collision의 원인이다. 아래의 그림을 보자.



A가 t1에 데이터를 보낼 때 D1은 t1'에 데이터를 보낸다. 왜냐하면 아직 A의 데이터가 D에 도달하지 않았기 때문에 D는 네트워크가 idle 하다고 생각하기 때문이다. 그러다보니까 c1이라는 시간에 최초 충돌이 발생한다. 그런데 최초의 충돌이 중요한 것이 아니다. 데이터를 보내고 있는 A나 D가 실제로 충돌을 느끼는 시간이 중요한 것이다. 아래의 그림을 보자.


D는 위의 그림에서 c1에 충돌을 처음 감지한다. 이 때 D는 바로 데이터 전송을 멈춘다. 같은 일이 A에서도 일어난다. A도 t1과 t2사이에 D의 데이터를 감지할 수 있기 때문에 그 때 충돌을 감지한 후 데이터 전송을 멈추고 Jamming signal을 보낸다.


그 다음은 데이터를 다시 보내는 것이다. 그런데 A와 D가 바로 데이터를 다시 보내면 또 다시 충돌이 날 확률이 굉장히 높을 것이다. 따라서 random한 시간을 기다린 후 데이터를 전송한다. 그랬음에도 불구하고 또 충돌이 발생하면 또 같은 과정을 반복한다. 또 충돌나면 또 반복한다. 이런식으로 15번 충돌이 발생해버리면 "나 더 이상 여기서는 통신 못 해먹겠다."하고 배째라 상태가 된다.


아래의 그림은 CSMA/CD의 전체 Flow를 설명해준다.



잘 보면 위에서 다 설명한 부분이다. 단, K라는 변수는 충돌이 일어난 회수를 의미한다. 아까 15번이라는 충돌 가능 최대치가 있었지? 그것이 Kmax니까 K가 뭔지는 대충 알 거라고 생각한다. "K > Kmax"를 비교하는 부분이 왼쪽 밑에 노랗게 있는데 그 부분 위에 이상한 수식들이 있다. 그것이 바로 기다릴 random한 시간을 계산하는 부분이다. 그리고 한번도 언급하지 않은 것이 있는데, 1-persistent, nonpersistent 그리고 p-persistent이다. 이는 데이터를 전송하는 방법이라고 보면 된다.


우선, 1-persistent이다. 가장 효율이 안 좋은 방법으로, 하나의 PC가 자신이 속해있는 네트워크에서 전송되는 데이터를 감지하지 못 하면 자기의 데이터를 그냥 보낸다. 데이터를 감지하면 보내지 말고 기다린다. 더 이상 설명할 것도 없다.


nonpersistent는 1-persistent 보다는 조금 개선된 방법이다. PC가 데이터를 감지하면 보내지 말고 기다리고, 데이터를 감지하지 못 하면 random한 시간을 기다린 후 데이터를 보낸다. random 한 시간을 기다림으로서 충돌을 피할 수 있을 수도 있다는 것을 이용한 것이다.


마지막으로 p-persistent이다. 이는 PC가 데이터를 감지하지 못 할 경우 특정 p의 확률로 자기의 데이터를 보낸다. 그리고 q(= 1-p)의 확률로 특정 시간(slot)을 기다린다. 그리고 또 다시 데이터를 listen한다. 이 때 idle하면 다시 p의 확률로 데이터를 보내고 q의 확률로 특정 시간(slot)을 기다린다. 만일 idle하지 않으면(busy), collision이 발생한 것처럼 행동한다.


위의 세 가지 방법에 대한 Flow Diagram을 보면 아래와 같다.



결론적으로 아래와 같은 동작을 하게 된다.


CSMA/CD에 관하여 자세하게 설명했다. 다음 포스팅에서 설명할 부분은 이전의 포스팅에서 설명했던 30개의 PC가 있는 사무실에서의 LAN 구성하는 이야기를 다시 할 것이다.

'Computer Networks' 카테고리의 다른 글

[NW] Address Resolution Protocol (ARP)  (2) 2013.06.13
[NW] Media Access Control (MAC)  (0) 2013.06.13
[NW] Hub, Bridge and Switch  (2) 2013.06.11
[NW] CSMA/CD  (0) 2013.06.07
[NW] The definition of a network  (2) 2013.06.05
시작하며...  (0) 2013.06.04
Posted by 빛나유

댓글을 달아 주세요