profile image

L o a d i n g . . .

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

  1. 한 PC가 데이터를 보내면 브리지가 다리를 건너 보낼 것인지 말 것인지 판단
  2. 이 때 데이터를 보낸 PC의 맥 어드레스를 자신의 브리지테이블이라는 곳에 저장
  3. 다음 번에 누가 테이블에 저장한 PC로 데이터를 보내면 다리를 건내 보낼 것인지 말 것인지를 판단하는 자료가 됨
  4. 즉, 브리지로 나뉜 두 세그먼트 E0, E1이 있을 때 방금 데이터를 보낸 PC가 어느 세그먼트에 있는지 저장해두는 것을 learning 이라고 함
  5. 다음번에 다른 PC가 그 PC를 찾을 때 브리지 건너 있는지 아닌지를 확인하기 위해 저장을 하는 것임

- Flooding

  1. 브리지가 프레임을 받고 보내기 위해 브리지 프레임을 찾아봤는데 아무리 찾아도 보낼 맥 어드레스가 저장되어 있지 않을 경우에는
  2. 데이터를 보낸 포트를 제외한 모든 포트에 프레임을 뿌림 (맥 어드레스가 저장되어 있지 않다는 뜻은 한 번도 그 PC와는 통신을 하지 않았기 때문에 출발 주소를 learning 하지 못해서 저장되어 있지 않다는 것)

- Forwarding

  1. 브리지가 목적지의 맥 어드레스를 알고 있고 (테이블에 저장되어 있음) 목적지를 가려면 브리지를 건너지 않아야 할 경우에 발생
  2. 즉, 출발지와 목적지가 같은 세그먼트일 경우임
  3. 이 Fliterling 때문에 콜리전 도메인을 나눌 수가 있는 것
  4. 이 자리에 허브가 들어간다면 콜리전 도메인으로 나눠 줄 수 X

- Aging

  1. learning 하고 나서 저장된 맥 어드레스를 평생 가지고 있는 것이 아닌, Aging timer를 가동시켜 일정 시간동안 카운트를 함 (디폴트는 5분)
  2. 그 출발지 맥 어드레스를 가진 프레임이 다시 들어오지 않으면 테이블에서 삭제
  3. 혹시 다시 들어온다면 Refresh 함
  4. 타이머를 리셋하여 처음부터 다시 카운트 함

브리지 / 스위치가 하는 일 과정 정리

출처:https://seokr.tistory.com/358


브리지와 스위치의 차이점

- 브리지는 프레임을 소프트웨어적 프로그램에 의해서 처리하는 방식

  스위치는 처리 절차를 미리 칩에 구워서 하드웨어 방식으로 만드는 ASIC 방식이라 처리 속도가 훨씬 빠름

 

- 브리지는 포트들이 같은 속도를 지원

  스위치는 서로 다른 속도를 연결해 줄 수 있는 기능을 제공

 

- 브리지는 대부분 2개 ~ 3개 정도의 포트 제공

  스위치는 몇십 ~ 몇백 개의 포트 제공

 

- 프레임 처리 시, 브리지는 오로지 store - and - forward 방법만을 사용

  스위치는 cut-through 또는 store - and - forward 방식을 사용


방식에 대한 설명

- 스토어-앤-포워드 (Store - and - forward)

  • 스위치나 브리지가 일단 들어오는 프레임을 전부 받아들인 후 처리를 시작
  • 프레임이 다 들어온 뒤에 제대로 다 들어왔는지, 에러는 없는지, 출발 주소, 목적지 주소는 어딘지 파악 후 처리
  • 에러가 발견되면 그 프레임을 버리고 재전송 요구 -> 에러 복구 능력이 뛰어남
  • 회선상에 에러가 자주 있거나 출발지와 목적지의 전송 매체가 다른 경우에 자주 사용

- 컷 스루 (Cut-through)

  • 스위치가 들어오는 프레임의 목적지 주소만 본 뒤, 바로 전송처리를 시작하는 방식
  • 프레임이 다 들어오기 전에 48비트만을 보고 목적지로 전송해 훨씬 빠름
  • 하지만, 프레임이 발생됐을지도 모르는 에러를 찾아내기는 어려워 복구 능력에는 약함

- 프래그먼트-프리 (Fragment-Free)

  • 스토어-앤-포워드 방식 + 컷 스루 방식의 장점 결합
  • 다 들어오길 기다릴 필요가 없다는 점에서 컷스루와 비슷
  • 하지만 48비트가 아니라 512 비트를 본 뒤 처리 -> 에러 감지 능력이 컷스루보다 나음


루핑 (Looping) 현상

  1. 두 호스트 사이에 브리지나 스위치가 두 개 있다고 가정
  2. 하나의 호스트에서 다른 호스트로 가는 경로가 2 개 이상 만들어 짐 (다른 호스트로 가려면 브리지를 통해야 함)
  3. 이 떄, 한쪽 PC에서 브로드캐스트를 보내게 되면 이것을 받은 브리지 또는 스위치가 브로드캐스트로 Flooding을 함
  4. 근데 다리를 건너서 있는 다른 브리지나 스위치가 이 브로드 캐스트를 받고 또 다시 Flooding을 하고, 또 하는 식으로 돌게 된다면
  5. CSMA/CD의 특성상 네트워크가 조용해야 통신이 가능한데 양 쪽 브르지를 타고 돌고 돌고 있으니 통신이 불가능 해짐
  6. 그럴 땐 이 루핑 현상을 자동으로 막아주는 알고리즘이 필요, 그 알고리즘을 패닝 트리 알고리즘이라고 함

폴트 톨러런트 (Fault tolerant) 와 로드 밸런싱 (Load balancing)

- 폴트 톨러런트: 네트워크 상에 어떤 문제 발생을 대비해 이중으로 미리 설치해놓는 것

  • 장비가 고장났을 떄, 대비하고 있던 장비로 교체하는 것
  • 처음부터 네트워크를 구성 할 때 두 대로 구성하여 한 쪽이 고장나면 다른 한 쪽 장비를 사용하게 구성하는 것

- 로드 밸런싱: 서버가 처리해야 할 업무 혹은 요청(Load)을 여러 대의 서버로 나누어(Balancing) 처리하는 것

  • 인터넷 회선을 두 개 사용하면 데이터들이 한 라인을 선택해 이용하므로 로드가 분산 -> 속도 2배
  • 한 쪽이 끊어지면 다른 한 쪽으로 이전 -> 이런 경우 로드밸런싱 + 폴트 톨러런트

- 대부분의 로드 밸런싱은 폴트 톨러런트가 가능, 그러나 폴트 톨러런트는 로드 밸런싱이 안 되는 경우가 있음


스패닝 트리 알고리즘 (Spanning Tree Algorithm)

  1. 스위치나 브리지에서 발생할 수 있는 루핑을 막기 위해, 두 개 이상의 경로가 발생하면 하나를 제외하고 나머지 경로들을 자동으로 막음
  2. 기존 경로에 문제가 생기면 막아놓은 경로 풀어서 데이터 전송하는 알고리즘

- 모든 스위치는 스패닝 트리 알고리즘 지원

- 스패닝 트리 알고리즘에 의해서 현재의 링크가 끊어졌을 때, 다른 링크가 다시 살아나서 연결해주는데 걸리는 시간은 약 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): 프로토콜, 데이터의 크기, 중요도 등을 따져 트래픽의 전송 순서를 조정하는 기능


참고

1. https://jvinci.tistory.com/22

복사했습니다!