TCP / IP와의 만남
TCP / IP란
- 인터넷의 공용어 (인터넷을 하기 위해 꼭 필요함)
- Arpanet 에 의해 처음 개발 되었음
- 각각의 네트워크에 접속되는 호스트들은 고유의 주소를 가지고 있어서 자신이 속해있는 네트워크 뿐만 아니라, 다른 네트워크에 연결 되어 있는 호스트까지도 서로 데이터를 주고 받을 수 있음
- 호스트 주소는 InterNIC (Internet Network Information Center) 란 단체에서 관리, 분배
- AppleTalk, IPX, NetBEUI 등도 있지만 가장 널리 쓰이는 건 TCP/IP
IP Address
- 인터넷을 사용하는 사람들 모두 세계에서 유일한 자신만의 주소를 가짐
- 내 주소로 남이 접속하면 IP 충돌 발생으로 둘 중 한 명은 접속 불가
- IP 주소는 210.126.12.99 처럼 점을 기준으로 네 자리의 10진수로 되어 있음
- 한 자리는 최대 255까지 가능, 이진수 32개로 구성, 컴퓨터는 컴퓨터가 알아들을 수 있는 2진수로만 이해
- IP는 총 2^32 로 되어 있고, IP 주소 방식인 IPv4의 주소가 부족해서 IPv6이 사용될 예정, 128개의 2진수로 이루어짐
DHCP (Dynamic Host Configuration Protocol)
- 원래 네트워크 관리자는 회사에 부서 이동이 있을 때마다 일일이 IP 주소를 새로 배정하고 되찾음
- DHCP 서버는 IP 주소를 자동으로 배정
- DHCP 서버가 그 네트워크에 필요한 IP 주소를 전부 가지고 있다가 클라이언트 PC가 켜지면서 네트워크에 브로드캐스트를 뿌리면 ("IP 한개만 줘!" 처럼) 그 때 IP 주소를 하나씩 배정
- 클라이언트 PC에 DHCP가 Enabled로 설정되어만 있다면 이 케이블은 어디든 인터넷 가능
네트워크 장비들에 관한 이야기
랜카드 = NIC (Network Interface Card) = 네트워크 어댑터
- 랜에 접속하기 위한 카드
- 사용자의 데이터를 케이블을 통해 허브나 스위치, 라우터 등으로 전달하는 역할
- 자신에게 온 데이터를 CPU에게 전달하는 역할
- IRQ (Interrupt Request): 인터럽트 요청
// 인터럽트: 운영 체제에서 컴퓨터에 예기치 않은 일이 발생하더라도 작동이 중단되지 않고 계속적으로 업무 처리를 할 수 있도록 해 주는 기능
- Base Memory: 메모리 범위
- 목적지의 주소가 자신의 랜 카드 맥 어드레스인 데이터가 들어왔을 때, 랜카드는 컴퓨터의 CPU에게 자신이 가지고 있던 IRQ를 이용해 인터럽트를 건다. 그러면 CPU는 IRQ 번호를 보고 '아, 이 인터럽트는 랜카드가 요청한거구나' 라고 생각한 뒤, 이 데이터에게 어떤 서비스를 할 것인지 미리 정해놓은 장소인 Base Memory로 이동해서 작업을 시작함
- 만일 이 IRQ가 이미 예약된 번호였다면 랜카드를 인식하지 못함
- 예전엔 수동으로 다 했지만 요즘엔 플러그 앤 플레이로 인해 랜카드를 꽂고 부팅하면 PC가 자동으로 안 쓰는 IRQ를 배정함
랜카드의 종류
- 이더넷, 토큰링, FDDI, ATM 등이 있으나 이더넷이 일반적
- 데스크탑용, PCMCIA 방식의 노트북용이 따로 있음
- PC의 버스 방식에 따른 종류 (버스: 컴퓨터에서 데이터가 날아다니는 길)
- PCI: 데스크탑용에서 현재 가장 많이 사용
- ISA: '아이사' 라고 읽고, 예전에 데스크탑용으로 썼지만 요즘은 잘 안 씀
- EISA: '이아이사' 라고 읽고, 서버급 PC에 간혹 사용
- 속도에 따라 분류 가능
- 포트에 따라 분류
- TP 포트를 가졌는지, BNC, AUI 포트 광케이블이 있는지
- 콤보형: BNC, AUI, UTP 커넥터를 다 가지고 있음, UTP로 대세가 바뀌면서 과도기
허브
- 랜카드가 설치된 PC들이 케이블을 타고 허브에 연결
- 같은 허브에 연결된 PC끼리는 서로 통신 가능
- 허브끼리도 연결 가능
- 구멍 10개 짜리 허브로 18대 연결하려면, 구멍 10개짜리 허브 2개 연결 후 나머지 구멍에 PC 18대 연결
- 이더넷용, 토큰링용
- 속도: 일반 허브 (10Mbps), 패스트허브 (100Mbps)
// 랜카드가 100Mbps 여도 허브가 10Mbps면 허브 속도에 따라 통신
- 멀티 포트: 포트가 여러 개 붙어있음
- 리피터: 데이터 전송 시, 거리의 제약으로 인하여 중간에서 들어온 데이터를 다른 쪽으로 전달해주는 역할, 두 장비가 멀리 떨어져 있어도 중간에 리피터를 두고 케이블로 연결하면 통신 가능
허브 종류
- 인텔리전트 허브
- NMS (네트워크 관리 시스템)을 통해서 모든 데이터를 분석할 수 있고, 앉아서 멀리 있는 허브의 동작을 감시하고 조정까지 가능
- 대형 네트워크에서만 사용
- 한 PC가 고장나서 계속 이상한 데이터를 허브에 끊임없이 보내면 다른 PC가 통신 불가능
- 왜냐하면 CSMA/CD (충돌 감지) 때문에 Collision 이 발생함
- 그 문제의 PC가 연결된 포트를 찾아내어 자동으로 고립시켜 버림, 분리 된 포트는 허브에서 램프로 표시되기 때문에 바로 알 수 있고 이 기능을 Auto Partition 이라고 함
- 더미 허브: 초창기에 나온 허브, 컴퓨터와 컴퓨터를 연결, 주소가 없기 때문에 하나의 컴퓨터에서 신호를 보내면 허브에 연결된 모든 컴퓨터에게 신호가 가게 됨
- 세미 더미 허브: 더미 허브인데 인텔리전트 허브와 연결하면 자기도 인텔리전트 허브가 됨
- 스태커블 허브
- 쌓을 수 있는 허브
- 스태커블끼리 연결하면 백플레인 (장비가 데이터 전송을 위해 연결된 일종의 고속도로)이 훨씬 빨라짐
- 연결된 장비중에 하나가 고장나도 다른 장비에 영향을 주지 않음
- MMS로 관리할 때, 전체 스택 장비를 마치 한 대의 장비처럼 (IP 주소 하나로) 관리가 가능하다는 장점 존재
허브와 스위치
- 허브는 콜리전 도메인이 약점 (콜리전 도메인: 메시지 전송시 충돌이 일어나는 영역)
- 콜리전 도메인을 나눠줄 수 있는 장비가 바로 브리지 또는 스위치
- 즉, 1번 PC와 2번 PC 사이에 통신이 일어나면 허브에서는 나머지 PC끼리 통신이 불가능인데, 스위치는 1번 PC와 2번 PC 사이에 통신이 일어나도 다른 3번 PC, 4번 PC끼리 통신이 가능
- 하지만 아무리 콜리전 도메인을 나눴다해도 모든 PC가 서버랑만 통신하는 경우, 한 순간에 하나의 PC만 통신 가능 (왜냐하면 그 때 서버는 한 대 뿐이라서) 그래서 이 경우에는 속도의 향상 기대 X
- 통신이 채팅, 메일 위주일 경우에는 허브가 싸고 좋지만 멀티미디어 다운로드 같은 경우는 스위치를 사용
- 요즘은 스위치 가격이 많이 저렴해져서 스위치로 전환해 쓰는 경우가 많음
브리지
- 스위치의 원조격, 허브보다 한 수 위의 장비
- 콜리전 도메인을 반으로 나눠서 한 쪽이 통신할 때, 다른 반쪽도 통신이 가능하게 함
- 즉, 허브는 받으면 다른 모든 PC에게 뿌리는데 브리지는 받고 확인한 뒤, 다리를 건너야 하는지 안 건너야 하는지 판단, 건너보내도 되면 건너 보냄, 안 건너도 되면 (데이터를 보낸 PC와 받은 PC가 같은 쪽일 때) 건너보내지 않음
브리지/스위치의 기능
- Learning
- 한 PC가 데이터를 보내면 브리지가 다리를 건너 보낼 것인지 말 것인지 판단
- 이 때 데이터를 보낸 PC의 맥 어드레스를 자신의 브리지테이블이라는 곳에 저장
- 다음 번에 누가 테이블에 저장한 PC로 데이터를 보내면 다리를 건내 보낼 것인지 말 것인지를 판단하는 자료가 됨
- 즉, 브리지로 나뉜 두 세그먼트 E0, E1이 있을 때 방금 데이터를 보낸 PC가 어느 세그먼트에 있는지 저장해두는 것을 learning 이라고 함
- 다음번에 다른 PC가 그 PC를 찾을 때 브리지 건너 있는지 아닌지를 확인하기 위해 저장을 하는 것임
- Flooding
- 브리지가 프레임을 받고 보내기 위해 브리지 프레임을 찾아봤는데 아무리 찾아도 보낼 맥 어드레스가 저장되어 있지 않을 경우에는
- 데이터를 보낸 포트를 제외한 모든 포트에 프레임을 뿌림 (맥 어드레스가 저장되어 있지 않다는 뜻은 한 번도 그 PC와는 통신을 하지 않았기 때문에 출발 주소를 learning 하지 못해서 저장되어 있지 않다는 것)
- Forwarding
- 브리지가 목적지의 맥 어드레스를 알고 있고 (테이블에 저장되어 있음) 목적지를 가려면 브리지를 건너지 않아야 할 경우에 발생
- 즉, 출발지와 목적지가 같은 세그먼트일 경우임
- 이 Fliterling 때문에 콜리전 도메인을 나눌 수가 있는 것
- 이 자리에 허브가 들어간다면 콜리전 도메인으로 나눠 줄 수 X
- Aging
- learning 하고 나서 저장된 맥 어드레스를 평생 가지고 있는 것이 아닌, Aging timer를 가동시켜 일정 시간동안 카운트를 함 (디폴트는 5분)
- 그 출발지 맥 어드레스를 가진 프레임이 다시 들어오지 않으면 테이블에서 삭제
- 혹시 다시 들어온다면 Refresh 함
- 타이머를 리셋하여 처음부터 다시 카운트 함
브리지 / 스위치가 하는 일 과정 정리
브리지와 스위치의 차이점
- 브리지는 프레임을 소프트웨어적 프로그램에 의해서 처리하는 방식
스위치는 처리 절차를 미리 칩에 구워서 하드웨어 방식으로 만드는 ASIC 방식이라 처리 속도가 훨씬 빠름
- 브리지는 포트들이 같은 속도를 지원
스위치는 서로 다른 속도를 연결해 줄 수 있는 기능을 제공
- 브리지는 대부분 2개 ~ 3개 정도의 포트 제공
스위치는 몇십 ~ 몇백 개의 포트 제공
- 프레임 처리 시, 브리지는 오로지 store - and - forward 방법만을 사용
스위치는 cut-through 또는 store - and - forward 방식을 사용
방식에 대한 설명
- 스토어-앤-포워드 (Store - and - forward)
- 스위치나 브리지가 일단 들어오는 프레임을 전부 받아들인 후 처리를 시작
- 프레임이 다 들어온 뒤에 제대로 다 들어왔는지, 에러는 없는지, 출발 주소, 목적지 주소는 어딘지 파악 후 처리
- 에러가 발견되면 그 프레임을 버리고 재전송 요구 -> 에러 복구 능력이 뛰어남
- 회선상에 에러가 자주 있거나 출발지와 목적지의 전송 매체가 다른 경우에 자주 사용
- 컷 스루 (Cut-through)
- 스위치가 들어오는 프레임의 목적지 주소만 본 뒤, 바로 전송처리를 시작하는 방식
- 프레임이 다 들어오기 전에 48비트만을 보고 목적지로 전송해 훨씬 빠름
- 하지만, 프레임이 발생됐을지도 모르는 에러를 찾아내기는 어려워 복구 능력에는 약함
- 프래그먼트-프리 (Fragment-Free)
- 스토어-앤-포워드 방식 + 컷 스루 방식의 장점 결합
- 다 들어오길 기다릴 필요가 없다는 점에서 컷스루와 비슷
- 하지만 48비트가 아니라 512 비트를 본 뒤 처리 -> 에러 감지 능력이 컷스루보다 나음
루핑 (Looping) 현상
- 두 호스트 사이에 브리지나 스위치가 두 개 있다고 가정
- 하나의 호스트에서 다른 호스트로 가는 경로가 2 개 이상 만들어 짐 (다른 호스트로 가려면 브리지를 통해야 함)
- 이 떄, 한쪽 PC에서 브로드캐스트를 보내게 되면 이것을 받은 브리지 또는 스위치가 브로드캐스트로 Flooding을 함
- 근데 다리를 건너서 있는 다른 브리지나 스위치가 이 브로드 캐스트를 받고 또 다시 Flooding을 하고, 또 하는 식으로 돌게 된다면
- CSMA/CD의 특성상 네트워크가 조용해야 통신이 가능한데 양 쪽 브르지를 타고 돌고 돌고 있으니 통신이 불가능 해짐
- 그럴 땐 이 루핑 현상을 자동으로 막아주는 알고리즘이 필요, 그 알고리즘을 패닝 트리 알고리즘이라고 함
폴트 톨러런트 (Fault tolerant) 와 로드 밸런싱 (Load balancing)
- 폴트 톨러런트: 네트워크 상에 어떤 문제 발생을 대비해 이중으로 미리 설치해놓는 것
- 장비가 고장났을 떄, 대비하고 있던 장비로 교체하는 것
- 처음부터 네트워크를 구성 할 때 두 대로 구성하여 한 쪽이 고장나면 다른 한 쪽 장비를 사용하게 구성하는 것
- 로드 밸런싱: 서버가 처리해야 할 업무 혹은 요청(Load)을 여러 대의 서버로 나누어(Balancing) 처리하는 것
- 인터넷 회선을 두 개 사용하면 데이터들이 한 라인을 선택해 이용하므로 로드가 분산 -> 속도 2배
- 한 쪽이 끊어지면 다른 한 쪽으로 이전 -> 이런 경우 로드밸런싱 + 폴트 톨러런트
- 대부분의 로드 밸런싱은 폴트 톨러런트가 가능, 그러나 폴트 톨러런트는 로드 밸런싱이 안 되는 경우가 있음
스패닝 트리 알고리즘 (Spanning Tree Algorithm)
- 스위치나 브리지에서 발생할 수 있는 루핑을 막기 위해, 두 개 이상의 경로가 발생하면 하나를 제외하고 나머지 경로들을 자동으로 막음
- 기존 경로에 문제가 생기면 막아놓은 경로 풀어서 데이터 전송하는 알고리즘
- 모든 스위치는 스패닝 트리 알고리즘 지원
- 스패닝 트리 알고리즘에 의해서 현재의 링크가 끊어졌을 때, 다른 링크가 다시 살아나서 연결해주는데 걸리는 시간은 약 1분 정도 소요
시스코의 이더 채널 (Ether-Channel) 기술
- 여러 개의 링크가 마치 하나의 링크처럼 인식되게 하는 기술
- 따라서 이더 채널이 지원되는 스위치는 평소에도 두 배의 속도를 냄
- 링크가 끊어져도 기다리는 시간이 전혀 없이 링크 유지
- 속도에 따라 패스트 이더 채널 (100 메가로 연결된 포트를 묶음), 기가 이더 채널 (100메가)
- 최대 8개의 링크를 묶어서 만들 수 있게 함
- 업링크 패스트 (Uplink Fast): 전통적인 스패닝 트리에서 복구 시간이 1분 이상 걸리는 단점에 착안, 2~3초로 줄임
라우터와 스위치
- 가격, 속도, 구성의 편리함에 있어 스위치가 월등
- 하지만 스위치로만 네트워크 구성하면 풀 수 없는 한계가 존재
- 그 이유로 브로드캐스트
- 인터넷 전체가 하나의 브로드 캐스트 영역 (도메인) 이라고 하면
- 다른 나라에 있는 PC 한 대만 꺼져도 나한테 그 영향이 전달 됨
- 그래서 브로드캐스트 영역을 나누는 라우터가 꼭 필요함
보통 IP일 때 500노드
// 노드: 네트워크에 접속되는 장비, 주로 PC의 수
- IPX일 때 300 노드, Apple Talk은 200 노드가 좋지만 이 기준에서 반 정도만 사용하여야 제대로 네트워크 사용 가능
- 그 외에도 라우터는 보안 기능 즉, 패킷 필터링 기능, 로드 분배 기능이 있고, QoS 기능이 있음
// 로드 분배: 여러 경로를 탈 수 있어 한 쪽이 고장나도 다른 경로로 갈 수 있음
// QoS (Quality of Service): 프로토콜, 데이터의 크기, 중요도 등을 따져 트래픽의 전송 순서를 조정하는 기능
참고
'책 > 후니의 쉽게 쓴 시스코 네트워킹' 카테고리의 다른 글
[책] 후니의 쉽게 쓴 시스코 네트워킹 - Part 11 (0) | 2023.03.15 |
---|---|
[책] 후니의 쉽게 쓴 시스코 네트워킹 - Part 9, 10 (0) | 2023.03.12 |
[책] 후니의 쉽게 쓴 시스코 네트워킹 - Part 7, 8 (0) | 2023.03.01 |
[책] 후니의 쉽게 쓴 시스코 네트워킹 - Part 5, 6 (0) | 2023.02.11 |
[책] 후니의 쉽게 쓴 시스코 네트워킹 - Part 1, 2 (0) | 2023.02.08 |