A. IP는 인터넷에 연결되어있는 모든 장치를 식별할 수 있도록 부여되는 고유의 주소이며 이에 문자로 주소를 부여해 이름을 단 것을 도메인이라한다.
* DNS(Domain Name System)이란 아이피 주소와 도메인 사이 변환을 담당하는 시스템
Q. IP / MAC
A. ARP 프로토콜을 통해 IP → MAC, RARP 프로토콜을 통해 IP → MAC 주소 변환한다.
IP 네트워크에 연결에 할당된 주소
MAC 통신기기 하드웨어 자체에 부여된 고유한 식별번호, 컴퓨터의 물리적 주소
IP는 수신, 발신의 경로를 찾기 위한 네트워크 주소, MAC 주소는 해당 기기의 물리적인(하드웨어) 주소이다. IP 주소는 통신 과정에서 결국 MAC 주소로 변경된다.
Q. 이더넷
A. 인터넷에서 근거리 통신망 또는 LAN에서 컴퓨터를 연결하는 방식, 네트워크를 구성하는 방식 중 하나며 각 기기들의 고유한 주소(MAC 주소)를 가지고 호스트간의 데이터를 주고 받는 방식이다.
Q. 네트워크 7계층(OSI 7계층)
A.
물리 계층 기계적 특성을 이용해 데이터를 전송하며 비트를 이용한다. 데이터 전송 단위 - 비트
데이터 링크 계층 물리 계층에서 송수신되는 정보의 오류와 흐름을 관리하여 안전한 정보 전달을 수행할 수 있도록 한다. 네트워크 기기들 사이 데이터를 전송하는 역할을 한다. 데이터 전송 단위 - 프레임
네트워크 계층 IP를 부여하고 경로를 선택해 경로에 따라 패킷을 전달한다. 데이터 전송 단위 - 패킷
전송 계층 양 끝단의 사용자들이 신뢰성있는 데이터를 주고받을 수 있도록 한다. 오류 검출 및 복구, 흐름 제어와 중복 검사 등을 수행한다. 데이터 전송 단위 - 세그먼트
세션 계층 포트 번호를 기반으로 TCP/IP 세션을 만들고 없애는 책임을 진다.
표현 계층 사용자의 명령어를 완성하여 결과를 표현하고 압축, 암호화한다.
응용 계층 UI를 제공한다.
Q. TCP/IP 4계층
A.
네트워크 인터페이스 계층 (1) 물리 계층 - (2) 데이터 링크 계층 물리적인 MAC 주소를 이용하고 물리적으로 데이터가 네트워크를 통해 어떻게 전송되는지 정의한다.
인터넷 계층 (3) 네트워크 계층 통신 노드 간 IP패킷 전송과 라우팅을 담당한다.
전송 계층 (4) 전송 계층 통신간 노드 연결을 제어하고 신뢰성있는 데이터 전송을 담당한다.
응용계층 (5) 세션 계층 - (6) 표현 계층 - (7) 응용 계층 사용자와 가장 가까운 계층으로 애플리케이션과 인터페이스할 수 있도록 해준다. 사용자 UI를 담당한다.
Q. TCP / UDP 차이점
A.
* 패킷이란?
인터넷 내에서 데이터를 보내기 위한 라우팅을 효율적으로 하기 위해 데이터를 여러 개의 조각으로 나누어 전송한다.
TCP(Transmission Control Protocol) 연결 지향적 프로토콜로 클라이언트와 서버가 연결된 상태에서 데이터를 주고 받는 프로토콜이다. 호스트간 신뢰성 있는 데이터 전달과 흐름을 제어하며 인터넷상에서 데이터를 메시지 형태로 보내기 위해 IP와 함께 사용하는 프로토콜이다. 일반적으로 TCP와 IP를 함께 사용하는데 IP가 데이터의 운송을 처리한다면 TCP는 패킷을 추적하고 관리한다.
연결형 서비스로 가상 회선 방식을 제공한다. (발신지와 수신지를 1:1 연결하여 패킷을 전송하기 위해 논리적 경로를 배정한다) 3-way handshaking을 통해 연결을 설정하고, 4-way handshaking을 통해 연결을 해제한다.
데이터의 경계를 구분하지 않는다.
스트림 전송으로 전송 데이터의 크기가 무제한이다.
데이터의 전송 순서를 보장한다. 패킷에 순서를 부여하여 재조립한다.
신뢰성있는 데이터를 전송한다.
데이터 흐름제어나 혼잡 제어 기능도 제공하여 UDP보다 속도가 느리다.
* 3-way handshaking 클라이언트/서버간 연결을 위해 3번의 요청과 응답을 거친다. 1) 클라이언트에서 서버로 연결 요청을 하기 위해 SYN 데이터를 보낸다. 2) 서버에서 해당 포트는 SYN 데이터를 받고 LISTEN -> SYN_RCV 상태로 변경된다. 3) 요청을 정상적으로 받았다는 대답 ACK와 클라이언트에게도 연결 요청 SYN을 같이 보낸다. 4) 클라이언트는 이를 받아 ESTABLISHED로 상태를 변경하고 서버에 ACK을 전송한다. 5) 서버도 ESTABLISHED로 변경된다
UDP(User Datagram Protocol) 비연결형 서비스를 지원하는 전송계층 프로토콜로 인터넷에서 서로 정보를 주고받을 때 정보를 보낸다는 신호나 받는다는 신호 절차를 거치지 않고 보내는 쪽에서 일방적으로 데이터를 전달하는 통신 프로토콜이다. 데이터를 데이터그램 단위로 처리한다.(* 데이터그램은 독립적인 관계를 지니는 패킷이라는 뜻이다.)
비연결 서비스로 데이터그램 방식을 제공한다. 각각의 패킷은 서로 다른 경로로 전송되고 독립적인 관계를 지니게 된다. 연결이 없기 때문에 연결을 설정하고 해제하는 과정이 존재하지 않는다.
데이터를 주고 받을 때 정보를 보내거나 받는다는 신호절차를 거치지 않는다.
신뢰성 없는 데이터를 전송한다.
데이터의 경계를 구분한다.
TCP보다 전송속도가 빠르다.
소켓 대신 IP 기반으로 데이터를 전송한다.
서버와 클라이언트는 1:1, 1:N, N:M 등으로 연결될 수 있다.
흐름 제어가 없어 패킷이 제대로 전송되었는지나 오류를 확인할 수 없다. 중간에 패킷이 유실이나 변조가 되어도 재전송을 하지 않는다.
* 흐름제어
데이터를 송신하는 곳과 수신하는 곳의 데이터 처리 속도를 조절하여 수신자의 버퍼 오버플로우를 방지하는 것이다.
* 혼잡제어
네트워크 내의 패킷 수가 넘치게 증가하지 않도록 방지하는 것이다. 정보의 소통량이 과다한 경우 패킷을 조금만 전송하여 혼잡 붕괴 현상이 일어나는 것을 막는다.
[차이점] TCP는 속도 성능보다 신뢰성이 중요할 때 사용되는 프로토콜이며 UDP는 TCP에 비해 속도가 빠르고 네트워크 부하가 적다는 장점이 있는 반면 데이터의 신뢰성과 전송 순서를 보장하지 않는다.
따라서 UDP는 신뢰성보다 연속성이 중요한 실시간 서비스(스트리밍)에 자주 사용된다.
Q. 로드밸런싱(Load Balancing, 부하분산)
A. 서버에 가해지는 부하를 분산하는 장치 또는 기술이다. 클라이언트와 서버 풀(분산 네트워크를 구성하는 서버들의 그룹) 사이 위치하며 한 대의 서버로 부하가 집중되지 않도록 트래픽을 관리해 각각의 서버가 최적의 퍼포먼스를 보일 수 있도록 한다.
로드밸런싱은 여러 대의 서버를 두고 서비스를 제공할 때 분산 처리 시스템에 필요한 기술이다.
사업 규모가 작고 클라이언트의 요청 수가 적다면 서버 한 대로 요청 처리가 가능하나 트래픽이 증가하면 서버를 증설해야한다.
트래픽에 대처할 수 있는 방안은 크게 두 가지 이다.
scale-up 서버 자체의 성능을 확장하는 것이다.
scale-out 기존 서버와 동일하거나 낮은 성능의 서버를 두 대 이상 증설하여 운영하는 것이다. 이 경우 여러 대의 서버로 트래픽을 균등하게 분산해주는 로드밸런싱이 필요하다.
다양한 로드밸런싱 알고리즘이 있다.
예) 라운드로빈 방식, 가중 라운드로빈 방식, IP 해시 방식, 최소 연결 방식, 최소 응답시간 방식 등
Q. 멀티플렉싱
A. 하나의 통신 채널을 통해 둘 이상의 데이터(시그널)를 전송하는데 사용되는 기술이다. 즉 하나의 서버에 둘 이상의 클라이언트를 처리하는 것이다.
각각의 스레드나 프로세스를 생성하는 것이 아니라 하나의 스레드에서 다수 클라이언트에 연결된 소켓을 관리하고 이벤트를 처리한다. 시그널을 통해 3개의 클라이언트와 모두 데이터를 주고 받는다.
* 멀티 프로세스 서버의 경우 클라이언트마다 자식 프로세스를 생성하여 요청 처리를 담당한다.
Q. 교착상태(데드락, Deadlock)이란
A. 두 개 이상의 작업이 서로 상대방의 작업이 끝나기만을 기다리고있어 결과적으로 아무것도 완료되지 못하는 상태를 가리킨다. 둘 이상의 프로세스가 각각 자원을 점유한 상태에서 서로 상대방의 자원을 대기하고 있어 아무것도 완료되지 못하고 계속 기다리게 된다.
교착상태가 발생하기 위해서는 다음 네 조건이 모두 충족되어야 한다.
상호배제 자원은 한번에 한 프로세스만이 사용할 수 있어야 한다.
점유대기 최소한 하나의 자원을 점유하고 있으면서 다른 프로세스에 할당되어 사용하고 있는 자원을 추가로 점유하기 위해 대기하는 프로세스가 있어야 한다.
비선점 다른 프로세스에 할당된 자원은 사용이 끝날 때까지 강제로 빼앗을 수 없어야 한다.
순환대기(환형대기) 공유자원과 공유자원을 사용하기위해 대기하는 프로세스들이 원형으로 구성되어 있다. 자신에게 할당된 자원을 점유하면서 앞이나 뒤의 프로세스의 자원을 요구해야 한다.
Q. 데드락을 발견하는 방법과 발생하지 않도록 하는 코딩 방법
A. 데드락 해결 방법은 크게 3가지로 분류할 수 있다.
예방 데드락 발생 조건 중 하나라도 제거함으로써 데드락을 예방한다.
상호배제 부정: 한 번에 여러 개의 프로세스가 공유 자원을 사용할 수 있도록 한다.
점유대기 부정: 프로세스가 실행되기 전 필요한 모든 자원을 할당해 대기를 없애거나 자원이 점유되지 않은 상태에서만 자원을 요구하도록 한다.
비선점 부정: 자원을 점유하고 있는 프로세스가 다른 자원을 요구할 때 점유하고 있는 자원을 반납하고 요구한 자원을 사용하기 위해 기다리게 한다.
순환대기 부정: 자원에 고유한 번호를 할당하고 번호 순서대로 자원을 요구하도록 한다.
회피
탐지
회복
Q. 메모리 단편화
A. RAM에서 메모리 공간이 작은 조각으로 나뉘어져 사용 가능한 메모리가 충분히 존재하지만 할당(사용)이 불가능한 상태를 의미한다.
내부 단편화 메모리 할당 시 프로세스가 필요한 양보다 더 큰 메모리가 할당되어 프로세스에서 사용하는 메모리 공간이 낭비되는 상황이다.
외부 단편화 메모리가 할당되고 해제되는 작업이 반복될 때 작은 메모리 조각이 중간중간 존재하게 된다. 이렇게 생긴 메모리가 많이 존재해서 총 메모리 공간은 작업 수행에 충분하지만 실제로 할당할 수 없는 상태이다.
댓글 영역