[코비] 네트워크 면접 예상질문 준비

최정윤·2023년 8월 29일
0

코비

목록 보기
11/38
post-custom-banner

1. OSI 7 계층에 대해 설명해주세요.

  • OSI 모델은 국제표준화기구(ISO)에서 개발한 모델로, 컴퓨터 네트워크 프로토콜 디자인과 통신을 계층으로 나누어 설명한 것입니다.
  • OSI 7 계층은 패킷 기반 통신으로서 각 계층의 순서와 담당하는 기술과 방식에 따라 데이터를 종단 to 종단으로 전달하며 우리가 평소에 사용하는 LTE, 5G을 이 모델로 설명할 수 있습니다.

1 계층인 물리계층은 전기, 물리 신호에 따른 계층이며 단순한 전기적 신호 전달 역할을 합니다.

단위는 Bit를 쓰며 전선, 광케이블, 무선 전파 등이 여기에 해당합니다.

2 계층인 데이터 링크 계층은 1 계층의 물리적 링크인 MAC 주소를 참조해 장비 간 데이터 전송합니다.

전송하는 데이터(비트 모음)의 헤더에 목적지 주소를 붙이며 꼬리 부분에는 오류 검출을 위한 부분이 붙습니다. 이러한 데이터 구성을 프레임(frame)이라고 합니다. 그래서 물리 계층에서 발생할 수 있는 오류를 찾고 수정하는데 필요한 기능/절차들을 제공합니다. L2 스위치 장비, 브릿지, 이더넷, ARP 등의 프로토콜/기술들이 여기에 포함됩니다.

3 계층인 네트워크 계층은 데이터가 담긴 패킷의 경로를 설정하는 계층입니다.

IP 주소를 할당하는 논리 주소 기능, IP 주소 기반을 네트워크 구분하는 라우팅 기능, 최적 경로 설정 기능이 있으며 IP, ICMP 등의 프로토콜/기술들이 포함됩니다.

4 계층인 전송 계층은 각 종단 간 데이터 전송의 전반적 조율을 담당합니다.

여기선, 세그먼트(쪼개진 데이터 유닛)를 포트 번호로 구분하여 각 응용 계층이 나눠 받도록 하는 분할 작업, 서로 다른 장비 간 각기 다른 대역폭 속도 맞추는 흐름 제어 작업, 수신 못한 세그먼트만을 재송신하는 오류제어 작업, 데이터 수신 유/무 확인을 하는 연결형 작업, 데이터 수신 유/무 확인을 안 하는 비연결형 작업의 기능이 있습니다. TCP, UDP 등의 프로토콜/기술이 포함됩니다.

5 계층인 세션 계층은 데이터가 서로 만나는 환경 조성 단계이며 인증에 따른 권한 부여를 합니다.

TLS, SSH 등의 프로토콜/기술이 포함됩니다.

6 계층인 표현 계층은 데이터를 빠르고 안전하게 전송하기 위해 데이터 압축, 암호화/복호화 단계입니다.

SSL, JPEG, MPEG 등의 프로토콜/기술이 포함됩니다.

7 계층인 응용 계층은 도착 데이터를 브라우저나 메일, 메신저 같은 수단으로 최종 사용자가 확인하는 단계로 HTTP, HTTPS, SNMP, FTP, POP3 같은 프로토콜이 포함됩니다.

  • 각 계층에서 데이터를 전송할 때 각 층마다 별도로 인식할 수 있는 헤더를 붙이게 되는데 이 과정을 캡슐화라고 하며 데이터가 전송 매체를 통해 전송된 후 헤더가 벗겨지게 되는 것을 디캡슐화라고 합니다.

  • 이 말은 각 계층마다 요청/응답의 상호작용을 하기 때문에 서버/클라이언트 관계라고 할 수 있으며 각 계층은 아래 계층의 데이터가 되는 것을 알 수 있습니다.

각 계층에서 데이터를 구분하는 PUD(Process Data Unit) 개념에 대해서 한 번 더 말씀드리면, 1 계층은 전기적 신호인 Bit, 2 계층은 MAC Frame, 3 계층은 IP Packet, 4 계층은 TCP Segment, 5~7 계층은 Application Data가 단위로 구성됩니다.

2. REST API에 대해 설명해주세요.

REST란 자원의 표현으로 구분하여 해당 자원의 상태(정보)를 주고받는 모든 것을 의미합니다.

예를 들어, DB의 학생 정보가 자원일 때, 'students'를 자원의 표현으로 정할 수 있습니다.

REST는 기본적으로 웹 기술과 HTTP 프로토콜을 활용하기 때문에 웹의 장점을 최대한 활용할 수 있는 아키텍처 스타일입니다.

REST API란 이런 REST 기반으로 서비스 API를 구현한 것입니다.

REST API은 HTTP 표준 기반이므로

  1. HTTP 지원 프로그램 언어로 클라이언트, 서버를 구현할 수 있으며,

  2. REST 기반으로 시스템을 분산해 확장성과 재사용성을 높여 유지보수 및 운용을 편리하게 합니다.

  • HTTP URL를 통해 자원을 명시하고, HTTP Method를 통해 해당 자원에 대한 CRUD Operation을 적용하는 것을 의미합니다.
  • REST는 HTTP 프로토콜 인프라를 그대로 사용하므로 REST API 사용을 위한 별도 인프라 구축이 필요 없으며,
  • REST API 메시지가 의도하는 바를 명확하게 나타내어 쉽게 의도를 파악할 수 있습니다.
  • 하지만, 표준이 존재하지 않으며 사용할 수 있는 메서드가 4가지 밖에 없다는 등의 단점이 존재합니다.
  • REST API에는 설계 규칙이 있으며, 흔히 REST API를 제공하는 웹 서비스를 'RESTful'하다고 합니다.

URL은 정보의 자원을 표현해야 하는데, 리소스는 동사보다는 명사를, 대문자보다는 소문자를 사용해야 하는 내용이 있고
자원에 대한 행위는 HTTP Method(get, put, post, delete 등)로 표현하는데, URL엔 HTTP Method, 동사 표현이 들어가면 안 되며, 경로 부분 중 변하는 부분은 유일한 값으로 대체해야 합니다.
슬래시 구분자는 계층 관계를 나타내며 마지막 문자로 슬래시를 포함하지 않습니다.
불가피하게 경로가 길어지면 하이픈을 사용하여 가독성을 높입니다.
URL 경로엔 소문자를 사용합니다.
파일 확장자는 포함하지 않습니다.

RESTful하지 못하는 경우로, CRUD 기능을 모두 POST로만 처리하는 API와 route에 resource, id 외의 정보가 들어간 경우가 있습니다.

3. HTTP와 HTTPS의 차이는 무엇인가요

HTTP는 암호화가 추가되지 않았기 때문에 보안에 취약한 반면, HTTPS는 안전하게 데이터를 주고받을 수 있다. 하지만 HTTPS를 이용하면 암호화/복호화의 과정이 필요하기 때문에 HTTP보다 속도가 느리다. (물론 오늘날에는 거의 차이를 못느낄 정도이다.) 또한 HTTPS는 인증서를 발급하고 유지하기 위한 추가 비용이 발생하다.

그렇다면 언제 HTTP를 쓰고, 언제 HTTPS를 쓰는 것이 좋겠는가?

개인 정보와 같은 민감한 데이터를 주고 받아야 한다면 HTTPS를 이용해야 하지만, 노출이 되어도 괜찮은 단순한 정보 조회 등 만을 처리하고 있다면 HTTP를 이용하면 된다.

4. 쿠키와 세션의 차이점은 무엇인가요

쿠키는 클라이언트에 저장되지만, 세션은 서버에 저장된다.
세션은 서버에 저장되므로 서버의 자원을 사용한다.
반면 쿠키는 클라이언트에 저장되므로 서버의 자원을 사용하지 않는다는 이점이 있다.
서버에 요청을 보내는 사용자가 많을 경우 세션은 부하가 심할 수 있다.
보안면에서 세션이 더 우수하다. 쿠키는 정보를 직접 저장하고 요청을 보낼 수 있다. 만약 쿠키에 사용자의 주민번호 같은 민감한 정보를 그대로 담아 HTTP 요청을 보낸다고 하자. 이때 중간에 정보를 스니핑 당할 수도 있다.
세션은 쿠키를 이용해 쿠키에 세션 ID만 저장하고 서버에서 세션을 처리하기 때문에 비교적 보안성이 좋다.
쿠키는 만료시간 동안 파일로 저장되므로 브라우저를 종료해도 정보가 남아있다.
세션은 브라우저가 종료되면 만료시간에 상관없이 삭제된다.

5. TCP와 UDP의 차이점에 대해 설명해주세요

TCP는 연속성보다 신뢰성 있는 전송이 중요할 때 사용되는 프로토콜이며,

UDP는 TCP보다 빠르고 네트워크 부하가 적다는 장점이 있지만, 신뢰성 있는 데이터 전송을 보장하지는 않는다.

그렇기 때문에 신뢰성보다는 연속성이 중요한 실시간 스트리밍과 같은 서비스에 자주 사용된다.

6. TCP handshake 에서 연결 성립과 연결 해제의 과정에 대해 설명해주세요

3-Way Handshake란?

TCP/IP 프로토콜을 이용해서 통신을 하는 응용프로그램이 데이터를 전송하기 전에 먼저 정확한 전송을 보장하기 위해 상대방 컴퓨터와 사전에 세션을 수립하는 과정을 말한다.

Step1 [Client -> SYN -> Server]

Client가 Server에게 접속을 요청하는 SYN플래그를 보낸다.

Step2. [Server -> SYN + ACK -> Client ]

Server는 Listen상태에서 SYN이 들어온 것을 확인하고 SYN_RECV상태로 바뀌어 SYN + ACK플래그를 Client에게 전송한다. 그 후 Server는 다시 ACK 플래그를 받기 위해 대기상태로 변경된다.

Step3. [Client -> ACK -> Server]

SYN + ACK 상태를 확인한 Client는 서버에게 ACK를 보내고 연결 성립(Established)이 된다.

4-Way Handshake란?

3way handshake가 연결확립을 위해 진행했다면 4way handshake는 세션을 종료하기 위해 수행되는 절차를 말한다.

Step1 [Client -> FIN -> Server]

Client가 연결을 종료하겠다는 FIN플래그를 전송한다. 보낸 후에 FIN-WAIT-1 상태로 변한다.

Step2 [Server-> ACK -> Client]

FIN 플래그를 받은 Server는 확인메세지인 ACK를 Client에게 보내준다. 그 후 CLOSE-WAIT상태로 변한다. Client도 마찬가지로 Server에서 종료될 준비가 됐다는 FIN을 받기위해 FIN-WAIT-2 상태가 된다.

Step3 [Server -> FIN -> Client]

Close준비가 다 된 후 Server는 Client에게 FIN 플래그를 전송한다.

Step4 [Client -> ACK-> Server]

Client는 해지 준비가 되었다는 정상응답인 ACK를 Server에게 보내준다. 이 때, Client는 TIME-WAIT 상태로 변경된다.

[참고링크]

profile
개발 기록장
post-custom-banner

0개의 댓글