본문 바로가기

더 괜찮은 개발자가 되기위한/정보시스템 운영

시스템운영에 필요한 네트워크 지식

□ 시스템운영에 필요한 네트워크 지식


TCP/IP 프로토콜


TCP/IP 프로토콜은 인터넷의 기반을 이루는 전 세계적으로 가장 많이 사용되는 통신 프로토콜이다. 패킷 통신을 담당하는 IP(Internet Protocol)과 전송 조절을 담당하는 TCP(Transmission Control Protocol)로 구성된다.


두 개체가 TCP/IP를 사용해서 통신을 하기 위해서는 먼저 연결(Connection)을 맺어야 한다. 연결을 위해서는 연결 데이터를 여러 차례 교환하는데 이것을 핸드쉐이킹(handshaking)이라 하며 모두 세 번에 걸쳐 데이터가 전송된다고 해서 3 way handshaking이라고 한다.


TCP/IP 프로토콜은 데이터 전송의 신뢰성을 보장하기 위해 재전송 타이머, 체크썸, 중복 데이터 검출, 흐름제어와 같은 여러 가지 기능을 지원하고 있다. TCP/IP는 전송을 위해 먼저 데이터를 패킷이라 불리는 일정한 크기로 나누고 이것을 순서대로 통신 상대방에게 전송한다.


TCP/IP 프로토콜 스택


TCP/IP 프로토콜 스택은 5계층으로 구성된다. 1계층은 물리 계층이다. 우리가 눈으로 볼 수 있는 랜선이나 광케이블과 같은 물리적인 통신 선들이 물리 계층에 해당한다.


2계층은 데이터링크 계층이다. 네트워크 인터페이스 역할을 하는데 우리가 사용하는 네트워크 카드가 데이터링크 계층 역할을 한다. 네트워크 인터페이스를 식별하기 위해서는 고유한 주소가 필요한데 이것을 MAC(Media Access Control) 주소라 한다. MAC 주소는 PC 명령어에서 쉽게 확인할 수 있는데 12개의 16진수 조합으로 구성된다. MAC 주소는 네트워크 카드가 생산될 때 전세계에서 유일한 고유 값이 부여된다.


3계층은 네트워크 계층이다. 3계층에 속하는 대표적인 프로토콜이 IP인데 IP에는 네트워크를 통해 데이터가 목적지까지 잘 전송될 수 있도록 하는 출발지와 목적지 주소를 가지고 있다. 우리가 말하는 IP 주소가 IP 프로토콜에서 사용하는 주소를 줄여서 IP주소라 하는 것이다.

4계층은 전송 계층이다. TCP4계층의 대표적인 프로토콜인데 전송자와 수신자 간에 연결을 설정하고 데이터의 보내는 순서를 유지하고 중복이나 손실 없이 데이터를 안전하게 보낼 수 있는 연결지향형 프로토콜이다. 반대로 데이터 손실을 고려하지 않고 고속으로 전송하는 프로토콜을 UDP라 한다.


5계층은 응용 계층이다. 사용자에게 서비스되는 다양한 형태의 어플리케이션이 응용계층에 해당한다. 응용계층에는 대표적으로 HTTP 프로토콜이 있는데 우리가 평소에 가장 많이 사용하는 웹서비스를 제공하는 프로토콜이다.


PC 네트워크 정보 확인하기


윈도우 기반의 사용자 PC 네트워크 정보는 (1) ipconfig all 명령으로 쉽게 확인할 수 있다. ipconfig 명령어는 PC가 통신을 위해 필요한 기본적인 네트워크 정보를 알려주는 명령어이다.


(2) 먼저 네트워크 인터페이스 카드 정보를 알 수 있다. 지금 PC에서 사용하고 있는 네트워크 인터페이스 제품은 Realtek PCIe GBE Family Controller이다.


(3) 네트워크 인터페이스에 부여된 물리적 주소인 MAC 주소를 알 수 있다. 네트워크 카드의 MAC 주소는 30-5A-3A-7C-12-4E이다.


(4) PC IP 주소를 알 수 있다. 현재 PC에 설정된 IP 주소는 160.100.52.158이다.


(5) 서브넷 마스크 정보도 알 수 있는데 먼저 서브넷의 개념부터 살펴보자. 서브넷은 관리를 쉽게 하기 위해 네트워크를 여러 개로 쪼개는 것이다. 서브넷 마스크는 쪼개진 네트워크 안에서 IP를 쉽게 식별하기 위해 상위 네트워크를 가리는 것이다. 가려진 상위 네트워크 부분은 알 필요가 없으니 컴퓨터 입장에서는 저장공간과 연산 속도가 줄어든다. 서브넷 마스크가 255.255.255.0 이므로 하위 네트워크에서 사용할 수 있는 IP 256-2 (2개는 네트워크 관리 용도로 할당) 이다.


(6) 게이트웨이는 네트워크를 나누는 스위치이다. 서브넷이 네트워크를 나눈 것이라고 했는데 나눠진 네트워크는 게이트웨이를 통해 분리된다. 만일 내가 찾는 통신 상대방이 서브넷에 없다면 어디에 있는지 게이트웨이에게 물어봐야 한다.


(7) DNS(Domain Name Server)는 사람이 인식할 수 있는 도메인 이름을 컴퓨터가 알 수 있는 IP 주소로 변경해 준다. 우리가 www.naver.com 브라우저 주소 창에 입력하면 브라우저는 DNS에게 IP주소가 무엇인지 물어보고 125.209.222.141(가칭)을 반환 받는다.


○ 네트워크 스위치


네트워크 스위치 종류


네트워크 스위치는 통신망 상에서 단말과 서버, 단말과 단말 그리고 기타 통신 장비를 고속으로 연결해주는 장치이다. 네트워크 스위치는 목적에 따라 L2, L3, L4, L7으로 분류되며 분류 기준은 OSI 7 계층 분류를 따르고 있다.


L2 스위치

(출처: https://www.cisco.com)


L2 스위치는 MAC 주소를 인식할 수 있다. 따라서 L2 스위치는 스위치 포트와 목적지 MAC 주소를 쌍으로 하는 테이블을 메모리에 저장하고 있다. 통신 데이터가 들어오면 L2 스위치는 통신 데이터 헤더에서 목적지 MAC 주소를 확인하고 테이블을 참조해서 어떤 포트로 데이터를 보낼 지 결정한다. 여러 대의 컴퓨터를 L2 스위치를 사용하여 연결할 때 컴퓨터의 네트워크 카드와 L2 스위치 포트가 연결된다.


L3 스위치

(출처: https://www.cisco.com)


LAN은 효율적인 네트워크 관리를 위해 망을 계층적으로 구성할 수 있다. 앞에서 잠깐 설명한 서브넷을 사용해서 망을 분리하는데 각각의 서브넷은 L3 스위치를 중심으로 분리되고 서브넷 안에 있는 컴퓨터 들은 L2 스위치나 허브를 통해 연결된다. 서브넷을 연결하는 L3 스위치는 라우팅 가능을 수행한다. 라우팅이란 목적지 IP를 가지고 있는 컴퓨터를 어떤 경로로 찾아가면 가장 빠를 지를 결정하는 기능이다


L4 스위치

(출처: https://www.cisco.com)


L4 스위치의 주된 용도는 로드 밸런싱(Load Balancing)이다. 동일한 기능을 하는 여러 대의 서버를 L4 스위치에 연결한다. 클라이언트에서 서버에 작업 요청을 하면 L4 스위치에서 어느 서버에 요청을 전달할 지 결정한다. 어느 서버에 작업 요청을 전달할지 결정하는 것을 부하 분산 알고리즘이라고 하며 라운드 로빈, 가중치 라운드 로빈, 최소 연결 등 다양한 알고리즘을 지원하고 있다. 스위치가 작업 요청이 왔다는 것을 알기 위해서는 서비스를 식별하는 포트 번호를 알아야 하기 때문에 포트를 식별할 수 있는 OSI 7 4계층의 이름을 따서 L4 스위치라 부른다.


L7 스위치

(출처: https://www.cisco.com)


L7 스위치는 네트워크 패킷의 헤더 부분뿐만 아니라 데이터 부분까지 분석해 컨텐츠 기반으로 원하는 경로로 전달하는 웹스위칭 기능을 지원하는 장비이다. 컨텐츠 기반의 지능형 트래픽 관리와 컨텐츠 내부에 숨어있는 바이러스와 공격 패킷을 찾아내는 보안 기능을 동시에 지원한다.


L7 스위치는 HTTP 쿠키 기반으로 사용자를 구분하고 특정 서버로 접속하도록 설정할 수 있으며 URL을 분리해 특정 URL 패턴이 감지되면 특정 웹서버가 요청을 처리하도록 할 수 있다. L7 스위치는 보안을 위해 컨텐츠 기반 패킷 필터링, 안티 바이러스, 응용 레벨의 미러링 기능을 지원한다


백본 스위치

(출처: https://www.cisco.com)


백본 스위치는 네트워크의 중심에 위치하며 모든 패킷이 지나가는 스위치 장비이다. 백본 스위치는 대용량 트래픽을 처리해야 하므로 기가급 장비를 사용하며 트래픽 처리에 대한 부하가 상대적으로 적은 L3 스위치를 사용한다. 데이터센터 내부에서 운영하는 모든 서버와 회사 내부에서 사용하는 모든 PC는 스위치를 거쳐 백본으로 들어가게 된다. 스토리지를 사용하는 서버도 또한 일단 백본으로 연결되고 백본에서 스토리지와 다시 연결되게 된다. 데이터 센터 내부에 있는 모든 장비들은 백본을 통해 서로 연결된다고 생각하면 된다. 


백본 스위치는 장애가 발생하면 모든 네트워킹이 마비되기 때문에 반드시 이중화 구성을 해야 한다. 또한 백본 스위치를 공유하는 장비가 많기 때문에 업무 특성 별로 연결되는 장비를 구분하여 VLAN을 구성한다. VLAN은 물리적이 아닌 논리적으로 네트워크를 분리하여 관리를 쉽게하고 보안을 향상시키는 기술이다. 백본에 VLAN을 구성하면 하나의 VLAN 그룹에서 발생한 트래픽은 다른 VLAN 그룹에 영향을 미치지 않게 된다.


○ 라우터


기업에서 사용하는 인터넷 라우터는 인터넷과 기업 내부 네트워크를 연결하는 네트워크 장비이다. 인터넷에서는 기업 내부에 있는 하나의 서버를 바라보기 보다는 가장 바깥에 있는 라우터를 바라본다고 생각하면 이해가 쉽다. 인터넷은 라우터와 라우터의 연결이고 기업 네트워크가 인터넷과 연결하기 위해서는 본인도 하나의 라우터를 가지고 있어야 한다


인터넷 라우터


라우터는 목적지 서버로 가는 가장 빠른 길을 찾는 기능을 제공한다. 이것을 라우팅이라고 부르는데 라우터 간에 주기적으로 정보를 주고 받으면서 목적지 아이피가 주어졌을 때 가장 빠른 길을 찾아내는 알고리즘을 제공한다.


인터넷 라우터가 제공하는 또 다른 기능은 바로 NAT(Network Address Translation)이다. 인터넷은 라우터 밖에 모르기 때문에 내부에 있는 사용자 PC나 서버를 알 수 있게 하려면 내부 네트워크에서 사용하는 아이피를 기억하고 있다가 외부 네트워크로부터 응답이나 요청이 올 경우 누구의 패킷인지 찾아줘야 한다. 이러한 기능을 NAT라고 한다. 인터넷 라우터는 내부망에 있는 컴퓨터가 인터넷과 원활하게 통신할 수 있도록 NAT 기능을 지원하고 있다.

 

PC에서 실행하는 간단한 명령어


tracert는 인터넷에서 목적지를 찾아가는데 거쳐가는 경로를 표시하고 네트워크 상태를 알려주는 네트워크 모니터링 유틸리티이다. 목적지를 www.naver.com로 지정했고 DNS에서 IP주소 125.209.222.141를 알아내서 목적지까지 가는 데 거쳐가는 호스트 정보를 표시했다. 처음에 찾은 것이 172.17.0.2 PC가 연결되어 있는 네트워크의 라우터 장비일 가능성이 높다. 호스트에 따라서는 보안 설정에 tracert 명령어에 응답하지 않도록 설정되어 있는 경우가 있다. 이럴 경우 시간을 표시하는 부분에 *가 나오고 호스트 IP 정보를 표시해주지 않는다


tracert 명령어


tracert는 내부적으로 ICMP(nternet Control Message Protocol, 인터넷 제어 메시지 프로토콜) 프로토콜을 사용하고 있다. ICMP 프로토콜은 3(네트워크) 계층 프로토콜이기 때문에 HTTP, FTP, Telnet 4층 이상의 유틸리티가 동작하지 않을 때도 사용할 수 있다.


네트워크 점검 유틸리티인 ping(Packet INternet Groper)은 네트워크 상태를 알아보려는 대상 호스트에 일정 크기의 패킷을 보내고 대상 호스트가 보낸 응답을 확인 후 분석해 네트워크 상태를 알려주는 기능을 한다. ping 또한 내부적으로 ICMP 프로토콜을 사용한다. ping은 대부분의 운영체제에 기본으로 탑재되어 있고 사용법 또한 유사하기 때문에 쉽게 사용할 수 있다


ping 명령어


ping은 네트워크 공격에 악용될 수 있기 때문에 보안장비에 의해서 막혀있는 경우가 많이 있다. 따라서 ping을 사용했을 때 응답이 없더라도 네트워크에 문제가 있다고 바로 판단하기 보다는 다른 채널을 사용해 확인해 봐야 한다


telnet 사용 설정


telnet은 네트워크 연결에 사용되는 대표적인 응용프로토콜이다. 네트워크에 여러 대의 컴퓨터가 연결되어 있을 때 하나의 컴퓨터에서 다른 컴퓨터로 접속할 때 telnet을 사용하면 쉽게 연결할 수 있다. telnet HTTP 프로토콜과 유사한 구조를 가지고 있기 때문에 HTTP 웹서버의 동작을 체크하는데 유용하게 사용될 수 있다. 브라우저에서 웹 페이지를 호출했을 때 아무런 응답이 없다면 telnet을 통해 서버에서 어떤 정보를 브라우저로 보내주는지 좀 더 구체적으로 확인할 수 있다. telnet은 윈도우에서 비활성화 되어 있기 때문에 제어판에서 직접 활성화시켜줘야 한다


telnet 사용하기


telnet으로 웹사이트를 테스트하기 위해서는 URL 뒤에 사용할 포트 번호를 적어줘야 한다. 명령을 입력하고 엔터키를 누른 후 화면이 전환되고 공백화면이 나오면 정상적으로 웹서버와 연결된 것이다. 여기에 “GET /”명령어를 입력하고 엔터키를 두 번 누르면 웹서버로 http://www.auction.co.kr URL이 호출된 것이다. 웹서버가 정상적으로 동작한다면 위 그림과 같은 HTML을 확인할 수 있다.