이 게시물은 후니의 쉽게 쓴 CISCO 네트워킹 4판을 공부한 내용을 바탕으로 작성됨.
맥 어드레스 MAC adress
MAC adress를 알기 전에 먼저 MAC이 뭘까?
MAC : Media Access Control → 한국말로는 '매체 접근 제어'라고 불린다. 네트워크 장치가 데이터를 송수신하고 통신 매체에 접근하기 위해 사용되는 프로토콜이다. 네트워크는 일반적으로 여러 개의 디바이스가 하나의 channel에 연결된 구조를 갖는다.
우리가 사용하는 회선은 일반적으로 여러 디바이스가 동시 송신하는 것이 불가능하다. 한 번에 한 디바이스만 Channel을 점유할 수 있는데, 위처럼 디바이스가 여러 개인 경우 어떤 디바이스가 channel을 사용할 것인지 결정하는 방식을 바로 Medium Access Control라고 하며, 앞서 배운 CSMA/CD가 MAC의 한 종류에 속한다.
이 외에도 Token Ring, Token Bus 등의 MAC 방식이 존재하지만, 현재 Ethernet에서는 CSMA/CD만을 사용한다.
즉, MAC address를 각 디바이스에 할당하여 어떤 디바이스가 현재 channel을 사용중인지 탐지할 수 있다는 것이다. 하나의 channel을 여러 장비가 공유하여 사용하기 위해서는 각 장비의 '이름표' 역할을 하는 MAC address가 필요하다.
그렇다면 네트워크에서도 TDD / FDD 같은 전이중 통신을 사용하면 굳이 복잡하게 CSMA/CD를 사용하지 않아도 되는 것 아닌가? 하는 의문을 가질 수 있다.
먼저 전이중 통신은 스마트폰, 위성통신과 같은 무선통신에 주로 사용된다. 유선 네트워크를 구성할 때는 일반적으로 단방향 혹은 반이중 통신이 더 흔하게 사용되며 그 이유는 다음과 같다.
- 비용, 복잡성 문제 : 전이중 통신을 사용하기 위해 송/수신을 동시에 처리할 수 있는 별도의 회선이 필요하므로, 구현이 복잡해지고 비용이 증가할 수 있다. 따라서 유선 PC의 경우에는 단방향 혹은 반이중 통신이 더 간단하며 경제적이다.
- BW 문제 : 유선통신 시스템에 할당된 BW는 상대적으로 낮은 경우가 있는데, 전이중 통신을 사용하면 BW 사용량이 늘어나므로 이를 구현하는 것이 어렵다.
MAC address는 각 네트워크 장비가 가지는 고유 주소이다. MAC address는 총 48bit 길이의 16진수로 표현되는데, 예를 들어 "00:1A:2B:3C:4D:5E"와 같은 형식이다. MAC 주소는 제조사에 의해 할당되며, 첫 24비트는 제조사 식별자를 나타내고, 나머지 24비트는 장치 식별자를 나타낸다. 이를 통해 네트워크에서 각각의 장치들을 고유하게 식별할 수 있다.
→ MAC address 48 bits = 제조자 코드 24bits + 각 장비마다의 일련번호 24bits
(16진수 하나는 4bits를 나타낸다는 것도 잊지 말자. 예를들어 1A는 0001 1010이다.)
네트워크 장비들은 자신의 IP 주소를 가진다. (우리가 사용하는 인터넷은 TCP/IP 프로토콜을 사용하기 때문에 통신을 위해서 IP 주소를 사용해야 한다.)
그렇다면 네트워크 통신에는 IP 주소만 사용되는 걸까? 실상은 그렇지 않다. IP 주소를 받은 후 이를 MAC address로 바꾸는 절차가 필요한데, 이 과정은 ARP; Address Resolution Protocol을 통해 수행된다. 또한 MAC address는 하드웨어 주소라고도 불린다.
↪ 네트워크 장비들이 서로 데이터를 주고받기 위해 IP 주소 뿐만 아니라, 서로의 MAC 주소를 알아야 한다. 하지만 장비들은 서로의 IP 주소는 알지언정 서로의 MAC 주소는 (초기에는) 알 수 없다. 따라서 ARP라는 프로토콜을 사용하여 IP주소를 알 때 MAC address를 얻어낸다.
위 그림은 Computer A가 D에게 데이터를 전송하고 싶은 상황이다. 이때 A는 D의 IP주소 10.0.0.5를 알고있다. 하지만 데이터 전송을 위해서는 D의 MAC address를 알아야 하므로, 해당 네트워크에 있는 모든 computer에 ARP request를 전송한다. (= What is mac of 10.0.0.5?를 브로드캐스트 전송)
해당 ARP request를 받은 D는 자신의 MAC address를 A에 전달해준다. 이를 받은 A는 비로소 D에게 데이터를 전송할 수 있는 상태가 된다. (IP, MAC address 전부 확보)
이때 A는 ARP request를 switch에 전송했는데, 만약 switch가 담당하는 네트워크에 IP 10.0.0.5를 가진 디바이스가 없다면 switch는 이를 거절한다. 네트워크 내에 해당 IP를 가진 디바이스가 존재하는 경우에만 ARP request를 브로드캐스트 전송한다. (브로드캐스트는 그 자체로 traffic 증가라는 단점을 가지므로, 네트워크 내에 해당 디바이스가 있지도 않은데 굳이 브로드캐스트 전송해서 네트워크에 부담을 주는 사고는 막는다.)
네트워크에 포함되는 모든 LAN 디바이스들은 반드시 자신의 고유한 MAC address를 가져야 한다. 따라서 랜카드 하나하나 마다 서로 다른 MAC address가 존재하고, router, switch, sever 에도 각각 고유한 MAC address가 할당되어 있다.
유니캐스트, 브로드캐스트, 멀티캐스트
캐스트 가족들에 대해 알아보자.
- 유니캐스트 Unicast : 송신자의 MAC address를 00-60-80-AA-BB-CC로, 수신자의 MAC address가 00-60-80-DD-EE-FF라고 가정한다. 통신을 위해서는 항상 프레임 안에 출발지와 목적지 주소가 들어가야 하는데, 유니캐스트의 경우 출발지에 00-60-80-AA-BB-CC를, 목적지에 00-60-80-DD-EE-FF를 직접 지정하여 전송하는 방식이다.
- 쉽게 말해 1:1 통신. 하지만 Local ethernet의 기본 성격 상 붙어있는 모든 PC들에게 수신된 정보를 뿌리는 Shared 방식을 취하므로, 해당 로컬 네트워크에 있는 모든 PC가 일단 이 frame을 받게 된다. 이 frame에 있는 목적지 address와 자신의 MAC address가 같은 경우에만 frame을 수신하고, 그렇지 않으면 그 frame을 버린다. 목적지가 아닌 디바이스들은 정보를 버리기 때문에 PC의 CPU에 영향을 주지 않는다. (자신이 받아야 하는 frame만 CPU로 올려보내고, 그렇지 않으면 CPU로 올리지 않는다. 이것이 브로드캐스트와의 가장 큰 차이)
- 브로드캐스트 Broadcast : Local LAN에 붙어있는 모든 네트워크 디바이스에 frame을 보내는 통신이다. Local LAN은 Router에 의해서 구분된 공간 = Broadcast domain을 의미한다. 목적지는 해당 domain에 존재하는 모든 네트워크 디바이스가 된다.
- 브로드캐스트는 목적지 주소를 FFFF.FFFF.FFFF로 설정한다. 브로드캐스트는 한 가지 특이점이 존재하는데, 수신 랜카드가 위 목적지 주소를 받았을 때 이것이 자신의 MAC address와 같지 않지만 이 패킷을 CPU에 전달하여 처리한다는 것이다. 유니캐스트는 자신의 MAC address와 정보의 목적지 주소가 다르면 이것을 버려 CPU에 부담을 주지 않았던 반면에 브로드캐스트는 CPU를 반드시 사용해야 하므로 PC의 성능이 떨어진다. → 브로드캐스트 패킷이 수신되면 PC는 하던 작업을 멈추고 브로드캐스트 패킷을 먼저 처리해야 한다.
브로드캐스트를 사용해야 하는 경우는 언제일까?
: 두 PC가 맨 처음 통신하는 경우, 송신자는 수신자의 IP주소는 알지언정 MAC address는 알 수 없다. 이때 수신자의 MAC address를 알아내기 위해 ARP를 전송하는데, ARP가 바로 브로드캐스트이다. 네트워크에 존재하는 모든 디바이스에 브로드캐스트로 ARP를 전달한다. 이때 ARP는 수신자의 IP주소를 담고있는데, 해당 IP를 갖는 디바이스가 일단 누군지 모르므로 네트워크 전체에 뿌리는 것. 이를 받은 수신자는 자신의 IP주소와 같다면 송신자에게 자신의 MAC address를 전달한다.
- 멀티캐스트 Multicast : 멀티캐스트는 쉽게 '원하는 그룹에게만 브로드캐스트'라고 이해할 수 있다. 예를 들어 네트워크에 존재하는 100명의 수신자 중 50명에게만 메시지 전달해야 하는 경우, 유니캐스트를 사용하면 하나하나 전송해야 하므로 번거롭고 브로드캐스트를 사용하면 메시지가 필요 없는 나머지 50명의 CPU성능에 손실이 발생한다. 이때 지정된 50명에게만 브로드캐스트를 전달하는 것이 멀티캐스트이다.
OSI 7 Layer
OSI(Open System Interconnection) 7 Layer는 1984년에 통신 국제 표준기구인 ISO(International Organizstion for Standardization)에서 제정한 통신의 7단계이다. 복잡한 통신 프로세스를 7단계로 표준화하여 통신의 효율성을 높이고자 고안되었다.
OSI 7 layer의 존재 이유
- 데이터의 흐름이 한 눈에 보인다 : 계층을 나눠놓으니까 데이터의 전송 흐름을 파악하기 쉽다.
- 통신에 오류가 발생했을 때, 해당 문제가 발생한 특정 계층만 분석하여 파악할 수 있다.
OSI 7 layer
- 물리계층 Physical Layer : 전기적, 기계적, 기능적 특성을 이용하여 케이블로 데이터를 전송함. 이 계층에서 통신 단위는 bit이며 1과 0, 즉 on과 off로 표현된다. 단지 데이터를 '물리적인 신호로 전송'하는데에만 집중하며 error를 검출하는 등의 과정은 없다. 통신 케이블, 리피터, 허브
- 데이터링크 계층 Data Link Layer : Physical Layer를 통하여 송수신되는 정보의 오류와 흐름을 관리하여 정보를 안전하게 전달할 수 있게 도와준다. 송수신 과정에서의 오류를 검출하고 재전송하는 기능을 포함하여, 위에서 배웠던 MAC address를 가지고 통신하게 하는 역할도 갖는다. 이 계층에서의 전송 단위는 '프레임'이라고 부르며, 대표적인 장비는 브리지, 스위치
- 네트워크 계층 Network Layer : 데이터를 목적지까지 가장 안전하고 빠르게 전달하는 것이 목표인 계층. 이 과정을 '라우팅'이라고 부르며, 라우팅을 거쳐 데이터 전송 경로를 선택, 주소 지정, 해당 경로에 따라 패킷을 전송한다. 라우터(Router)가 대표적인 장비이며 라우팅 기능을 포함한 스위치를 Layer 3 스위치라고 한다.
- 전송 계층 Transport Layer : 데이터의 flow control과 에러를 복구하는 기능을 담당한다. 에러 복구를 위해 패킷을 재전송하거나 flow를 조절하여 막힘없이 데이터가 전송되도록 한다. TCP나 UDP가 이 계층에 해당한다.
(책에서 전송계층까지만 설명해놔서 일단 여기까지 쓰겠음 ㅎㅎ)
+ 위 그림에서 알 수 있다시피 OSI 7계층을 통한 데이터 전송 과정에서는 매 계층마다 헤더라는 정보가 추가되고, 수신 과정에서는 그 헤더를 하나씩 떼어가며 진행된다. 따라서 실제 전송되는 데이터는 original data보다 크기 때문에 데이터 전송 속도가 예상보다 작게 나온다면 위 이유를 검토해볼 수 있다.
프로토콜 Protocol
프로토콜이란 컴퓨터간의 '언어'를 의미한다. 두 사람이 서로 같은 언어를 공유하지 않는다면 대화는 불가능하듯이 컴퓨터도 서로 같은 프로토콜을 사용하는 경우에만 통신이 가능하다. 현대 우리는 모든 PC와 통신이 가능한데, 그것은 우리 모두 TCP/IP (Transmission Control Protocol / Internet Protocol) 프로토콜을 사용하고 있기 때문이다. 전세계인 모두가 같은 프로토콜을 사용하고 있다.
'네트워크' 카테고리의 다른 글
[네트워크] 6. 서브넷 마스크, 서브네팅 (0) | 2023.12.23 |
---|---|
[네트워크] 5. IP, Class A B C (0) | 2023.12.23 |
[네트워크] 4. 브리지, 스위치 (1) | 2023.12.22 |
[네트워크] 3. TCP/IP, DHCP, 랜카드, 허브, 스위치 (1) | 2023.12.22 |
[네트워크] 1. 네트워크 개요 (1) | 2023.12.21 |