1. DDD(Domain-Driven Design)에 대해 설명 해 주세요.
먼저 도메인이란 사전적 의미는 "정보와 활동의 영역"을 말하며, 흔히 프로그래머들에게는 어플리케이션 내의 로직들이 관여하는 정보의 활동의 영역이라고 받아들여진다.
DDD(도메인 주도 디자인)이란 개발을 함에 있어 위에서 설명한 도메인이 중심이 되는 개발 방식을 말하며, 그 목적은 소프트웨어의 연관된 부분들을 연결하여 계속 해서 진화하는 새로운 모델을 만들어 나가 복잡한 어플리케이션을 만드는 것을 쉽게 해 주는 것에 있다.
DDD의 핵심적인 목표는 Loose Coupling, High Cohesion 으로 각 도메인이 연결성이 적고 높은 정도로 연관되어 보다 가벼운 설계를 위해 탄생하였다.
DDD의 세가지 주요 원리로는 핵심 도메인과 그 기능에 집중하는 것과, 도메인의 모델의 정교하게 구축하는 것, 어플리케이션 모델을 발전시키고 새롭게 생기는 도메인 관련 이슈를 해결하기 위해 도메인 전문가와 끊임없이 협력하는 것 이다.
2. OSI 7계층에 대해 설명 해 주세요.
OSI 7계층은 하나의 네트워크 통신 모델로 네트워크에서 통신이 일어나는 과정을 7단계로 나눈 것을 말한다.
7단계로 나눈 이유는 통신이 일어나는 과정을 단계별로 파악할 수 있기 때문이다.
흐름을 한 눈에 알아보기 쉽고 사람들이 이해하기 쉽다.
또한, 7단계 중 특정한 곳에 이상이 생기면 다른 단계의 장비 SW를 건들이지 않고도 이상이 생긴 단계만 고칠 수 있다.
7계층의 종류로는 물리 계층, 데이터링크 계층, 네트워크 계층, 전송 계층, 세션 계층, 표현 계층, 응용 계층이 있다.
각각의 계층에서 하는 일을 간단하게 설명해보면,
1. 물리 계층은 실제 장치를 연결하는 데 필요한 전기적, 물리적 세부 사항을 정의한다.
2. 데이터 링크 계층은 MAC 주소를 통해 통신하며 안정적인 정보 전달을 위해 CRC 기반의 오류제어와 흐름제어가 추가되었다.
3. 네트워크 계층은 데이터를 목적지까지 안전하고 빠르게 전달하기 위해 IP를 사용한 라우팅, 흐름 제어, 단편화, 오류 제어 등을 수행한다.
4. 전송 계층은 신뢰성 있는 데이터를 주고받게 해주며 시퀀스 넘버 기반의 오류 제어방식을 사용한다.
5. 세션 계층은 통신 경로 확립이나 단절, 전달 방식을 정한다.(TCP/IP 세션을 만들고 없애는 책임을 가진다.)
6. 표현 계층은 데이터에 대한 동일한 형식을 제공하고 데이터 압축과 암호화 기능을 수행한다.
7. 응용 계층은 사용자나 응용 프로그램 사이에 데이터 교환을 가능하게 한다.(HTTP, FTP 등)
3. TCP/IP 프로토콜에 대해 설명 해 주세요.
TCP/IP 또는 전송 제어 프로토콜/인터넷 프로토콜은 인터넷상의 네트워크 장치를 상호 연결하는 데 사용되는
통신 프로토콜 모음입니다. TCP/IP는 사설 컴퓨터 네트워크(인트라넷 또는 엑스트라넷)에서 통신 프로토콜로도 사용될 수 있다.
규칙과 절차의 집합인 전체 인터넷 프로토콜 스위트(Internet Protocol suit)를 일반적으로 TCP/IP라고 부르지만,
다른 것들은 집합에 포함되어 있다. TCP/IP 프로토콜 제품군은 인터넷 애플리케이션과 라우팅/스위치 패브릭 사이의
추상화 계층으로 기능한다.
TCP/IP는 패킷, 주소 지정, 전송, 라우팅 및 수신 방법을 식별하는 엔드투엔드 통신을 제공하여
인터넷을 통해 데이터를 교환하는 방법을 명시한다. TCP/IP는 중앙 관리를 거의 필요로 하지 않으며,
네트워크상의 어떤 기기의 고장으로부터 자동적으로 복구할 수 있는 기능으로 네트워크를 신뢰성 있게 만들도록 설계되어 있다.
인터넷 프로토콜 스위트의 두 주요 프로토콜은 특정 기능을 제공한다.
TCP는 애플리케이션이 네트워크를 통해 통신 채널을 만드는 방법을 정의한다.
또한 메시지가 인터넷을 통해 전송되고 목적지 주소에서 올바른 순서로 재조립되기 전에 메시지를 더 작은 패킷으로
조립하는 방법을 관리한다.
IP는 각 패킷을 주소 지정하고 라우팅하여 올바른 목적지에 도달하도록 하는 방법을 정의한다.
네트워크의 각 게이트웨이 시스템은 이 IP 주소를 확인하여 메시지를 전달할 위치를 결정한다.
서브넷 마스크는 컴퓨터 또는 다른 네트워크 장치에 네트워크를 나타내는 데 사용되는 IP 주소의 부분과
네트워크의 호스트(다른 컴퓨터)를 나타내는 데 사용되는 부분을 알려주는 것이다.