질문
- HTTP 프로토콜이란?
- HTTP와 HTTPS의 차이점은?
- 대칭 암호화와 비대칭 암호화란?
- HTTPS의 최초 연결에 대해
- HTTP1과 HTTP2의 차이점은?
- HTTP 메소드들과 각각이 쓰이는
- GET과 POST의 차이
- POST PUT PATCH의 차이
- REST란?
- API란?
- REST의 특징은?
- REST API의 장단점은?
- www.naver.com에 접속할 때 생기는 과정 (네트워크 관점에서)
- TCP와 UDP의 차이
- TCP 접속과 종료
- OSI 7계층이란?
- OSI 7계층과 TCP/IP 4계층 매핑
- OSI 7계층과 TCP/IP의 차이점
- 공인 IP와 사설 IP의 차이점
- 로드 밸런싱이란?
답변
Q) HTTP 프로토콜이란?
HTTP 프로토콜이란 서버와 클라이언트가 데이터를 주고 받기 위한 프로토콜입니다. HTTP는 애플리케이션 레벨의 프로토콜로 TCP/IP 위에서 작동합니다. HTTP는 상태 정보를 저장하지 않는 stateless 특성과 클라이언트의 요청에 대한 응답을하면 연결을 끊는 connectionless 특성을 가지고있습니다. 하지만 그렇기 때문에 request가 도착할때마다 다시 인증을 해주어야한다는 단점이 있기에 이를 해결하기 위해 쿠키/세션 등을 활용합니다.
Q) HTTP와 HTTPS의 차이점은?
HTTP는 plaintext 데이터를 전송하는 프로토콜이기 때문에 제3자에 의해 조회될 수 있습니다. 이 문제를 해결하기 위해 HTTPS를 사용하는 것으로, HTTPS는 HTTP와 같이 바로 TCP와 통신하지 않고 대신, SSL을 통하여 TCP와 통신하는 방식입니다. HTTPS는 대칭키 암호화와 비대칭키 암호화를 동시에 이용하며 서버와 클라이언트가 최초로 연결할 때 대칭키를 주고받기 위해 비대칭키 암호화를 사용하고 그 이후로는 대칭키 암호화를 사용합니다.
Q) 대칭키 암호화와 비대칭키 암호화란?
대칭키 암호화는 하나의 키로 데이터의 암호화/복호화를 할 수 있는 암호화입니다. 클라이언트와 서버가 동일한 키를 가지고 있고 그 키로 주고 받은 데이터의 암호화/복호화를 진행하는 것을 의미합니다.
비대칭키 암호화란 한쌍의 키로 데이터의 암호화/복호화를 하는 암호화입니다. 비대칭키 암호화의 키는 공개키와 개인키로 이루어져있으며, 공개키로 암호화하여 데이터를 받는 사람을 보장할 수 있고 개인키로 암호화하여 데이터를 보내는 사람을 보장할 수 있습니다.
Q) HTTPS의 최초 연결에 대해
HTTPS에서는 최초로 연결을 할때 세션키, 즉 대칭키,를 주고받기 위해 비대칭키 암호화를 사용합니다. 서버는 클라이언트에게 공개키, 즉 인증서,를 전송하고, 클라이언트는 인증서가 유효한지 검사 후 세션키를 생성고 서버에게서 받은 공개키로 암호화하여, 서버에게 이를 전송합니다. 공개키로 암호화된 데이터는 서버만이 가지고있는 개인키로만 복호화가 가능하기 때문에 이를 통해 서버와 클라이언트는 안전하게 세션키를 주고받을 수 있게됩니다.
Q) HTTP1과 HTTP2의 차이점은?
HTTP1은 연결당 하나의 요청과 응답을 처리하고 이로인해 엔드 유저는 latency와 같은 성능 저하를 경험할 수 있습니다. 이를 개선하기 위해 HTTP2가 개발되었고 HTTP2는 하나의 연결로 다수의 요청과 응답을 처리할 수 있습니다.
Q) HTTP 메소드들과 각각이 쓰이는 곳
HTTP 메소드는 클라이언트가 서버에게 요청의 목적을 알리는 수단으로 GET, POST, PUT, PATCH, DELETE등이 있습니다. GET은 데이터 조회, POST는 데이터 추가 또는 수정, PUT은 데이터 변경, PATCH는 데이터 일부 변경, DELETE는 데이터 삭제를 의미합니다.
Q) GET과 POST의 차이
GET은 데이터를 조회하기 위해 사용되는 메소드로 데이터가 URL에 노출되기 때문에 보안적으로 중요한 데이터는 GET을 사용해서는 안됩니다. POST는 데이터를 추가 또는 수장하기 위해 사용되는 메소드로 데이터를 바디에 추가하여 전송하기 때문에 GET보다는 안전합니다.
Q) POST PUT PATCH의 차이
POST와 PUT 모두 메소드와 생성과 수정을 담당할 수 있으나 RESTful한 API는 자원에 대한 4가지 행위인 CRUD를 구현하기 위해 POST는 Create와, PUT은 Update와 매칭한 것입니다. 이 외에 POST는 멱등하지 않으나 PUT은 멱등하다는 차이점도 존재합니다.
PUT은 리소스의 모든 속성을 수정하기 위해, PATCH는 리소스의 일부만 수정하기 위해 사용됩니다.
멱등: 어떤 조작을 몇 번을 반복해도 결과가 동일한 것
Q) REST란?
HTTP URI로 자원을 표현하고 HTTP Method로 그 자원에 대한 CRUD 연산을 진행하는 것을 의미합니다.
Q) API란?
클라이언트와 웹 리소스 사이의 게이트웨이로, 데이터와 기능의 집합을 제공하여 서로 정보를 교환가능 하도록 합니다.
Q) REST의 특징은?
HTTP 인프라를 그대로 사용하기 때문에 HTTP와 비슷한 특징을 가지고 있습니다. REST는 상태 저장을 하지 않기에 stateless하고 캐시 처리가 가능합니다. 또한 REST는 서버와 클라이언트의 역할을 완전히 분리시키고 다중 계층 구조를 만들 수 있습니다.
Q) REST API의 장단점은?
REST API는 HTTP 인프라를 그대로 사용하기 때문에 추가 인프라를 구축하지 않아도 되며 메세지가 의도하는 바를 정확히 나타내 사용하기 쉽다는 장점이 있습니다. 그러나 행위가 네개밖에 존재하지 않고 표준이 존재하지 않다는 단점을 가지고있습니다.
Q) www.naver.com에 접속할 때 생기는 과정 (네트워크 관점에서)
- 사용자가 브라우저에 URL을 입력합니다.
- 브라우저는 local DNS → 루트 DNS 서버 → .com DNS 서버 → naver.com DNS 서버 순서대로 www.naver.com에 해당하는 IP주소를 찾습니다.
- 찾아낸 IP 주소로 웹 서버에 TCP 3 handshake로 연결을 수립합니다.
- 브라우저는 HTTP를 사용하여 HTTP 요청 메세지를 생성함니다.
- TCP/IP 연결을 통해 HTTP요청이 서버로 전송됩니다.
- 서버는 HTTP를 활용해 HTTP 응답 메세지를 생성합니다.
- TCP/IP 연결을 통해 요청한 컴퓨터로 전송합니다.
- 도착한 HTTP 응답 메세지는 웹페이지 데이터로 변환되고, 웹 브라우저에 의해 출력되어 사용자가 볼 수 있게 됩니다.
Q) TCP와 UDP의 차이
TCP는 연결형 서비스로 3-way-handshaking 과정을 통해 연결을 설정하기에 높은 신뢰성을 보이지만 속도는 느립니다. UDP는 비연결형 서비스로 신뢰성은 떨어지나 데이터 수신여부를 확인하지 않기 때문에 속도는 빠릅니다. TCP는 신뢰성이 중요한 파일 교환과 같은 경우에서 쓰이고 UDP는 속도가 중요한 실시간 스트리밍과 같은 경우에 쓰입니다.
Q) TCP 접속과 종료
TCP의 연결을 위해서는 3-way-handshaking이라는 과정을 사용합니다. 클라이언트가 연결을 원한다는 SYN 패킷을 보내고, 서버가 요청을 수락한다는 SYNACK 패킷을 보내고, 클라이언트는 이를 받았다는 ACK 패킷을 보내며 연결을 설정합니다.
TCP의 연결 해제를 위해서는 4-way-handshaking이라는 과정을 통합니다. 클라이언트가 접속 해제를 원한다는 FIN 패킷을 보내고, 서버가 이를 받았다는 ACK 패킷을 보낸 후, 남아있는 나머지 응답들을 모두 보낸 후 해제할 준비가 되었다는 FIN 패킷을 보낸 후, 클라이언트가 이를 받았다는 ACK 패킷을 보냅니다.
Q) OSI 7계층이란?
- 7 계층(응용 계층): 사용자와 직접 상호작용하는 응용 프로그램들이 포함된 계층
- 6 계층(표현 계층): 데이터의 형식(Format)을 정의하는 계층
- 5 계층(세션 계층): 컴퓨터끼리 통신을 하기 위해 세션을 만드는 계층
- 4 계층(전송 계층): 최종 수신 프로세스로 데이터의 전송을 담당하는 계층
- 3 계층(네트워크 계층): 패킷을 목적지까지 가장 빠른 길로 전송하기 위한 계층
- 2 계층(데이터링크 계층): 데이터의 물리적인 전송과 에러 검출, 흐름 제어를 담당하는 계층
- 1 계층(물리 계층): 데이터를 전기 신호로 바꾸어주는 계층
Q) OSI 7계층과 TCP/IP 4계층 매핑
OSI | TCP/IP | 기술 |
5,6,7 (세션, 표현, 응용) | 4 (응용) | HTTP, DNS |
4 (전송) | 3 (전송) | TCP, UDP |
3 (네트워크) | 2 (인터넷) | ARP, RARP, IP, ICMP |
1,2 (물리, 데이터링크) | 1 (네트워크 접근) | MAC |
Q) OSI 7계층과 TCP/IP의 차이점
OSI는 네트워크 연결 표준이 되는 개방 시스템 상호 연결 모델이고 TCP/IP는 컴퓨터간의 통신에서 사용되는 통신 규약의 모음입니다. TCP/IP는 인터넷 개발 이후 계속 표준화 되어 신뢰성이 높은 반면 OSI는 실구현 예가 거의 없어 신뢰성이 낮아 표준을 설정할 때는 사용되나 실질적 통신 자체는 TCP/IP를 사용하는 경우가 많습니다.
Q) 공인 IP와 사설 IP의 차이점
공인 IP는 ISP가 제공하는 전 세계 유일한 IP 주소이며 외부에 공개되어 있는 IP 주소입니다. 사설 IP는 특정 네트워크 안에서 사용하는 IP주소로 IPv4의 주소 부족으로 인해 생겨났으며 라우터에게서 제공 받는 가상의 주소입니다.
Q) 로드 밸런싱이란?
여러개의 서버가 존재할 경우 이 여러대의 서버에 트래픽을 균등하게 배분해주는 것입니다. 특히 scale out한 서버에는 꼭 필요한 절차로 round robin, least connection과 같은 다양한 알고리즘 중 하나를 선택해 진행하게 됩니다. Round robin은 서버에 요청을 돌아가며 순서대로 배정하는 방식이고, least connection 트래픽이 들어온 시점에 가장 적은 연결 상태를 보이는 서버에 배정하는 방식입니다.