자료구조
자료구조는 데이터를 저장하고 관리하는 방식으로, 다양한 종류가 있다. 대표적인 자료구조에는 배열, 연결 리스트, 스택, 큐, 트리, 그래프, 해시 테이블 등이 있다.
선형구조 - 자료들 간에 1:1 관계
- 배열 (Array):
- 고정된 크기의 연속적인 메모리 공간에 데이터를 저장한다.
- 인덱스를 통해 접근이 가능하며, 조회 속도가 빠르다.
- 삽입 및 삭제가 비효율적일 수 있다.
- 연결 리스트 (Linked List):
- 노드들이 포인터로 연결된 형태로 데이터를 저장한다.
- 동적 크기 조절이 가능하며, 삽입 및 삭제가 효율적이다.
- 인덱스 접근이 불가능하며, 순차 탐색이 필요하다.
- 스택 (Stack):
- LIFO(Last In, First Out) 방식으로 데이터를 저장하고 관리한다.
- 데이터의 삽입과 삭제가 한쪽 끝에서 이루어진다.
- 주로 함수 호출과 같은 작업에서 사용된다.
- 큐 (Queue):
- FIFO(First In, First Out) 방식으로 데이터를 저장하고 관리한다.
- 데이터의 삽입은 한쪽 끝에서, 삭제는 반대쪽 끝에서 이루어진다.
- 주로 작업 스케줄링, 버퍼링 등에 사용된다.
비선형구조 - 자료들 간에 1:N 관계
- 트리 (Tree):
- 계층 구조를 가진 자료구조로, 노드와 엣지로 구성된다.
- 루트 노드에서 시작하여 여러 자식 노드를 가지며, 이진 트리, AVL 트리, B-트리 등이 있다.
- 주로 데이터의 계층적 구조를 표현하는 데 사용된다.
- 그래프 (Graph):
- 노드와 노드 사이의 연결 관계를 나타내는 자료구조이다.
- 방향성에 따라 유향 그래프와 무향 그래프로 나뉜다.
- 네트워크 구조, 경로 찾기 등에 사용된다.
네트워크의 기본구조 설명
네트워크는 두 개 이상의 컴퓨터나 장치들이 데이터를 주고받기 위해 연결된 구조이다. 네트워크는 크게 다음과 같은 구성 요소들로 이루어진다:
- 호스트 (Host):
- 네트워크에 연결된 컴퓨터나 장치를 의미한다. 예: 컴퓨터, 서버, 스마트폰 등.
- 네트워크 장치 (Network Device):
- 데이터를 전송하고 제어하는 데 사용되는 장치들이다. 예: 라우터, 스위치, 허브 등.
- 전송 매체 (Transmission Medium):
- 데이터를 전달하는 물리적 매체이다. 예: 유선 케이블 (이더넷), 무선 신호 (Wi-Fi) 등.
- 프로토콜 (Protocol):
- 네트워크에서 데이터를 전송하기 위한 규칙과 절차를 정의하는 표준이다. 예: TCP/IP, HTTP, FTP 등.
네트워크의 기본 구조는 LAN (Local Area Network)과 WAN (Wide Area Network)으로 나뉜다. LAN은 근거리 네트워크로, 동일한 건물이나 캠퍼스 내에서 사용되며, WAN은 장거리 네트워크로, 도시, 국가, 대륙 간의 연결을 의미한다.
OSI 7계층 설명 (계층별)
OSI (Open Systems Interconnection) 7계층 모델은 네트워크 통신을 계층별로 나눈 모델로, 각 계층은 특정 기능을 담당하며 데이터를 전달한다.
- 물리 계층 (Physical Layer):
- 전기적, 기계적, 기능적 특성을 정의하며, 실제 물리적 연결을 담당한다.
- 예: 케이블, 핀, 전압 등.
- 데이터 링크 계층 (Data Link Layer):
- 물리 계층을 통해 전송되는 데이터의 오류를 검출하고 수정하며, 프레임 단위로 데이터 전송을 관리한다.
- 예: 스위치, 브리지.
- 네트워크 계층 (Network Layer):
- 데이터 패킷의 논리적 주소 지정과 경로 설정을 담당하며, 목적지까지의 경로를 결정한다.
- 예: 라우터, IP.
- 전송 계층 (Transport Layer):
- 데이터 전송의 신뢰성을 보장하며, 데이터 흐름 제어와 오류 검출, 수정 기능을 제공한다.
- 예: TCP, UDP.
- 세션 계층 (Session Layer):
- 응용 프로그램 간의 세션을 설정, 관리, 종료하는 역할을 담당한다.
- 예: NetBIOS, RPC.
- 표현 계층 (Presentation Layer):
- 데이터의 형식 변환, 암호화, 압축 등의 작업을 수행하며, 응용 계층으로 전달될 데이터를 처리한다.
- 예: JPEG, MPEG, SSL/TLS.
- 응용 계층 (Application Layer):
- 사용자와 직접 상호작용하는 계층으로, 응용 프로그램이 네트워크 서비스를 사용할 수 있도록 지원한다.
- 예: HTTP, FTP, SMTP.
TCP / IP 설명
- TCP/IP (Transmission Control Protocol/Internet Protocol)는 인터넷과 같은 네트워크에서 데이터를 전달하기 위한 프로토콜 모음이다.
- TCP (Transmission Control Protocol):
- 연결 지향형 프로토콜로, 데이터의 신뢰성을 보장한다.
- 데이터 전송 전에 연결을 설정하고, 데이터 전송이 완료되면 연결을 종료한다.
- 데이터의 순서 보장, 오류 검출 및 수정 기능을 제공한다.
- IP (Internet Protocol):
- 패킷 단위로 데이터를 전송하며, 데이터의 전달 경로를 결정한다.
- 각 장치에 고유한 IP 주소를 할당하여 데이터를 전송한다.
- 비연결 지향형 프로토콜로, 데이터의 신뢰성을 보장하지 않는다.
HTTP / HTTPS가 무엇인지 알고 차이점을 설명
- HTTP (HyperText Transfer Protocol):
- 웹 브라우저와 웹 서버 간의 데이터를 전송하기 위한 프로토콜이다.
- 주로 웹 페이지를 요청하고 응답받는 데 사용된다.
- 데이터가 암호화되지 않아 보안에 취약하다.
- HTTPS (HyperText Transfer Protocol Secure):
- HTTP에 SSL/TLS 프로토콜을 추가하여 데이터를 암호화하여 전송하는 프로토콜이다.
- 데이터의 기밀성, 무결성, 인증성을 보장한다.
- 주로 금융 거래, 로그인 정보 등 민감한 데이터를 주고받는 데 사용된다.
차이점:
- HTTP는 데이터가 평문으로 전송되며, HTTPS는 데이터가 암호화되어 전송된다.
- HTTPS는 보안 인증서를 사용하여 데이터 전송의 보안을 강화한다.
- HTTPS는 보안 때문에 추가적인 암호화/복호화 작업이 필요하여 HTTP보다 다소 느릴 수 있다.