[정보처리기사] 실기 기출문제 용어 정리2
Java는 동적 바인딩(dynamic binding)을 사용하여 자식 메서드가 부모를 상속한 후, 부모의 메서드를 오버라이드하면 부모 = 자식 객체 생성 시 자식이 오버라이드한 메서드가 호출됩니다.
이러한 특성 덕분에 객체 지향 프로그래밍에서 다형성을 활용할 수 있습니다.
다형성이란?
Polymorphism
객체 지향 프로그래밍에서 같은 이름의 메서드가 다양한 방식으로 동작할 수 있는 능력
기본적으로 두 가지 주요 형태가 있다.
1. 오버로딩(Overloading)
같은 이름의 메서드를 매개변수의 수나 타입에 따라 다르게 정의하는 것입니다.
예를 들어 print(int a)와 print(String b)와 같이 같은 이름의 메서드가 다른 매개변수를 가질 수 있습니다.
2. 오버라이딩(Overriding)
부모 클래스에서 정의한 메서드를 자식 클래스에서 재정의하는 것입니다.
자식 클래스의 인스턴스를 통해 호출된 메서드는 자식 클래스의 구현을 사용하게 됩니다.
이로 인해 같은 메서드 이름이지만 다른 동작을 할 수 있습니다.
다형성의 장점은 코드의 유연성과 재사용성을 높여주며, 다양한 객체를 동일한 방식으로 처리할 수 있게 해줍니다.
예를 들어 동일한 메서드를 호출하더라도 객체 타입에 따라 다른 구현이 실행되기 때문에, 코드가 더 간결하고 유지보수가 쉬워집니다.
OAuth
사용자가 사용자 이름 및 암호와 같은 자격 증명을 공유하지 않아도 타사 어플 데이터 또는 리소스에 액세스할 수 있도록 권한을 부여할 수 있는 개방형 표준 프로토콜
사용자가 데이터에 대한 제어를 유지하면서 리소스에 대한 액세스 권한을 부여할 수 있는 안전하고 표준화된 방법을 제공하며,
액세스 토큰을 사용하여 타사 어플리케이션에 리소스에 대한 액세스 권한을 부여하는 메커니즘을 사용자에게 제공하는 방식으로 작동한다.
사용자가 응용 프로그램에 대한 액세스 권한을 부여하면 응용 프로그램은 사용자를 대신해 사용자의 리소스 또는 데이터에 액세스하는 데 사용할 수 있는 액세스 토큰을 받는다.
사용자가 자신의 자원을 안전하게 다른 서비스와 공유할 수 있도록 해주는 인증 프로토콜
사용자가 네이버에서 인스타그램 정보를 공유하고 싶을 때 OAuth를 통해 안전하게 인증할 수 있다.
사용자
서비스 제공자 - 서버
클라이언트 - 사용자가 인증을 통해 접근하려고 하는 앱의 서비스
인증 서버 - 사용자의 인증을 담당하는 서버, 서비스 제공자와 동일한 곳에 위치
비밀번호를 공유하지 않고도 안전하게 자원에 접근할 수 있다.
다양한 클라이언트와 서비스간에 인증을 쉽게처리할 수 있다.
사용자는 언제든지 특정 클라이언트의 접근 권한을 철회할 수 있다.
ATM
자료를 일정한 크기로 정하여 순서대로 전송하는 자료의 전송 방식
셀이라 부르는 고정 길이 패킷을 이용하여 처리가 단순하고 고속망에 적합하며, 연속적으로 셀을 보낼 때 다중화를 하지 않고 셀 단위로 동기가 이루어지지만 경우에 따라 동기식 시간 분할 다중화를 사용하기도 한다.
가상 채널 기반의 연결 지향 서비스로 셀이라 부르는 고정 길이 패킷을 사용하며 통계적 다중화 방식을 이용한다.
NAT
Network Address Translation
IP 주소의 절약과 보안을 위해 사용된다.
IPv4 주소는 한정적, NAT를 사용하면 여러 장치가 하나의 공인 IP주소를 공유할 수 있어, 공인 IP주소를 효과적으로 활용할 수 있다.
보안성 향상
NAT는 내부 네트워크 IP주소를 외부에 노출하지 않기 때문에 외부 공격으로부터 보호할 수 있다.
내부 장치의 주소가 숨겨져 있어 공격자 접근이 어렵다.
NAT사용시 네트워크 구조를 쉽게 변경가능하다
사설 IP 주소 체계를 변경해도 공인 IP 주소에 영향을 미치지 않아 새 장치 추가, 네트워크 재구성이 간편하다
가정에서 여러 장치(스마트폰, 노트북, 태블릿 등) 인터넷에 연결될 때, 집에 있는 라우터는 하나의 공인 IP주소를 가지고 있다.
이 라우터는 각 장치에 사설 IP주소를 할당하고, NAT를 통해 외부와 통신한다. 예를 들어 집안 모든 기기가 192.168.1.x 형태의 사설 IP주소를 가지면서도, 인터넷에서는 같은 공인 IP (예) 203.0.113.5)로 보인다.
작은 사무실에서 여러 컴퓨터가 인터넷을 사용할 때, NAT를 통해 한 대의 공인 IP주소로 모든 컴퓨터가 인터넷에 접근할 수 있다.
이 경우 NAT는 각 컴퓨터의 요청을 공인 IP로 변환하고, 응답을 해당 컴퓨터로 다시 보내는 역할을 한다.
static을 활용하면 메모리에 할당되지 않는다.
정적 메서드는 클래스 자체에 속한다.
클래스가 메모리에 로드될 때 생성되며 인스턴스가 없어도 호출할 수 있다.
정적 메서드는 특정 인스턴스와 연결되지 않기 때문에 어떤 객체의 상대에 접근할 수 없다.
템퍼프루핑
소프트웨어가 불법으로 변조된 경우, 해당 소프트웨어가 정상적으로 실행되지 않게 하는 기법
소프트웨어 변조 공격을 방어하기 위해 프로그램에 변조검증코드를 삽입하는 방법도 있다.
변조검증코드의 용도는 프로그램이 변조되었는지 탐지하고 변조가 탐지되면 프로그램이 실행되지 않게 하는 것이다.
struct 구조체
c언어에서 -> 연산자는 구조체 포인터를 통해 구조체의 멤버에 접근할 때 사용된다.
이는 구조체의 포인터를 사용할 때, 포인터가 가리키는 구조체의 필드에 직접 접근할 수 있도록 해준다.
C언어에서 여러 개의 서로 다른 데이터 타입을 하나의 단위로 묶어 관리할 수 있게 해주는 사용자 정의 데이터 타입
구조체를 사용하면 관련된 데이터를 하나의 이름으로 묶어 다룰 수 있어 코드의 가독성과 유지보수성을 높일 수 있다.
패키지 다이어그램은 UML(통합 모델링 언어)에서 사용되는 구조적 다이어그램 중 하나로, 시스템의 패키지 구조와 그 패키지 간의 관계를 시각적으로 표현한다.
SSH
서버를 만들 때 주는 파일 SSH
AWS 같은 클라우드 서비스에서 서버를 생성해보면, 인증키나 키 페어라는 것을 생성하는 과정을 거치게 된다.
생성하면 pem이라는 낯선 형식의 파일을 다운로드 받게 되는데 이 파일은 우리가 생성한 서버에 원격으로 접속할 때, 외부의 보안 위협으로부터 보호해주는 SSH라는 보안 방식이 적용된 서버에서 반드시 필요한 파일이다.
그만큼 SSH는 서버 보안에 있어서 가장 대표적이고 유용한 수단이기 때문에 많은 클라우드 서비스에서 제공하고 있는 것이다.
SSH란 Secure Shell의 줄임말로 원격 호스트에 접속하기 위해 사용되는 보안 프로토콜이다.
기존 원격 접속은 텔넷이라는 방식을 사용했는데 암호화를 제공하지 않아 보안상 취약하다는 단점이 있었다.
원격 접속시 필수로 SSH 보안 과정을 거치는 것이다.
SSH를 구성하는 가장 핵심적인 키워드는 키!
사용자와 서버는 각각의 키를 보유하고 있으며 키를 이용해 연결 상대를 인증하고 안전하게 데이터를 주고 받게 됩니다.
대칭키와 비대칭키 방식이 있다
키페어는 공개키와 개인 키의 두 가지로 이루어진 한 쌍을 뜻하며 보통 공개키는 .pub, 개인 키는 .pem 파일 형식을 띄고 있다.
추상 팩토리 패턴
Abstract Factory Pattern
연관성이 있는 객체 군이 여러 개 있을 경우 이들을 묶어 추상화하고, 어떤 구체적인 상황이 주어지면 팩토리 객체에서 집합으로 묶은 객체 군을 구현화 하는 생성 패턴이다.
클라이언트에서 특정 객체를 사용할 때 팩토리 클래스만을 참조하여 특정 객체에 대한 구현부를 감추어 역할고 ㅏ구현을 분리시킬 수 있다.