일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 |
- 김영한
- SDK
- 갤럭시 S24
- 코딩테스트 [ ALL IN ONE ]
- 인터럽트
- Extendable hashing
- CPU 스케줄링
- 네트워크
- 시그널 핸들러
- 시스템프로그래밍
- 개발남노씨
- 백엔드
- 운영체제와 정보기술의 원리
- 프로세스 주소 공간
- 커널 동기화
- 데이터베이스
- 코딩애플
- Git
- 트랜잭션
- BreadcrumbsComputer-Networking_A-Top-Down-Approach
- 쉬운 코드
- SQL
- B tree 데이터삽입
- 운영체제
- concurrency control
- 반효경
- 쉬운코드
- recoverability
- vite
- 온디바이스AI
- Today
- Total
티끌모아 태산
면접 대비(네트워크) 본문
1. OSI 7계층이 무엇이고, 왜 나누는지 설명하시오
OSI 7계층은 네트워크 통신이 이뤄지는 과정을 7단계로 나눈 네트워크 표준 모델이다. 이렇게 나누는 이유는 통신이 일어나는 과정을 단계별로 알 수 있고, 특정한 곳에 이상이 생기면 그 단계만 수정할 수 있기 때문이다.
2. 각 층마다 역할에 대해서 간략하게 설명해 주세요.❗❗
1. 응용(Application): 최종 목적지로, 응용 프로세스와 직접 관계하여 일반적인 응용 서비스를 수행한다. 사용자 인터페이스, 전자우편, 데이터베이스 관리 등의 서비스를 제공한다. (HTTP, FTP, DNS)
2. 표현(Presentation): 데이터 표현에 대한 독립성을 제공하고 암호화 하는 역할을 담당한다. 즉, 파일 인코딩, 명령어를 포장, 압축, 암호화 한다. (JPEG ,MPEG)
3. 세션 (Session): 데이터가 통신하기 위한 논리적 연결을 담당하는 계층. TCP/IP 세션을 만들고 업애는 책임을 지니고 있다. (API, Socket)
4. 전송(Transport): TCP와 UDP 프로토콜을 통해 통신을 활성화 하는 계층. 포트를 열어두고, 프로그램들이 전송을 할 수 있도록 제공해준다. (TCP, UDP, 단위: Segment)
TCP: 신뢰성, 연결지향적
UDP: 비신회성, 비연결성, 실시간
*프로토콜: 데이터를 송수신하기 위해 정한 규칙
5. 네트워크(Network): 패킷를 목적지까지 가장 안전하고 빠르게 전달하는 기능을 담당한다. 라우터를 통해 이동할 경로를 선택하여 IP 주소를 지정하고, 해당 경로에 따라 패킷을 전달해준다. 라우팅, 흐름 제어, 오류 제어, 세그먼테이션 등을 수행한다. (IP, 라우터, 단위: Packet)
*패킷: 네트워크에서 주고받는 데이터를 작게 분할한 단위로 데이터의 송신 주소, 수신 주소 등의 정보가 포함.
*IP 주소: Host에 대한 식별자
6. 데이터 링크: 물리 계층으로 송수신되는 정보를 관리하여 안전하게 전달하는 역할과 에러 검출, 흐름제어를 담당하는 계층. Mac 주소를 통해 통신한다. (장비:브릿지, 스위치 등, 단위: frame)
*MAC 주소: 48비트로 구성된 하드웨어 고유주소
7. 물리: 데이터를 전기 신호로 바꿔주는 계층으로 데이터를 전송하는 역할만 진행한다. (장비: 케이블, 리피터, 허브)
3. TCP/IP 4계층이란 무엇인가?
TCP/IP는 인터넷에서 데이터를 주고받기 위한 네트워크 프로토콜을 의미한다. 그리고 TCP/IP에 맞춰 OSI 7계층을 단순화 한 것이 TCP/IP 4계층이다.
4. TCP란 무엇인가? 그 특징은?
TCP는 전송 계층에 해당하는 네트워크 프로토콜로, 연결형 서비스를 지원하고 데이터의 신뢰성을 보장하는 특징이 있다.
1. 송신부와 수신부의 연결을 확인하는 연결형 서비스
2. 패킷의 전송 순서가 보장된다.
3. 패킷의 수신 여부를 확인한다. (잘 도착했는지, 안했는지)
4. 송신부와 수신부는 1:1 통신을 한다.
5. 데이터 손실없이 정확한 전송을 보장하므로 신뢰성이 높다.
6. 데이터의 송수신 속도가 느리다.
5. ⭐⭐⭐TCP 핸드셰이킹❗
TCP에서는 연결형 서비스를 지원하기 위해 송신부와 수신부를 연결하는 과정을 거친다. 연결을 시작할 때는, 3 - way 핸드셰이킹을, 연결을 종료할 때는 4 - way 핸드셰이킹을 한다.
*SYN(Synchonization, 동기화): 연결을 생성할 때 사용
*ACK(Acknowledgment, 승인): 데이터를 전송하면 수신자가 받았음을 알려 줄 때 사용
[3 way 핸드셰이킹: 연결 성립]
1. 클라이언트가 서버에게 SYN(x) 패킷을 보낸다.
2. 서버가 SYN(x)을 받고, 클라이언트로 패킷을 받았다는 신호인 ACK(x+1)와 SYN(y) 패킷을 함께 보낸다.
3. 클라이언트는 서버의 응답인 ACK(x+1), SYN(y) 패킷을 받고, ACK(y+1)를 서버로 보냄.
이렇게 3번의 통신이 완료되면 연결이 성립된다.

*FIN(Finish, 종료), 연결을 끊을 때 사용
[4 way 핸드셰이킹: 연결 해제]
1. 클라이언트는 서버에게 연결을 종료한다는 FIN 플래그를 보낸다.
2. 서버는 FIN을 받고, 확인했다는 ACK를 클라이언트에게 보낸다. (이때 모든 데이터를 보내기 위해 CLOSE_WAIT 상태가 된다)
3. 데이터를 모두 보냈다면, 연결이 종료되었다는 FIN 플래그를 클라이언트에게 보낸다.
4. 클라이언트는 FIN을 받고, 확인했다는 ACK를 서버에게 보낸다. (아직 서버로부터 받지 못한 데이터가 있을 수 있으므로 TIME_WAIT을 통해 기다린다.)
- 서버는 ACK를 받은 이후 소켓을 닫는다. (Closed)
- TIME-WAIT 시간이 끝나면 클라이언트도 닫는다. (Closed)
이렇게 4번의 통신이 완료되면 연결이 해제된다

6. ⭐⭐⭐TCP와 UDP의 특징과 차이점을 설명해 주세요.
TCP는 연결형 서비스로 신뢰성을 보장합니다. 신뢰성 보장을 위해 오류제어, 흐름제어, 혼잡제어를 제공합니다. TCP를 사용하는 대표적인 프로토콜로 HTTP가 있습니다. 반면에 UDP는 비연결형 서비스로 비신뢰적이지만 속도가 빨라서 실시간 스트리밍에 사용됩니다.
7. IP주소란 무엇이고 IPv4와 IPv6를 각각 설명해 주세요.❗❗
IP주소란 인터넷 프로토콜 주소로 인터넷에 연결된 모든 컴퓨터 자원을 구분하기 위한 고유 주소다. IPv4는 총 32비트로 4개의 8비트로 구성됩니다. 반면에 IPv6는 IPv4의 주소부족문제를 해결하기 위해 만들어 졌으며 총 128비트로 구성되어 있습니다.
그리고 IPv6가 IPv4에 비해 패킷을 단편화 하지 않으면서 보다 효율적인 라우팅이 가능하다.
8. Socket이란 무엇인가?❗
프로세스가 네트워크를 통해 데이터를 주고 받기 위해 필요한 통로다. 실제 통신은 Socket이 하고, Application 자체는 네트워크와 아무런 정보를 주고받지 않는다.
9. 서버-클라이언트 구조란 무엇인가?
서버-클라이언트란 데이터를 저장하고 관리하는 서버 부분과 해당 서버에 접속하여 데이터를 열람하는 클라이언트 부분으로 구성된 네트워크 구조. 즉, 클라이언트는 서비스를 사용하는 사용자 또는 컴퓨터를 의미하고, 서버는 서비스를 제공해주는 컴퓨터를 의미한다.
10. TCP의 연결 설정 과정(3단계)과 연결 종료 과정(4단계)이 단계가 차이나는 이유는?
클라이언트가 데이터 전송을 마쳤다고 하더라도, 서버는 아직 보낼 데이터가 남아 있을 수 있기 때문에 FIN에 대한 ACK만 보내고, CLOSE_WAIT 상태로 있다가 데이터를 모두 전송한 후에 자신도 FIN 메시지를 보내기 보내고 이에 대한 ACK를 받기 때문이다.
11. ⭐⭐⭐TCP의 데이터 신뢰성을 보장하기 위한 제어 방법 중 '흐름 제어'를 설명해 주세요.❗
흐름 제어(flow control)는 데이터 송신부와 수신부에서 데이터 처리 속도의 차이 때문에 생기는 데이터 손실을 방지하는 방법으로 수신자가 패킷을 지나치게 많이 받지 않도록 조절하고 수신자가 송신자에게 현재 자신의 상태를 피드백 한다. 대표적인 방법으로
1. Stop and Wait: 매번 전송한 패킷에 대한 확인 응답을 받아야만 그 다음 패킷을 전송하는 방법이다.
2. Sliding Window: 송신부에서 데이터의 수신 여부(ACK)를 확인하지 않고 수신자에서 설정한 윈도우 크기만큼 데이터를 연속적으로 보낼 수 있게 해서 데이터 흐름을 동적으로 제어하는 방식.
동작방식은 먼저 윈도우에 포함되는 모든 패킷을 전송하고, 그 패킷들의 전달이 확인되는 대로 이 윈도우를 옆으로 옮김으로써 그 다음 패킷들을 전송한다.

*Window: TCP/IP를 사용하는 모든 호스트들은 송신하기 위한 것과 수신하기 위한 2개의 Window를 가지고 있다. 호스트들은 실제 데이터를 보내기 전에 '3 way handshaking'을 통해 수신 호스트의 receive window size에 자신의 send window size를 맞추게 된다.
12.⭐⭐⭐TCP의 데이터 신뢰성을 보장하기 위한 제어 방법 중 '혼잡 제어' 를 설명해 주세요.❗❗
혼잡 제어(congestion control)는 송신부의 데이터 전달 속도와 네트워크 속도 차이로 데이터 손실이 발생하는 것을 방지하기 위한 방법이다.
*혼잡: 네트워크에 패킷 수가 과도하게 증가하는 증상
대표적인 방식으로
1. AIMD: 처음에 패킷을 하나씩 보내고 이것이 문제없이 도착하면 window(단위 시간 내에 보내는 패킷의 수)를 1씩 증가시켜가며 전송하는 방법이다. 만약 패킷 전송에 실패하거나 일정 시간을 넘으면 패킷의 보내는 속도를 절반으로 줄인다. 문제점은 네트워크가 혼잡해지는 상황을 미리 감지하지 못하고, 혼잡해 지고 난 후에서 대역폭을 줄이는 방식이다.
2. 느린 시작(Slow start): AIMD와 마찬가지로 패킷을 하나씩 보내면서 시작하고, 패킷이 문제없이 도착하면 각각의 ACK 패킷마다 window size를 1씩 늘려, 한 주기가 지나면 window size가 2배로 된다. 따라서 전송 속도는 AIMD에 반해 지수 함수 꼴로 증가한다. 그래서 전송 가능한 패킷 수를 지수 함수 형태로 늘리는 점은 AIMD 방식에서 초기에 전송 가능한 패킷 수가 적다는 단점을 보완한다. 대신에 혼잡 현상이 발생하면 window size를 1로 떨어뜨린다.
3. 빠른 재전송(Fast Retransmit)
중복된 ACK를 3개 받으면 재전송을 하게 된다. 중복된 ACK란 패킷이 순서대로 도착하지 않아서 받아야할 차례의 패킷을 ACK메시지와 함께 요청하는 것이다. 즉, 중복된 ACK가 3번 발생하면 혼잡이 발생했다고 판단해 윈도우 크기를 조정하는 방식이다.
4. 빠른 회복: 혼잡 상태가 되면 윈도우 크기를 1로 줄이지 않고 반으로 줄이고 선형적으로 증가시키는 방법이다. 이 방식은 혼잡 상황을 한번 겪고 나서부터는 순수한 AIMD 방식으로 동작하게 된다.
13. ⭐UDP란 무엇이고, 특징을 설명해 주세요.
TCP와 마찬가지로 전송 계층에 해당하는 네트워크 프로토콜이다. 이는 송신부와 수신부간의 연결을 지원하지 않고 데이터그램 형태의 통신을 지원한다. 신뢰성이 낮지만 속도가 빠르다는 장점이 있다.
1. 송신부와 수신부가 연결이 보장되지 않는 비연결성 서비스다.
2. 패킷이 서로 다른 회선으로 교환될 수 있는 데이터그램 패킷 교환 방식이다.
3. 송신부에서 전달한 패킷 순서와 수신부에서 받은 패킷 순서가 다를 수 있다.
4. 패킷의 수신 여부를 확인하지 않는다.
5. 1:1 통신, 1:N 통신, N:N 통신 모두 가능하다.
6. 데이터의 신뢰성이 낮다.
7. 데이터의 전송 속도가 빠르다. (데이터의 신속성), 주로 실시간 방송과 온라인 게임에 사용. 네트워크 환경이 안좋을때, 끊기는 현상을 생각하면 된다.
14. ⭐UDP의 오류 검출에 대해서 설명해 주세요.❗
UDP에는 최소한의 신뢰성을 보장하기 위해 체크섬(checksum)방식으로 오류를 검출할 수 있다. 체크섬은 데이터의 무결성을 확인할 수 있게 UDP 헤더, IP 헤더, 데이터 등의 값을 더한 뒤 보수를 취해 구하는 값이다. 송신부가 구한 체크섬을 UDP 헤더에 포함해 수신부로 보내면, 수신부에서 체크섬을 이용해 데이터의 무결성을 확인한다. 하지만 체크섬을 이용하는 방식은 선택 사항이고 체크섬을 이용해도 잘못된 데이터가 전송될 수 있다는 점을 고려해야 한다.
15. ⭐⭐⭐HTTP란 무엇이고 특징에 대해서 설명해 주세요.❗❗
HTTP(HyperText Transfer Protocol)는 인터넷 상에서 클라이언트와 서버가 데이터를 주고 받기 위한 프로토콜.
1. 비연결성: 클라이언트에서 요청을 보낸 후 서버로부터 응답을 받으면 연결을 끊는다.
서버에서 응답을 받고 나서도 연결을 유지하면 그만큼 자원을 사용하게 된다. 따라서 비연결성은 자원을 아낄 수 있다. 하지만 연결을 유지하지 않기 때문에 서버가 클라이언트를 기억할 수 없다. 그래서 동일한 클라이언트로부터 연속적으로 요청이 들어오면 연결과 해지 과정을 반복하게 되어 자원이 낭비된다. 이러한 단점을 보완하기 위해 일정 시간동안 연결을 유지할 수 있도록 HTTP Keep Alive를 활용한다.
2. 무상태(stateless): 서버에서 클라이언트의 상태를 저장하지 않는 것이다. 따라서 클라이언트는 요청에 필요한 데이터를 모두 갖고 있어야 한다. 또한 서버가 클라이언트로부터 받은 요청 사항을 모두 저장해야 한다.
비열결성과 무상태의 단점을 보완한 대표적인 방법이 쿠키(cookie)와 세션(session)이 있다. 즉, 쿠기와 세션으로 정보를 저장하여 해결한다.
*쿠기: 클라이언트의 로컬 웹 브라우저에 저장하는 데이터 파일. ex) 웹 사이트의 로그인 정보와 온라인 쇼핑몰 장바구니
*세션: 서버에서 클라이언트와의 연결정보를 저장 및 관리한다. 보안 측면에서 쿠키보다 좋지만 접속자가 많은 경우 과부하가 올 수 있다.
무상태의 장점은 서버 확장성이 높다는 점이다. 클라이언트의 요청에 응답하는 서버가 바뀌어도 되기 때문에 서버를 계속 확장해도 된다. 따라서 특정 서버에 문제가 생겨 응답하지 못하는 문제점을 보완할 수 있다.
HTTP는 텍스트 교환이므로, 누군가 네트워크에서 신호를 가로채면 내용이 노출되는 보안 이슈가 존재한다. 이런 보완 문제를 해결해주는 프로토콜이 HTTPS.
16. ⭐⭐⭐HTTPS에 대해서 설명해 주세요❗
HTTPS(HyperText Transfer Protocol Secure)는 보안 계층의 SSL / TLS 프로토콜를 이용해 HTTP의 보안을 강화한 웹 통신 프로토콜이다. 기존의 HTTP는 데이터 암호화를 거치지 않고 전송해서 보안에 취약했다. 그래서 이를 보완한 HTTPS가 등장했다.
HTTP는 원래 TCP와 직접 통신했지만, HTTPS에서 HTTP는 SSL과 통신하고 SSL이 TCP와 통신하게 된다. 그렇기 때문에 SSL을 사용한 HTTPS는 암호화와 증명서, 안전성 보호를 이용할 수 있게 된다.
*SSL (Secure Socket Layer)은 넷스케이프에서 개발한 암호화 프로토콜이다. 당시 몇가지 문제점이 있었는데, 이를 보완해 새로운 암호화 프로토콜인 TLS(Transport Layer Security)를 개발했다. 현재 HTTPS에서 통용되는 방식은 TLS이지만, SSL이라는 명칭이 사라지지 않아서 SSL 또는 SSL/TLS이라고 부른다.
17. ⭐HTTPS의 동작 방식을 간략하게 설명해 주세요.❗
HTTPS는 다음과 같이 동작합니다. 데이터를 송신할 때 응용 계층에서 보완 계층의 SSL/TLS로 데이터를 보내면 데이터를 암호화해 전송 계층으로 전달한다. 그러면 데이터를 수신할 때 전송 계층에서 보낸 데이터를 보안 계층의 SSL/TSL에서 받아 복호화한 후 응용 계층으로 보낸다.
*암호화 하는 방식은 크게 2가지가 존재한다.
1. 대칭 키 암호화 방식: 데이터의 암호화와 복호화에 모두 같은 키인 대칭키를 이용하는 방식이다. 이 방식은 대칭 키가 유출되지 않도록 주의해야 한다.
2. 공개 키 암호화 방식: 데이터의 암호화와 복호화를 다른 키로 하는 방식이다.
19. 도메인과 DNS가 무엇인지 설명해주세요.❗
모든 통신은 IP를 기반으로 연결된다. 도메인이란 IP주소를 사람이 기억하기 쉽게 이름을 부여한 것이다. 이러한 도메인을 IP주소로 변환 시켜주는 것이 DNS다. 왜? 웹 브라우저는 인터넷 자원을 로드하기 위해서는 IP주소가 필요하지 도메인 이름이 필요한 것이 아니기 때문이다.
20. URL과 URI에 대해서 각각 설명해 주세요.❗❗
URI(Uniform Resource Identifier)는 인터넷에 있는 자원을 나타내는 주소다. 즉, 자원의 식별자다. 반면에, URL(Uniform Resource Locator)은 인터넷에서 자원의 위치를 알 수 있는 규약이다. 따라서 웹 사이트의 주소와 인터넷의 모든 자원을 타나낼 수 있다. URI는 URL의 개념을 포함한다.
21. ⭐REST란 무엇이고 장단점을 각각 설명하시오.❗
REST는 HTTP 통신을 활용하기 위해 고안된 아키텍처다. 이는 URI로 자원을 명시하고, HTTP 메서드로 CRUD 연산을 수행합니다. 그리고 HTTP를 따르는 모든 플랫폼에서 별도의 인프라 구축 없이 REST를 사용할 수 있다. 그래서 웹 외에도 iOS, 안드로이드 등 다양한 플랫폼과 디바이스가 등장하면서 범용으로 사용할 수 있다는 장점이 부각되고 있다. 하지만 HTTP 메서드를 사용해야 해서, 사용 가능한 연산이 한정적이라는 단점이 있다.
22. ⭐HTTP 메서드를 설명해 주세요.❗
클라이언트가 요청을 보낼 때, 요청에 포함된 HTTP 메서드는 요청의 목적과 종류를 나타낸다.
1. POST: Create 연산, 데이터를 생성할 때 사용.
2. GET: Read 연산, 서버에서 데이터를 조회할 때 사용.
3. PUT: Update 연산, 데이터를 갱신할 때 사용.
4. Delete: Delete 연산, 데이터를 삭제할 때 사용.
*PUT은 리소스의 모든 것을 업데이트하지만, PATCH는 리소스의 일부를 업데이트 한다.
23. ⭐⭐⭐GET 방식과 POST 방식의 차이점은 무엇인가?❗❗
GET은 서버에서 데이터를 조회할 때 사용하며, 데이터를 header에 담아 전달해서 보안이 취약하다. 반면에 POST는 데이터를 생성할 때 사용되며, 데이터를 body에 담아 전달해서 GET보다 보안성이 좋다.
24. POST와 PUT의 차이점을 설명해 보세요.❗❗
POST는 Create 연산을 하는 메서드입니다. 메시지 바디에 있는 데이터를 추가할 때 사용되며, 여러 번 요청하면 요청한 횟수만큼 데이터가 생기기 때문에 멱등하지 않다는 특징이 있습니다. 또한, HTTP의 헤더 중 Cache-Control 또는 Expires가 제대로 정의되어 있으면 캐싱이 가능합니다.
PUT은 Update 연산을 하는 메서드로, 특정 데이터를 수정하는 요청을 합니다. 따라서 요청을 한 번 보내는 것과 같은 요청을 여러 번 보내는 것이 같은 결과를 가져오기 때문에 멱등하다고 합니다. 하지만 PUT은 캐싱할 수 없습니다.
*멱등하다: 여러 번 같은 요청을 보내도 결과가 달라지지 않는 것을 의미.
*Cache-Control: 캐시를 조작하기 위한 헤더
*Expires: 자원에 대한 캐시 만료시간을 나타내는 헤더
요약
POST: 생성 연산, 멱등하지 않다, 캐싱 가능.
PUT: 수정 연산, 멱등하다, 캐싱 불가능
25. 조회하기 위한 용도로 POST가 아닌 GET 방식을 사용하는 이유는 무엇인가?❗
GET은 서버의 상태를 변경하지 않기 때문이다.
26. 모든 웹 페이지에서 HTTPS를 사용하지 않는 이유를 설명해 주세요.
모든 곳에 암호화를 사용하면 자원이 낭비되기 때문에 필요한 곳에만 사용하는 것이 좋습니다.
27. HTTP1.1과 HTTP2.0 차이점은 무엇인가요?❗
HTTP1.1은 하나의 연결에 하나의 요청-응답만 가능하다. 반면에 HTTP2.0은 하나의 연결에 여러개의 요청-응답이 가능하다.
28. ⭐⭐⭐HTTP와 HTTPS의 차이점을 설명해 보세요.
HTTP와 달리 HTTPS에는 보안 계층의 암호화 프로토콜인 SSL/TLS이 있어서 전송하려는 데이터를 암호화해 보호할 수 있다. 이러한 특징은 인터넷 쇼핑이나 인터넷 뱅킹 등 민감한 정보를 사용하는 웹 사이트에서 중요한 요소입니다. 그래서 크롬, 사파리 등의 웹 브라우저에서는 SSL/TLS를 지원를 지원합니다. 이외에도 HTTP는 80번 통신 포트를 사용하지만 HTTPS 443번 통신 포트를 사용한다는 점이 다릅니다.
29. ⭐⭐⭐REST API란 무엇이고 작동 방식에 대해서 설명해 주세요.❗ ❗❗
REST API란 서버와 클라이언트가 인터넷에서 정보를 안전하게 주고받기 위해 사용하는 REST를 기반으로 한 인터페이스라고 할 수 있다. 자원의 식별은 URI로, 자원에 대한 행위(처리)는 HTTP 메서로 나타낸다. 그리고 클라이언트로 전달되는 데이터는 JSON 또는 XML로 표현한다.

기본적인 동작 과정은 다음과 같다.
1. 클라이언트가 URI로 식별한 자원에 대해 HTTP 메서드를 사용해 REST API로 요청한다.
2. REST API가 HTTP 요청 메시지에 실려 서버에 전달된다.
3. 서버에서는 수신한 HTTP 요청 메시지를 바탕으로 요청 사항을 확인해 처리하고 HTTP 응답을 반환 한다. 응답에는 요청에 대한 처리 성공 여부와 정보를 포함한다.
4. 응답 메시지는 자원에 대한 정보를 JSON 또는 XML 등의 형태로 포함하고 있다. 클라이언트는 해당 형태의 정보를 수신한다.
30. ⭐로드 밸런싱(Load Balancing)이란 무엇인지 설명해 주세요.❗
로드 밸런싱은 서버를 여러대 사용할 때, 트래픽이 몰리면 여러 서버에 균등하게 트래픽을 분산 처리하는 기술이다. 웹사이트에 접속하는 인원이 급격히 늘어나면, 이 사람들에 대해 모든 트래픽을 감당하기엔 1대의 서버로를 부족하다. 대응 방안으로 하드웨어의 성능을 올리거나(Scale-up) 여러대의 서버가 나눠서 일하도록 만드는 것(Scale-out)이 있다. 하드웨어 향상 비용이 더욱 비싸기도 하고, 서버가 여러대면 무중단 서비스를 제공하는 환경 구성이 용이하므로 Scale-out이 효과적이다. 이때, 여러 서버에게 균등하게 트래픽을 분산 시켜주는 것이 바로 로드 밸런싱이다.
31. 서버에 트래픽이 주어졌을 때, 어떻게 응답 속도를 개선할 수 있나요?
서버를 추가하여 여러대의 서버에 트래픽을 균등하게 분산 시키는 로드 밸런싱 기술을 사용해 응답 속도를 개선할 수 있습니다.
32. Scale-up과 Scale-out의 장단점을 각각 설명해 주세요.
스케일 업
서버에 CPU / RAM 등을 추가하거나, 고성능의 부품으로 교환하는 방법이다. 이 경우에는 단순히 서버를 고성능으로 변경하는 것이기 때문에 관리 비용/운영 이슈가 적고 비교적 쉽게 변경이 가능하다. 하지만 모든 부하가 서버 한대에 집중되므로 장애시 위험하다는 단점이 있다.
스케일 아웃
서버를 여러대 추가하여 시스템을 확장하는 방법으로 로드 밸런싱이 필수다. 그리고 다중화를 통해서 서버에 장애가 발생하더라도 다른 서버에서 대응이 가능하다. 하지만 스케일 아웃도 새로운 환경 구성을 위해 아키텍처에 대한 높은 이해도가 필요로되고, 서버의 수가 늘어나기 때문에 관리가 힘들 수 있다.
33. 네트워크 애플리케이션을 설계해야하는데 TCP, UDP 중에서 하나를 선택해야 한다면 어떠한 기준으로 선택할 것인가?❗❗❗
설계하고자 하는 애플리케이션이 신뢰성이 중요한지 혹은 속도가 중요한지를 먼저 판단할 것 같습니다. 속도보다 신뢰성이 더 중요하다고 판단되면 TCP 를 사용할 것 같습니다. 반면 스트리밍 서비스와 같이 속도가 중요하고 신뢰성보다는 연속성이 중요한 서비스라고 판단되면 UDP 를 사용할 것 같습니다.
Q. 스트리밍 서비스 처럼 속도가 더 중요하다고 생각되는 곳에서 UDP 를 사용하겠다고 답변 하셨는데, 그럼 Youtube 나 Netflix 등 대부분 비디오 스트리밍 애플리케이션들은 UDP 를 사용하고 있는 건가요 ?
A : 아닙니다. UDP 스트리밍 자체에는 크게 세 가지 단점이 존재한다고 알고 있습니다.
- 첫째. 서버와 클라이언트 간의 예측하기 어려운 가용 대역폭 변화로 인해 UDP 스트리밍은 연속적인 재생을 제공하는 데 실패할 수 있습니다.
- 둘째. UDP 스트리밍이 클라이언트와 서버 간의 대화식 요구 및 상태 추적을 위해 RTSP(Real Time Streaming Protocol) 서버와 같은 미디어 제어 서버를 필요로 한다는 점입니다.
- 셋째. 많은 방화벽 시스템이 UDP 트래픽을 차단하도록 설정되어 있어, 방화벽 안쪽의 사용자가 UDP 비디오를 수신하지 못한다는 점입니다.
이러한 세 가지 이유로 Youtube, Netflix 등 대부분의 비디오 스트리밍 애플리케이션들은 HTTP 스트리밍 방식을 사용하고 있습니다.
HTTP 스트리밍 방식의 특징에 대해서 간략히 설명드리자면, HTTP 스트리밍에서 비디오는 HTTP 서버 내의 특정 URL 을 갖는 일반적인 파일로 저장됩니다. 사용자가 비디오 시청을 원하면 클라이언트는 서버에게 TCP 연결을 설립하고 해당 URL 에 대한 HTTP GET 요청을 발생시킵니다. 이때 서버는 HTTP 응답 메시지를 통해 파일을 전송하며, TCP 혼잡제어(패킷 오버플로우 방지) 및 흐름제어(데이터의 처리 속도 조절)가 허용하는 한도에서 최대한 빠른 시간에 응답하게 됩니다.
TCP 상의 HTTP 를 이용하면 비디오가 방화벽이나 주소변환기(NAT)를 쉽게 통과할 수 있습니다. 대부분의 장비들이 UDP 트래픽은 차단하지만 HTTP 트래픽은 통과시키도록 설정되어 있기 때문입니다.
또한 HTTP 를 이용한 스트리밍은 RTSP 서버와 같은 미디어 제어 서버를 생략하게 함으로써 많은 비용을 절감할 수 있게 해줍니다. 따라서 이러한 장점으로 인해 많은 비디오 스트리밍 서비스를 운영하고 있는 회사들이 UDP 대신 HTTP 스트리밍 기반 프로토콜을 채택하여 사용 중입니다.
34.⭐TCP의 데이터 신뢰성을 보장하기 위한 제어 방법 중 '오류 제어' 를 설명해 주세요.❗
오류 제어는 데이터에서 오류 및 유실 발생시 재전송을 통해 데이터의 신뢰성을 보장하기 위한 방식이다. 정지-대기, Go-Back-N ARQ, Selective-Repeat ARQ가 해당한다.
35. ⭐HTTP의 Status Code에 대해 설명해주세요
HTTP 상태 코드는 클라이언트 요청에 대한 서버의 상태를 알려주는 코드로서, 시작 숫자로 의미를 알 수 있다.
1xx: 클라이언트로부터 요청을 받아 처리 중
2xx: 요청을 성공적으로 처리함
3xx: 요청을 처리하기 위해 추가 처리 필요
4xx: 클라이언트 오류
5xx: 서버 오류
36. ⭐⭐⭐사용자가 URL을 입력한 후 화면이 출력되기까지의 과정을 설명해 보세요.❗
사용자가 URL을 입력하면 웹 브라우저에서는 URL의 유효성을 판단한다. URL이 유효하지 않으면 웹 브라우저는 입력한 내용을 검색하고 되고, URL이 유효하면 DNS 서버에 연결할 IP를 요청합니다. DNS 서버로부터 IP 주소를 받으면 웹 브라우저는 이 IP주소를 통해 3-way 핸드셰이킹으로 서버와 TCP 통신을 위한 가상 회선을 연결하고, HTTP 연결 요청을 서버에 보냅니다. 그 후 웹브라우저는 서버로부터 응답을 받고 웹 페이지 화면에 출력합니다.
37. ⭐⭐⭐쿠기와 세션의 차이점을 설명해 보세요.❗
쿠키와 세션 모두 HTTP 통신의 특징인 비연결성과 무상태의 단점을 보완하기 위해 사용합니다. 쿠키는 로컬 웹 브라우저에 저장되는 키와 값이 들어있는 데이터 파일이다. 이는 서버에서 클라이언트에 대한 정보를 저장하지 않아도 쿠키를 이용해 정보를 재사용할 수 있다. 예를들어, 웹 사이트의 로그인 인증 정보와, 온라인 쇼핑몰의 장바구니 등이 있다.
세션은 쿠키와 비슷하게 데이터를 저장하는 방식이지만 키와 값은 클라이언트에, 데이터는 서버에 저장해서 쿠키보다 보안에 강하다는 특징이 있다.
*핵심은 데이터가 저장되는 위치를 꼭 기어해야 한다.
38. 공인(public) IP와 사설(private) IP의 차이에 대해 설명해 주세요.
공인 IP는 ISP(인터넷 서비스 공급자)가 제공하는 IP 주소이며, 외부에 공개되어 있는 IP주소다. 반면, 사설 IP는 일반 가정이나 회사 등에 할당된 IP주소다. 사설 IP는 IPv4의 주소부족으로 인해 서브넷팅된 IP이기 때문에 라우터(공유기)에 의해 로컬 네트워크상의 PC나 장치에 할당됩니다.
사설 IP주소만으로는 인터넷에 직접 연결할 수 없고, 라우터를 통해 1개의 공인 IP를 할당하고, 라우터에 연결된 개인 PC는 사설 IP를 각각 할당 받아 인터넷에 접속할 수 있다.
'취업 준비' 카테고리의 다른 글
면접 대비(자료구조 및 알고리즘) (0) | 2024.04.22 |
---|---|
면접 대비(운영체제) (0) | 2024.04.15 |
면접 대비(DB) (0) | 2024.04.15 |