이 게시물은 후니의 쉽게 쓴 CISCO 네트워킹 4판을 공부한 내용을 바탕으로 작성됨.
TCP/IP
현대 인터넷을 사용하기 위해 반드시 필요한 프로토콜! 이 바로 TCP/IP이다. 인터넷을 사용하는 모든 PC는 TCP/IP를 따른다. 1970년대 초반부터 다양한 데이터 전송 프로토콜들이 개발되었는데, 그 중 가장 많이 사용되고 있는 것이 바로 TCP/IP이다.
여기서 개념이 좀 헷갈린다. OSI 7계층, TCP/IP 4계층, TCP/IP 프로토콜?
- OSI 7 Layer : 전체 네트워크 통신 과정을 7단계로 분할하여 설명하는 것. 각 단계마다의 역할이 있다.
- TCP/IP 4 Layer : TCP/IP 프로토콜 스택 구조를 네 개의 계층으로 분류한 것. (각 계층마다 어떤 프로토콜이 사용되는지를 나타냄)
- TCP/IP 프로토콜 : 인터넷 기반의 네트워크 통신을 위한 프로토콜들의 집합. TCP, UDP, IP, ICMP, ARP, DNS, HTTP 등...
IP 주소
전 세계에서 인터넷을 사용하는 모든 사람은 서로 다른 IP 주소를 갖는다. 만약 다른 사람이 나와 같은 IP 주소를 사용한다면 IP 주소가 서로 충돌하기 때문에 둘 중 하나는 인터넷을 사용할 수 없게 된다.하지만 현대에 인터넷을 사용하는 디바이스가 우후죽순 늘어나 각 디바이스가 서로 다른 IP 주소를 사용하는 것이 어렵게 되었다.
이를 해결하기 위해 내부 네트워크에서는 공인되지 않은 IP 주소를 사용하고, 인터넷으로 나갈 때만 유일한 공인 IP 주소를 사용하는 방식인 NAT (Network Address Translation)을 사용할 수 있다.
여러 디바이스가 동일한 IP 주소를 가지고 인터넷에 접속하되 포트 넘버만을 바꿔서 사용하는 PAT을 사용하기도 한다.
핵심은 바로 인터넷을 사용하는 디바이스가 서로 다른 고유 주소인 IP를 사용한다는 것이다. 그렇다면 각 디바이스마다 IP를 할당해주는 기관이 존재해야 하는데, 이 기관이 바로 NIC (Network Information Center)이다.
예를 들어 IP (IPv4) 주소는 10.139.4.36 처럼 표현될 수 있다. 이는 십진수 표현인데, 이진수로 바꾸면 다음과 같다.
00001010.10001011.00000100.00100100
이처럼 IP 주소는 이진수 8자리가 4묶음으로 되어 총 32개의 이진수로 구성된다. 따라서 전세계인이 사용할 수 있는 IP 주소는 기본적으로 2의 32승이 된다. 엄청 많아보이지만 인터넷 디바이스의 수요도 엄청나기 때문에 IP 주소가 모자란다. 뒤에서 배우겠지만 위는 IPv4인데, IP 주소 고갈 문제로 인하여 IPv6이 개발되었다. IPv6은 128 bits를 가지므로 2의 128승 개의 주소를 할당할 수 있다.
DHCP (Dynamic Host Configuration Protocol)
IP 배정은 매우 골치아픈 작업이다. PC를 포멧하거나 부서를 이동하는 경우 IP 주소를 다시 할당해야 하는데, 남아있는 IP 주소를 찾아다가 할당해주는 것 자체가 번거로운 일이다. 그래서 DHCP(Dynamic Host Configuration Protocol) 서버라는 것이 등장하였다.
DHCP 서버의 동작은 위와 같다. Arriving client는 IP주소를 갖고있지 않은 상황에서 IP주소를 하나 배정해달라는 브로드캐스트를 네트워크에 전송한다. 이 메시지를 받은 DHCP는 해당 디바이스에 IP를 자동으로 할당해준다.
DHCP는 PC 하나하나에 IP를 미리 설정해두지 않고 DHCP가 네트워크 내에 있는 PC들에 할당할 IP 주소를 가지고 있다가 이를 필요로 하는 PC에 그때마다 자동으로 할당해주는 것이다. 해당 PC가 IP주소를 다 사용했다면 다시 주소를 회수해간다.
랜카드; NIC (Network Interface Card)
가장 흔하게 볼 수 있는 네트워크 장비로, 간략하게 표현하면 '랜카드'이다. PC를 네트워크에 연결하여 통신하기 위해 사용하는데, 토큰링용, ATM용, FDDI용, 이더넷용 랜카드 등으로 구분한다. 우리는 현재 이더넷을 국룰로 사용하기 때문에 이더넷용 랜카드를 사용하는 것이 일반적이다.
PC에 장착하는 랜카드는 '버스' 방식에 따라 그 종류를 구분한다. 버스란 데이터가 전송되는 경로를 의미하는데, 크게 PCI, ISA, EISA (Enhanced ISA) 방식이 있으며 현재는 대부분 PCI를 사용한다.
PC의 버스 방식을 잘 확인하고 그에 맞는 랜카드를 구입하여 사용하여야 한다. PCI 버스 PC에 ISA 랜카드를 장착하는 것을 불가능하다.
랜카드는 속도에 따라서도 그 종류가 구분된다. 크게 10Mbps, 100Mbps, 1Gbps 등으로 구분되는데, 요즘은 100Mbps, 1Gbps가 일반적이다. 랜카드의 전송속도가 빠르다는 것은 그 만큼 같은 시간에 대역폭을 통과하는 데이터 양이 많아졌다는 것을 의미한다.
10Mbps는 1초에 10,000,000bits를 전송한다는 것을 의미한다. 보통 파일의 크기를 나타내는 단위는 Byte이므로 이를 byte 단위로 바꿔보면 1,250,000Byte가 되어 1초에 약 1MB의 데이터를 전송할 수 있음을 나타낸다. 하지만 실제 통신 환경에서는 계층을 건널때마다 헤드가 부착되므로 데이터의 크기가 더 커져 1MB의 성능이 나오지 않는다. (비록 랜카드는 1MB를 지원 할지라도..)
허브 Hub
허브는 PC들을 서로 연결해준다. 랜카드가 설치된 PC는 케이블을 이용하여 허브로 연결되는데, 한 허브에 연결되어있는 PC들은 서로 통신이 가능해진다. 허브에 구멍이 몇 개 인지에 따라 몇 포트 허브라고 부른다. 위 그림은 8포트 허브가 되겠다.
근래에는 스위치가 허브를 대신하여 허브를 더 이상 쓰지 않지만 랜카드, 케이블, 허브만 있으면 일단 허브에 접속된 모든 PC가 통신이 가능하게 끔 네트워크를 구성할 수 있기 때문에 배우는 과정에서는 꼭 알아두어야 한다. 물론 이 경우 허브 외부에 있는 PC와는 통신이 불가능하다.
허브는 '멀티포트 리피터 (Multiport Repeater)'로 리피터의 역할을 대신한다.
리피터란? 이름 그대로 데이터를 재전송해주는 장비이다. 예를 들어 현재 가장 흔하게 사용되는 UTP 케이블은 최대 전송거리가 100m인데, 디바이스 간 거리가 100m 이상이면 통신이 불가능하다. 이때 리피터를 이용하여 정보를 받아 그대로 수신자에게 전달해주면 100m를 넘어서 통신이 가능하다.
과거에는 리피터가 많이 사용되었지만, 현재는 훨씬 값이 싼 허브가 그 역할을 대신하기 때문에 리피터는 더 이상 사용되지 않고 있다. 여러 PC가 서로 허브에 연결됨에 따라 허브가 리피터 역할을 한다는 것을 숙지하자.
위 그림에서 A가 D에게 데이터를 전송하는 시나리오를 생각해보자.
- A는 데이터를 허브에 전송한다.
- 허브에서 A를 제외한 모든 디바이스에 데이터를 뿌린다.
- 데이터의 목적지 MAC address와 부합하는 D만이 데이터를 수신한다.
- B,C는 데이터의 목적지 MAC과 자신의 MAC address가 다르므로 이 데이터를 버린다.
- D는 자신의 CPU에 인터럽트를 걸어 데이터를 처리할 것을 요청한다.
허브는 이더넷 장비이다. 이더넷은 CSMA/CD를 기본으로 하기 때문에 어떤 PC가 허브에 데이터를 보내고 있을 때 또 다른 PC가 허브에 데이터를 전송하면 Collision이 발생한다. 따라서 같은 허브에 연결된 모든 디바이스는 같은 Collision domain에 있다고 표현한다. 같은 Collision domain에 있는 디바이스들은 허브에 데이터를 전송하기 위해 순서를 기다려야 한다.
참고 ☞ 허브는 IP주소 할당이 필요하지 않다. 그냥 전원 꼽고 사용하면 된다고 한다.
허브의 한계
1. 속도 : 100Mbps 전송속도를 지원하는 허브에 20대의 PC를 연결하면 최악의 경우 각 PC들은 100/20Mbps의 속도로 데이터를 전송하게 된다. 하지만 실제로는 네트워크상에 데이터가 계속 전송되는 것은 아니기 때문에 저 정도 수준은 아니지만, 허브에 연결된 PC들은 허브의 BW를 나눠갖기 때문에 디바이스를 많이 연결할수록 속도가 느려진다.
2. 1Gbps 허브로 바꾼다면? : 그렇더라 하더라도 허브↔PC간 데이터 통신은 한 번에 한 PC만 가능하므로 (CSMA/CD) 우리가 기대하는 성능 증가는 아닐 수 있다. (성능이 당연히 증가하긴 한다.)
3. 잦은 Collision : 위 그림에서는 3개의 허브를 연결하여 총 12대의 PC가 한 Collision domain 내에 있다. 더 많은 PC들이 서로 통신할 수 있도록 하기 위해서는 네트워크 크기를 늘려야만 하는데, 허브만으로 네트워크 크기를 늘리면 Collision domain 역시 선형으로 늘어나버려서 Collision이 더 자주 발생한다.
→ 네트워크 크기를 늘릴 때는 Hub가 아닌 다른 장비를 사용하여야 한다.
허브 종류
크게 인텔리전트(Intelligent) 허브, 더미(Dummy) 허브로 나눈다.
- 인텔리전트 허브 (Intelligent Hub) : 지능형 허브로써 NMS(네트워크 관리 시스템)이 가능하다는 것이 더미 허브와의 차이점이다. NMS를 통해 모든 데이터를 분석하고 제어한다. 또한 (허브 IP를 설정해주는 경우) 웹 브라우저를 통해 네트워크 관리가 가능하다. 하지만 이 기능은 굳이 쓸모있지는 않기 때문에 이 기능들 때문에 굳이 비싼 인텔리전트 허브를 사는 것은 옳지 않다.
- 하지만 인텔리전트 허브가 빛을 발하는 순간이 있다. 예를 들어 허브에 연결된 한 PC에 오류가 발생하여 허브에 데이터를 계속 전송하는 경우, CSMA/CD 특성 때문에 다른 PC들은 허브에 데이터를 전송할 수 없게 된다. 이 경우 해당 PC를 꺼버리지 않는 이상 문제가 해결되지 않는데, 인텔리전트 허브는 오류가 발생한 PC를 찾아내어 Isolation 시킬 수 있다. 그렇게 되면 나머지 PC들은 정상적으로 통신이 가능하다. → 이 기능을 Auto Partition이라고 한다. (최근에는 더미 허브도 이 기능을 탑재하고 있다고 한다. 그럼 인젤리전트 왜씀?!?)
- 세미 더미허브 (Semi Dummy Hub) : 세미 더미허브는 혼자 있을때는 더미허브로, 인텔리전트 허브와 연결하면 자신도 인텔리전트 허브로 동작하는 허브이다.
- 스태커블 허브 (Stackable Hub) : 쌓을 수 있는 허브를 의미한다. 스태커블 허브를 서로 연결하면 Backplane(데이터 전송경로)의 속도가 굉장히 빨라지고 연결된 장비 중 하나가 고장나도 다른 장비에는 영향을 주지 않는 등의 장점이 있다.
- 스탠드얼론 허브 (Standalone Hub) : 쌓을 수 없는 허브를 의미한다. 스탠드얼론 허브도 서로 연결하여 사용하는 것은 가능하지만 스태커블 허브처럼 연결했을 때 시너지 효과는 나지 않는다. 애초에 하나만 사용하도록 설계되었기 때문에.. 여러개 쌓아서 사용할거면 스태커블 허브를 쓰는 편이 옳다.
스위치의 등장
허브의 가장 치명적인 단점은 '한 번에 하나만 전송' 이었다. 아무리 빠른 속도를 지원하는 허브를 사용한다고 한들 동시에 여러 PC가 데이터를 주고받으면 Collision이 발생한다. Collision domain이 커질수록 Collision 발생 빈도가 낮아지고, 그에 따라 네트워크의 성능이 저하된다.
따라서 Collision domain을 분할해주는 장비가 필요해지게 되었는데, 이것이 바로 브리지(Bridge)와 스위치(Switch)이다. 브리지는 1980년에 개발된 원조격의 장비이고, 스위치가 1990년에 개발되면서 브리지의 자리를 대신하게 되었다. 현재는 브리지 대신 스위치만을 사용하지만 스위치가 브리지의 모든 기능을 포함하기 때문에 브리지 역시 반드시 공부해야 한다.
허브는 하나의 시간 간격동안 한 경로에서만 통신이 가능하다는 단점이 있었다. 스위치는 이것을 해결하였다. 예를 들어 아래 그림에서 PC 1,2가 통신하는 동안 PC 3,4도 통신할 수 있다.
각 장비마다 Collision domain이 각각 나뉘어져 있는 것을 볼 수 있다. 주어진 시간에 어떤 장비와도 통신이 가능하다는 것이다. (1번 PC와 2번 PC가 동시에 3번 PC로 데이터를 전송하는 경우에는 Collision이 발생하겠지만)
따라서 일반적으로는 허브대신 스위치를 사용하는 것이 옳아보인다. 하지만 허브는 나름대로 처리속도가 스위치보다 약간 빠르며 (리피터 역할만 하면 되므로), 가격이 매우 저렴하기 때문에 스위치가 굳이 필요하지 않은 소규모 네트워크나 채팅만을 주로 사용하여 트래픽이 적은 경우에서는 허브를 사용해도 괜찮다.
왼쪽의 허브의 경우는 Computer A가 B와 통신하는 경우 C는 D와 (또 다른 컴퓨터 D가 있다고 치자) 통신 할 수 없다. Hub에 연결된 모든 PC들은 같은 Collision domain에 있기 때문에 어느 한 곳에서 통신이 발생하면 나머지들은 기다려야 한다.
반면 오른쪽 스위치의 경우에는 A와 B가 통신하는 와중에 C와 D가 통신 할 수 있다.
단적인 예로 허브와 스위치에 연결된 모든 장비 A,B,C가 서버에 데이터를 전송해야 하는 상황을 생각해보자. A,B,C가 동시에 서버로 데이터를 전송하면 서버에서 Collision이 발생한다. 허브나 스위치나 상관 없이 그냥 충돌한다. 따라서 이런 경우에 한해서는 허브와 스위치의 속도 차이가 크게 나지 않는다. → NW 엔지니어는 네트워크 환경에 따라 어떤 장비를 사용해야 할지 선택할 수 있는 능력을 갖추어야 한다.
'네트워크' 카테고리의 다른 글
[네트워크] 6. 서브넷 마스크, 서브네팅 (0) | 2023.12.23 |
---|---|
[네트워크] 5. IP, Class A B C (0) | 2023.12.23 |
[네트워크] 4. 브리지, 스위치 (1) | 2023.12.22 |
[네트워크] 2. MAC, 브로드캐스트, OSI 7계층, 프로토콜 (0) | 2023.12.21 |
[네트워크] 1. 네트워크 개요 (1) | 2023.12.21 |