긴급 면접 준비

네트워크 관련 질문

서하빈 2023. 9. 21. 22:54

http 프로토콜에 대해 설명해주세요

- 인터넷에서 데이터를 전송하는데 사용되는 프로토콜 중 하나로, 클라이언트와 서버 간의 통신을 가능하게 합니다. 주로 웹브라우저와 웹서버 간의 통신에 사용되며 상태를 저장하지 않고 응답 후에 연결을 끊는 특징이 있습니다.

- 응용 계층의 프로토콜로 tcp/ip 위에서 작동합니다.

- http로 보낼 수 있는 데이터는 html문서, 이미지, 동영상, 오디오 텍스트 문서 등이 있습니다.

 

 

http 메서드란 무엇이고 종류에 대해서 설명해주세요

- http 메서드란 서버에게 요청의 종류에 대해 알려주기 위해 사용하는 것으로 post, get, patch, delete 등이 있습니다. 각각은 crud에 대응됩니다.

 

 

put과 patch의 차이점에 대해서 설명해주세요

- put은 리소스의 모든 부분을 업데이트하지만 patch는 리소스의 일부분을 업데이트할 때 사용합니다. 따라서 put의 경우에는 리소스의 모든 데이터를 제공해줘야 원활하게 동작하며 일반적으로 멱등하다고 할 수 있다.(멱등성은 동일한 요청을 여러 번 실행해도 리소스의 상태가 항상 동일하게 유지된다는 것을 의미합니다.)

 

 

http의 구조에 대해서 설명해주세요

- 요청과 응답은 각각 헤더와 바디로 구성되어 있으며 헤더에는 요청과 응답에 대한 정보를 나타내는 메타데이터들이 포함되어 있으며 바디에는 요청이나 응답 데이터가 들어있으며 get 요청의 경우에는 바디가 없다는 특징이 있습니다.

 

 

http 상태코드에 대해서 설명해주세요

- 응답에 대한 상태를 나타내며 100번대부터 500번때까지 각각의 그룹으로 나눠집니다. 순서대로 정보 제공, 성공, 리다이렉션, 클라이언트 에러, 서버 에러를 나타냅니다.

 

 

keep alive 기능에 대해 설명해주세요

- http 1.1부터 기본적으로 활성화되어 있는 설정으로 하나의 tcp 연결을 통해 여러 개의 http 요청과 응답을 주고받을 수 있도록 하는 기술입니다. http 1.1부터는 명시적으로 Connection: close 를 헤더에 포함하지 않는다면 해당 설정이 활성화되어 있습니다. 예를 들어 해당 설정을 활성화하는 경우 html, css, js, 이미지 파일 등을 여러 번 요청을 할 때 연결을 끊고 다시 연결하는 과정을 거치지 않고 효율적으로 통신할 수 있습니다.(쿠키와 세션과는 다른 개념임, 쿠키와 세션은 사용자의 상태를 저장하는 목적)

 

 

http의 장단점에 대해서 설명해주세요

- 무상태성과 비연결성의 특징으로 인해 불특정 다수를 대상으로 하는 서비스에 적합한 방식이지만 이에 따라 클라이언트의 상태를 유지할 수 없어서 인증을 계속해야하는 단점이 있지만 이는 쿠키와 세션으로 해결할 수 있습니다.

- 장점: 무상태성의 특징 때문에 서버를 확장하고 부하를 분산하는데 도움을 줍니다. 또한 서버의 디자인이 간단해집니다.

 

 

http와 https의 차이점은 무엇인가요?

- https는 http에 ssl(Secure Socket Layer, 인터넷을 통해 전달되는 정보를 보호하기 위해 개발한 통신 규약)이 추가된 프로토콜로 암호화 기능이 추가되었습니다. https는 클라이언트와 서버가 데이터를 암호화하여 주고받기 위해 비대칭키와 대칭키를 혼용하여 사용합니다.(대칭키를 주고 받을때만 비대칭키 방식을 사용 이후에 데이터는 대칭키 방식을 사용)

 

 

인증서와 ca는 무엇인가요?

- 인증서는 서버의 신원을 보증하는 역할을 하고 인증서를 발급해주는 기관을 ca라고 합니다. 이러한 ca들은 서버의 공개키와 정보를 ca의 비밀키로 암호화하여 인증서를 발급합니다.

 

 

쿠키와 세션에 무엇이고 각각의 장단점에 대해서 설명해주세요

- 쿠키와 세션은 http의 무상태성과 비연결성의 특징을 보안하여 상태를 유지하기 위해 사용하는 기술로 쿠키는 클라이언트쪽에 세션은 서버쪽에 데이터를 저장한다는 차이점이 있습니다. 쿠키는 속도가 빠르고 서버의 자원을 사용하지 않는다는 장점이 있지만 상대적으로 보안에 취약하다는 단점이 있고 세션의 경우 보안적인 측면은 쿠키에 비해 우수하지만 서버의 자원을 사용하기 때문에 속도가 상대적으로 느리고 서버에 부하가 간다는 단점이 있습니다. 상황에 따라서 적절하게 쿠키와 세션을 적용하는 것이 좋습니다. 세션은 브라우저를 종료하면 무조건 종료.

- 쿠키를 탈취한 후 악용할 수 있는 대표적인 보안 공격

xxs https://ko.wikipedia.org/wiki/%EC%82%AC%EC%9D%B4%ED%8A%B8_%EA%B0%84_%EC%8A%A4%ED%81%AC%EB%A6%BD%ED%8C%85

csrf 

https://ko.wikipedia.org/wiki/%EC%82%AC%EC%9D%B4%ED%8A%B8_%EA%B0%84_%EC%9A%94%EC%B2%AD_%EC%9C%84%EC%A1%B0

 

 

캐시는 무엇인가요?

- 반복적인 데이터 요청을 줄이고 웹 페이지 로딩 속도를 향상시키기 위해 사용하는 기술입니다.

 

 

www.naver.com에 접속할 때 생기는 과정에 대해 설명해주세요 

  1. 사용자가 브라우저에 URL(www.naver.com)을 입력
  2. DNS 서버에 도메인 네임으로 서버의 진짜 주소를 찾음
  3. IP 주소로 웹 서버에 TCP 3 handshake로 연결 수립
  4. 클라이언트는 웹 서버로 HTTP 요청 메시지를 보냄
  5. 웹 서버는 HTTP 응답 메시지를 보냄
  6. 도착한 HTTP 응답 메세지는 웹 페이지 데이터로 변환되고, 웹 브라우저에 의해 출력

 

 

tcp와 udp의 차이를 설명해주세요 - 신뢰성, 순서보장, 수신 여부 확인, 속도

- tcp는 연결지향 프로토콜로 3way handshaking 과정을 통해 연결을 설정하기 때문에 높은 신뢰성을 보장하고 전송 순서 또한 보장하며 수신 여부를 확인하지만 속도가 느리다는 단점이 있고 udp는 비연결지향 프로토콜로 신뢰성은 떨어지지만 속도가 빠르다는 장점이 있습니다. tcp는 신뢰성이 중요한 파일 교환에 쓰이고 udp는 실시간성이 중요한 스트리밍에 자주 사용됩니다.

 

 

3way-handshake와 4 way-handshake를 설명해주세요

- 3way-handshake란 tcp 프로토콜에서 통신하는 장치가 서로 연결이 잘되었는지 확인하는 방법이고 4way 같은 경우 장치의 연결을 해제하는 방법입니다.

 

3-way handshake를 간단히 표현하면 다음과 같다.

#1. Client -> Server : 내 말 들려?

#2. Server -> Client : 어 잘 들려! 내 말은 들려?

#3. Client -> Server : 잘 들려!

 

4-way handshake를 간단히 표현하면 다음과 같다.

#1. Client -> Server : 나는 다 보냈어! 이제 끊자!

#2. Server -> Client : 알겠어! 잠시만~

#3. Server -> Client : 나도 끊을게!

#4. Client -> Server : 알겠어!

 

 

OSI 7 layer와 각 계층에 대해 아는대로 설명해주세요.

네트워크 통신을 계층을 나누어 설명하고 표준화하는 모델입니다.

  • 7 계층(응용 계층) : 최종 사용자와 상호 작용하며, 응용 프로그램과 네트워크를 연결하는 계층(http, https, ftp 등)
  • 6 계층(표현 계층) : 데이터 형식 변환, 압축, 암호화, 데이터 표현 표준화 등을 하여 데이터 교환을 용이하게 하는 역할
  • 5 계층(세션 계층) : 컴퓨터끼리 통신을 하기 위해 세션(연결 상태)을 만드는 계층, 환경 조성 단계(tls, ssh 프로토콜)
  • 4 계층(전송 계층) : 데이터의 신뢰성, 흐름 제어, 에러 복구, 데이터 분할 및 재조립 등을 담당하며 두 대의 종단 시스템 간의 통신을 관리하는 계층 (단위 :Segment) (ex. TCP, UDP)
  • 3 계층(네트워크 계층) : 서로 다른 네트워크 간에 패킷을 목적지까지 가장 빠른 길로 전송하기 위한 계층 (단위 :Packet) (ex. Router, IP), ip의 경우 비신뢰성 비연결성이며 arp는 ip주소를 mac 주소로 변경해주는 프로토콜이다.(rarp는 반대)
  • 2 계층(데이터링크 계층) : mac주소를 참조해 장비 간 데이터 전송하는 계층 (단위 :frame = 목적지, 출발지 mac주소(헤더) + 데이터 + 트레일러(오류검출)) (ex. 이더넷, 스위치)
  • 1 계층(물리 계층) : 데이터를 전기 신호로 바꾸어주는 계층 (단위 :bit) (장비: 케이블,리피터,허브)

각 계층의 PDU(Protocol Data Unit)

전송 계층: 세그먼트(포트번호 + 데이터)

네트워크 계층: 패킷(ip주소 + 세그먼트)

데이터링크 계층: 프레임(mac주소 + 패킷 + 트레일러)

물리 계층: 비트

 

물리 계층과 데이터링크 계층은 각각 phy칩과 랜카드에 하드웨어적으로 구현되어 있으며 데이터링크 계층은 쉽게 말해 같은 네트워크에서 데이터를 신뢰성있게 주고 받을 수 있게 해주는 계층입니다. 네트워크 계층과 전송 계층은 운영체제의 커널에 구현되어 있고 나머지 응용 계층은 응용 프로그램내에 구현되어 있습니다.

 

 

💡 세션 기반 인증과 토큰 기반 인증의 차이에 대해 얘기해주세요. - 토큰의 경우 서버에서 상태를 저장하지 않기 때문에 서버의 수평적 확장에 유리하고 서버에 부하가 가지 않아서 요즘 많이 사용합니다.

세션 기반 인증은 인증 정보를 서버에 저장하지만 토큰 기반 인증 방식은 클라이언트에 저장하는 방식입니다. 세션 기반 인증의 경우 사용자가 로그인을 하면 해당 인증 정보를 서버의 세션 저장소에 저장하고, 사용자에게는 저장된 세션 정보의 식별자인 Session ID를 발급하고 이는 브라우저에 쿠키 형태로 저장됩니다. 이후 브라우저는 HTTP Cookie 헤더에 Session ID를 함께 서버로 전송합니다. 사이즈나 보안적인 측면에서는 세션 기반 인증이 더 유리하지만 서버의 확장성(수평적) 측면에서는 토큰 기반 인증이 더 유리합니다.(세션은 세션 불일치 문제가 발생한다.) 또한 서버의 부담 측면에서도 토큰 기반 인증이 유리합니다.

 

 

💡 JWT 토큰에 대해 설명해주세요.

JWT는 JSON 포맷을 이용하는 웹 토큰으로 주로 웹 애플리케이션에서 사용자 인증 및 권한 부여 관리에 사용됩니다.
JWT는 헤더(Header).내용(Payload).서명(Signature)로 구성되며 각 파트를 점(.)으로 구분합니다.

서버의 확장성에 유리(세션에 비해)


헤더(Header) : 토큰의 타입과 해싱 알고리즘(방식지정)으로 이루어져 있다.
내용(Payload) : 토큰에 사용자가 담고자 하는 정보를 담는다. 내용에는 Claim이 담겨있고, JSON(Key/Value)형태의 한 쌍으로 이루어져 있다.(발급자, 만료 시간, 서브젝트 등)
서명(Signature) : 헤더와 페이로드를 겹합한 후, 비밀 키를 사용하여 생성되고 토큰의 위변조와 신뢰할 수 있는 발급자로부터 발급되었음을 확인하는데 사용합니다.
JWT(Json Web Token) 란 무엇일까? (서버 기반 인증 / 토큰 기반 인증)


💡 대칭키, 비대칭키 암호화 방식에 대해 설명해주세요.

대칭키와 비대칭키는 양방향 암호화 방식이며,

대칭키 암호화와 복호화에 같은 암호 키를 쓰는 알고리즘입니다.
이는 중간에 누군가 암호 키를 가로채면 암호화된 정보가 유출될 수 있다는 단점이 있는데,
이런 문제를 보완한 새로운 방식이 비대칭키(공개키)입니다.

- 장점: 빠른 속도, 간단한 구현, 효율적인 암호화

- 단점: 키 관리가 어렵다.

비대칭키 암호화와 복호화할 때 키를 서로 다른 키로 사용하는 암호화 알고리즘입니다.
타인에게 절대 노출되어서는 안되는 개인키(private key)와 공개적으로 개방되어 있는 공개키(public key)를 쌍으로 이룬 형태입니다.

- 장점: 키 관리가 간단하고 더 안전함

- 단점: 속도가 느리며 대칭키에 비해 자원의 소모가 크다.

 

상황에 맞게 사용하고 둘을 혼합하여 보안성과 성능을 균형있게 유지할 수도 있다.


💡 Connection Timeout과 Read Timeout의 차이에 대해 설명해주세요.

Connection Timeout: 말그대로 클라이언트가 연결을 시도하고 연결이 설정되기까지 대기하는 시간에 제한을 두기 위한 목적입니다.

Read Timeout: 데이터를 송수신하는 동안에 데이터를 수신하는데 소요되는 시간을 제한하는 기능입니다.


💡 공인(public) IP와 사설(private) IP의 차이에 대해 설명해주세요.

  • 공인 IP: 인터넷 서비스 공급자가 제공하는 IP 주소이며 외부에 공개되어 있으며 공인 ip끼리 중복허용이 되지 않습니다.
  • 사설 ip: 로컬 네트워크 내에서 사용되며 하나의 공인 ip 주소에 매핑됩니다. 인터넷에서 직접 엑세스할 수 없습니다.

 

 

공유기와 라우터에 대해서 설명해주세요

- 라우터는 네트워크에서 데이터 패킷을 전달하는 역할을 하고 공유기는 라우터와 스위치를 하나로 통합한 장치입니다.

- 스위치는 여러 개의 네트워크 포트를 가지고 있으며, 각 포트는 연결된 디바이스와 통신합니다. 스위치(데이터링크 계층)는 이더넷 프레임(mac 주소)을 받아서 목적지 주소를 기반으로 해당 포트로 데이터를 전달합니다.

 

 

패킷이란 무엇인가요?

- 컴퓨터 네트워크에서 전달되는 데이터의 작은 조각이자 단위로 네트워크의 대역폭을 많이 차지하여 네트워크의 흐름이 원할하지 못하게 되는 상황을 방지하기 위해 사용됩니다. 

 

 

dns(domain name system)이란 무엇인가요?

- 사람이 읽기 쉬운 도메인 주소를 ip주소로 변환해주는 서비스를 말합니다. 최상위 도메인부터 서브 도메인까지 계층 구조로 이뤄져있으며 재귀적 쿼리 과정을 통해 ip주소로 변환되는 과정을 거칩니다.

 

 

프록시 서버가 필요한 이유에 대해서 설명해주세요

- 프록시 서버란 클라이언트와 서버 중간에서 중계하는 서버로 여러 장점이 있는데 클라이언트의 실제 ip 주소를 숨겨 개인정보보호와 익명성을 제공한다는 장점이 있고, 캐싱 기능을 통해 성능을 향상시키고 로드 밸런싱 기능을 하여 서버의 부하를 분산시키는 기능을 할 수 있습니다. 프록시 서버가 요청을 중간에서 먼저 수용하기 때문에 서버 측면에서의 보안 향상에도 도움이 될 수 있습니다.

 

 

rest(Representational State Transfer) api에 대해서 설명해주세요

- rest란 자원의 표현으로 구분하여 해당 자원의 상태를 주고받는 모든 것을 의미합니다. rest api란 이런 rest 기반으로 서비스 api를 구현한 것을 말합니다. http url을 통해 자원을 명시하고 http method를 통해 해당 자원에 대한 crud operation을 적용하는 것을 의미합니다.

 

 

rest api 설계 규칙

- uri에는 동사보다는 명사를, 대문자보다는 소문자를

- 적절한 http method를 활용해야 하며

- uri의 마지막에는 슬래시를 포함하지 않고 언더바 대신 대시를 이용하며 파일 확장자를 포함하지 않습니다.

 

 

cors에 대해서 설명해주세요

- 추가 http 헤더(access-control-allow-origin, access-control-allow-methods, access-control-allow-headers 등)를 사용하여 한 출처에서 실행 중인 웹 애플리케이션이 다른 출처의 자원에 접근할 수 있는 권한을 부여하도록 브라우저에게 알려주는 체제입니다.(즉, 다른 출처의 리소스에 접근 가능하게 하는 기술, 여기서 다른 출처란 프로토콜, 도메인, 포트의 조합을 의미)

- 브라우저는 기본적으로 SOP(Same Origin Policy)를 지원하여 보안을 강화합니다.

- preflight 요청은 cors를 모르는 서버를 위해 필요합니다. 만약에 cors를 모르는 서버에 요청을 보내게 되면 서버는 요청에 대한 응답을 하지만 cors를 모르기 때문에 응답 헤더에 allow-origin이 없고 브라우저는 cors 에러를 뱉게 되어 서버와 클라이언트의 입장에 차이가 생기게 됩니다.

- https://escapefromcoding.tistory.com/724

 

CORS란 무엇인가?

개요 웹 프로그래밍에서 프런트와 백엔드 작업을 하면, 한번씩 발생하는 문제가 CORS 문제입니다. 현재 하는 업무가 이런 경우는 없었지만, 개인 프로젝트 시 발생했던 문제를 기억하며 해당 문

escapefromcoding.tistory.com

 

 

lan, wan에 대해서 설명해주세요

- LAN은 근거리 통신망으로 공유기나 스위치에 의해서 디바이스들이 연결되고 같은 공인 ip를 공유하며 각각의 사설 ip는 arp에 의해 mac 주소로 변환되어 통신이 가능하게 됩니다.

- WAN은 광역 통신망을 의미하며 LAN과 LAN을 연결하고 대표적인 예시로 인터넷이 있습니다. 인터넷 서비스 제공자가 깔아둔 회선 덕분에 인터넷을 어디서든 사용할 수 있게 되었습니다.

 

 

참고 자료

https://dev-coco.tistory.com/161

 

신입 개발자 기술면접 질문 정리 - 네트워크

💡 HTTP 프로토콜에 대해 설명해주세요. HTTP(Hyper Text Transfer Protocol)이란 데이터를 주고 받기 위한 프로토콜이며, 서버/클라이언트 모델을 따릅니다. HTTP는 상태 정보를 저장하지 않는 Stateless의 특

dev-coco.tistory.com

https://hudi.blog/session-based-auth-vs-token-based-auth/

 

세션 기반 인증과 토큰 기반 인증 (feat. 인증과 인가)

인증과 인가 세션기반 인가와 토큰기반 인가에 대해 알아보기 이전에 먼저, 인증과 인가가 무엇인지 부터 알아야할 필요가 있다. 인증과 인가를 같거나 비슷한 개념이라고 생각하는 사람들이

hudi.blog