1. IP Address
1-1. 쿠키에 대해 설명해 주세요
가이드: 쿠키를 통해 HTTP 상태유지를 어떻게 하는지 클라이언트-서버 관점에서 설명. 장단점 설명, 사용해 본 적이 있다면 경험과 연관 지어 설명
쿠키는 HTTP 서버가 클라이언트를 식별할 수 있도록 하기 위해 사용됩니다.
클라이언트가 웹 서버에 처음 접속하면, 서버는 쿠키를 생성해서 클라이언트에게 줍니다.
이후 클라이언트는 서버에 요청을 보낼 때 자신의 정보가 들어있는 쿠키를 같이 보냅니다.
그러면 서버는 쿠키를 통해 클라이언트를 식별할 수 있습니다.
쿠키는 클라이언트 단에 저장되기 때문에 쿠키에 들어있는 사용자 정보가 유출될 수 있는 단점이 있습니다.
1-2. 세션에 대해 설명해 주세요.
가이드: 세션을 통해 HTTP 상태유지를 어떻게 하는지 클라이언트-서버 관점에서 설명. 장단점 설명, 사용해 본 적이 있다면 경험과 연관 지어 설명
세션은 HTTP 서버가 클라이언트를 식별할 수 있도록 하기 위해 사용됩니다.
클라이언트가 웹 서버에 처음 접속하면, 서버는 세션 id와 저장소를 만들고 세션 id를 클라이언트에게 줍니다.
이후 클라이언트는 서버에 요청을 보낼 때 세션 id를 같이 보냅니다.
그러면 서버는 세션 id를 통해서 서버가 자신을 식별할 수 있도록 합니다.
세션을 사용하면, 정보가 서버에 저장되지 않기 때문에 정보 유출 우려가 없습니다.
하지만 유저에 대한 세션 정보를 유지해야 하기 때문에 많은 유저가 접속하면, 성능 저하가 발생할 수 있는 단점이 있습니다.
1-3. CORS가 뭘까요?
가이드: Same Origin Plicy와 함께 설명, 프론트, 백엔드 관점에서 설명
CORS는 클라이언트 브라우저에서 현재 접속한 사이트 외에 다른 도메인에 접근할 수 있도록 처리해 주는 웹 브라우저 표준 기술입니다.
브라우저에는 크로사이트 스크립트 등의 이유로 보안상 스크립트를 사용해서 다른 도메인으로 접근하는 것을 제한합니다.
이를 Same Origin Policy라고 하는데, 이러한 정책 제한을 넘어서기 위해 CORS가 필요합니다.
예를 들어, 웹 서비스를 프론트와 백으로 완전히 나누고 API로 묶는 방식으로 구현한 경우,
백엔드 서버에 프론트엔드에 대한 CORS 설정을 허용해 줘서 프론트엔드가 백엔드 API를 사용할 수 있게 해줘야 합니다.
1-4. REST에 대해서 설명해 주세요.
가이드: 간단한 정의 정도만 설명해도 좋고, 6가지 원칙을 다 설명해도 좋다., RESTful, REST API에 대해서도 설명
REST는 자원을 이름으로 구분하고, 해당 자원의 상태를 주고받는 방법을 의미합니다.
구체적으로는 HTTP URL을 통해 자원을 명시하고, HTTP Method를 통해 해당 자원에 대해 CRUD 연산을 적용하는 것입니다.
REST의 원리를 따르는 시스템을 RESTful이라고 부르고,
REST 형식의 API를 REST API라고 부릅니다.
1-5. XXS가 뭘까요?
가이드: 공격 방식과 대응 방식 대해 설명
XXS는 웹 브라우저에 악성 스크립트를 삽입하여 사용자 정보를 탈취하는 공격방식입니다.
웹 브라우저에서 사용자 입력값과 출력값을 철저히 검증해서 XXS를 예방할 수 있습니다.
모든 입력값에 대해 악의적인 스크립트가 있는지 체크하는 validation을 추가하고,
입력값을 출력할 때는 특수문자를 이스케이스 하는 처리를 추가해서 예방하는 방법이 있습니다.
1-6. SQL Injection 공격이 뭘까요? 어떻게 대비할 수 있을까요?
가이드: 공격 방식과 대응 방식에 대해 설명
악의적인 SQL 쿼리문을 삽입하여 데이터베이스를 비정상적으로 조작하는 공격 기법입니다.
웹 브라우저에서 들어오는 입력값에 대해 악성 SQL 패턴에 대한 validation을 추가하고,
데이터베이스에 평소 사용자에 의해 발생하는 SQL 패턴이 아닌 비정상적인 SQL이 발생하는지
주기적으로 모니터링하고, 비상 알람을 걸어두는 방식을 선택할 수 있습니다.
# 조금 더 디테일한 질문
1-7. 토큰에 대해 설명해 주세요.
가이드: 토큰을 통해 HTTP 상태유지를 어떻게 하는지 클라이언트-서버 관점에서 설명. 장단점 설명, 사용해 본 적이 있다면 경험과 연관 지어 설명
토큰은 클라이언트 인가하는 방법입니다.
토큰에는 서버가 비밀키로 만들어둔 서명이 있는데,
서버는 공개키로 서명을 검증해서 클라이언트를 인가할 수 있습니다.
세션과 달리 토큰은 그 자체를 공개키로 검증만 하면 되기 때문에
서버에 부하를 주지 않고, 여러 서버에 사용할 수 있는 확장성이 있습니다.
JSON을 사용하기 때문에 클라이언트가 브라우저인지 앱인지 아니면 다른 형태의 클라이언트 인지 상관없이
토큰 인증을 사용할 수 있다는 장점이 있습니다.
1-8. URL, URI, URN의 차이가 뭘까요?
가이드: 각각 자원을 식별하는 방식을 설명
URL은 인터넷상에서 특정 자원을 가리키는 식별자입니다.
URI의 두 가지 형태로 URL과 URN이 있습니다.
URL은 특정 시점에서 자원의 구체적인 위치를 나타내는데,
만약 자원의 위치가 변경되면 기존 URL은 더 이상 사용 불가능하다는 단점이 있습니다.
URN은 이러한 URL의 단점을 보완하기 위해 새롭게 정의된 표준인데,
URN은 자원에 대해 영속적이고 고유한 식별자를 뜻합니다.
1-9. 웹 캐시에 대해서 설명해 주세요.
가이드: 웹 캐시를 사용했을 때의 이점에 대해서 설명
웹 캐시는 자주 사용되는 자원의 사본을 자동으로 보관하는 장치입니다.
만약에 어떤 HTTP 요청에 대한 사본이 캐싱되어 있으면, 서버까지 요청이 가지 않고 바로 캐시에서 바로 자원을 제공받게 됩니다.
캐시를 사용하면,
반복되는 요청을 줄여줘서 서버의 부하를 줄여주고,
갑작스러운 트래픽을 대처하게 해 주고,
네트워크 병목을 줄여주고,
먼 거리로 인한 전송 지연을 줄여줍니다.
1-10. 웹 프록시에 대해서 설명해 주세요.
가이드: 프록시의 역할과 사용 예시 설명, 포워드 프록시, 리버스 프록시에 대해 설명
프록시 서버는 클라이언트와 서버 사이에 존재하는 중개자입니다.
그렇기 때문에 프록시는 클라이언트로 동작하기도 하고, 서버로 동작하기도 합니다.
프록시는 데이터 필터링 또는 변환하거나,
방화벽을 세우거나,
또는 캐시 서버로 동작할 수 있습니다.
클라이언트 앞에 위치하는 프록시를 포워드 프록시라고 하는데,
포워드 프록시를 사용해서 익명으로 서버에 접근할 수 있습니다.
반대로 서버 앞에 위치하는 프록시를 리버스 프록시라고 하는데,
하나의 리버스 프록시에 여러 개의 서버를 연결시켜서 로드 밸런싱을 할 수 있고,
서버에 직접 접근하지 못하게 할 수 있습니다.
질문이나 잘못된 점은 댓글로 남겨주세요 :)💖
'CS > [JSCODE] 컴퓨터 네트워크' 카테고리의 다른 글
[컴퓨터 네트워크/스터디] IP Address (0) | 2023.05.01 |
---|---|
[컴퓨터 네트워크/스터디] TCP (0) | 2023.04.24 |
[컴퓨터 네트워크/스터디] UDP, 신뢰적 데이터 전송의 원리 (2) | 2023.04.21 |
[컴퓨터 네트워크/스터디] HTTP, HTTPS, DNS (2) | 2023.04.17 |
[컴퓨터 네트워크/스터디] 네트워크 레이어 (0) | 2023.04.13 |
댓글