기본적인 개념 정리를 할 겸 기술 면접에 나올 수 있는 용어들을 정리해 보았다.
통신
HTTP/HTTPS 개념과 차이점?
- HTTP는 HyperText Transfer Protocol의 약자로 HTTPS는 Secure인 보안을 강화한 프로토콜이다.
- 웹에서 통신을 할 때 주로 사용되는 프로토콜이며 HTTP는 80 포트, HTTPS는 443 포트를 사용한다.
- HTTPS는 TLS를 통해 데이터의 무결성과 기밀성을 보장해 준다.
TCP와 UDP의 차이점?
- TCP는 Transmission Control Protocol의 약자로, 연결 기반 프로토콜입니다.
- UDP는 User Datagram Protocol의 약자로, 비연결 기반 프로토콜입니다.
- TCP는 연결기반 프로토콜로 네트워크 세그먼트의 순서와 전송의 신뢰성 보장해 주는 반면, UDP는 데이터그램의 순서와 원본 데이터를 보장하지 않습니다.
- TCP는 3 way-handshaking으로 서버와 1대 1 세션을 활성화하고, 4 way-handshaking으로 연결을 종료합니다.
- TCP는 주로 파일 다운로드와 같은 원본 데이터 보장이 필요한 서비스에 사용되며 UDP는 handshaking의 부재로 더 빠른 속도로 데이터를 전송하기에 동영상 스트리밍과 같은 서비스에 주로 사용됩니다.
- 추가적으로, TCP는 흐름 제어로 수신자의 수신 버퍼 상태에 반응하여 송신 속도를 조절할 수 있고, 혼잡제어로 네트워크 상의 혼잡도를 파악해 송신 속도를 조절할 수 있습니다.
3-way handshaking이 무엇인가요?
- 3-way handshaking은 TCP 연결을 수립하기 위한 초기 통신 절차입니다.
- 송신자가 먼저 SYN 패킷을 서버에 전송하면, listen 상태의 서버가 해당 요청을 받아들이고 SYN과 ACK을 반환합니다.
- 송신자가 SYN과 ACK을 받으면 다시 ACK을 전송하여 서버가 받게 되면 연결이 완료됩니다.
4-way handshaking이 무엇인가요?
- 4-way handshaking은 TCP 연결을 종료하기 위한 통신 절차입니다.
- 송신자가 FIN을 보내 통신 종료를 요청하면 수신자는 ACK을 보내 요청을 받아들임을 알립니다.
- 이후 수신자가 더 보낼 요청이 없을 경우 FIN을 송신자에게 보냅니다.
- 송신자는 수신자의 FIN을 받고 ACK을 보내 확인 응답을 보냅니다.
- 송신자와 FIN을 보낸 후 TIME_WAIT 상태가 되고 지정된 시간이 종료될 경우 연결이 종료됩니다.
- 초기연결에 비해 송신자가 FIN을 보내도 수신자가 더 보낼 내용이 있을 수 있기 때문에 확인하는 절차 1번이 더 많습니다.
REST API란 무엇인가요?
- REST API란 Representational State Transfer Application Programming Interface의 약자로, 가장 대표적으로 쓰이는 웹 통신 API입니다.
- REST는 자원을 URI로 표현하고 HTTP 메서드를 통해 해당 자원을 주고받는 방식을 의미합니다.
- GET, POST, DELETE, PATCH와 같은 HTTP Method를 사용해 그에 맞는 요청과 응답을 진행합니다.
쿠키와 세션의 차이는 무엇인가요?
- 쿠키는 클라이언트와 서버 간 상태 정보를 저장하고 주고받기 위한 수단입니다.
- 쿠키는 클라이언트에 저장되며, http-only, secure과 같은 속성들을 통해 보안/제어 기능을 사용할 수 있습니다.
- 세션은 클라이언트와 서버 간 상태 정보를 서버에 저장하여, 클라이언트에 남기지 않도록 합니다.
- 클라이언트에서 저장이 안 되기에 보안적으로는 안전하지만, 서버에서 상태를 관리해야 하는 부담이 작용합니다.
CORS란 무엇인가요?
- CORS란 Cross-Origin Resource Sharing의 약자로, 서로 다른 Origin 간의 자원 공유에 대한 정책을 의미합니다.
- SOP(Same-Origin Policy)에 따르면 보안을 위해 동일 Origin에 대해서만 자원 공유를 권장하지만, Cross-Origin의 자원 공유가 필요한 상황에는 CORS 정책을 통해 정책을 준수하는 클라이언트와 자원 공유가 가능하게 됩니다.
- 서버에서 CORS 정책을 설정하고 브라우저에서 Cross-Origin을 식별하면 http method의 OPTIONS로 preflight 요청을 보내게 됩니다.
- preflight 요청에는 클라이언트가 어떤 method와 요청을 할지를 전송하고 서버는 CORS 관련 응답 헤더를 반환해 줍니다.
- 브라우저에서는 서버로부터 반환받은 CORS 정책을 토대로 요청을 거절, 승인하게 됩니다.
- preflight가 매 통신마다 발생하면 오버헤드가 발생하기 때문에 max-age를 설정하여 일정 시간 동안 요청을 보내지 않습니다.
- origin은 protocol://host:port 세 가지를 의미합니다.
DNS란 무엇인가요?
- DNS는 Domain Name System의 약자로 도메인을 ip로 매핑해 주는 서비스입니다.
- 서버 주소는 ipv4의 ip 형태로 구성되어 있어 일반 사용자가 웹 사이트의 주소를 일일이 외우기엔 부담이 됩니다.
- 따라서, www.naver.com과 같은 도메인을 ip와 매핑시켜 사람이 기억하기 쉬운 도메인 이름을 ip로 변환시켜 줍니다.
- url에 도메인을 입력할 경우 로컬 DNS 캐시를 확인하고 없으면 DNS 서버로 요청해 IP를 반환받습니다.
CDN이란 무엇인가요?
- CDN이란 Content Delivery Network의 약자로 주로 html, css, 이미지와 같은 정적 데이터를 네트워크 에지에 캐싱해 주는 서비스입니다.
- 물리적 거리가 긴 서버에 정적인 데이터를 요청하고 응답하는 시간이 길기 때문에 네트워크 에지에 요청을 하여 자주 쓰이는 캐싱된 파일을 가져옴으로써 통신 속도를 향상할 수 있습니다.
- 여기서 네트워크 에지는 클라이언트로부터 가까우며 요청을 먼저 처리할 수 있는 서버를 의미합니다.
Proxy란 무엇인가요?
- Proxy 서버란 특정 서버의 앞단에 위치해 요청이나 응답을 대신해 주는 서버입니다.
- Forward Proxy와 Reverse Proxy가 있는데 각각 클라이언트 측의 앞단, 서버의 앞단에서 요청과 응답을 대신하여 서버 주소를 은닉합니다.
- Forward Proxy 같은 경우 교육기관이나 기업에서 사용하여 원하지 않는 요청을 필터링, ip 우회, 익명성 보장 용도로 주로 사용됩니다.
- Reverse Proxy 같은 경우 서버의 주소를 숨기며 클라이언트의 요청을 대신 전달, 로드 밸런싱 등의 용도로 사용합니다.
TTL이란 무엇인가요?
- TTL은 Time To Live의 약자로 주로 네트워크 상에서 유효한 시간, 횟수를 의미합니다.
- DNS 캐시 같은 경우 TTL을 설정하여 특정 시간 동안 도메인을 매핑할 수 있게 해 줍니다.
- 네트워크 상에서는 루프를 방지하기 위해 TTL을 설정합니다.
'CS' 카테고리의 다른 글
| [Front-End] 기술 면접 질문 정리(JavaScript, 초급) (2) | 2025.04.20 |
|---|