interview(2)

nellcome·2023년 2월 27일
0

인터뷰

목록 보기
3/5

Version 2.0.0 (23.04.23)

1. TCP/IP의 각 계층을 설명해주세요.

  • TCP/IP는 인터넷에서 표준으로 사용되고 있는 네트워크 프로토콜을 의미한다.
  • TCP/IP는 크게 5개의 계층으로 구성된다.
    • 애플리케이션 계층(Application Layer, L5)
      • 네트워크 애플리케이션과 애플리케이션 계층 프로토콜이 있는 곳이다.
      • HTTP, SMTP, FTP와 같은 많은 프로토콜을 포함한다.
      • 도메인 주소를 32비트 네트워크 주소로 변환하는 기능을 위한 DNS를 지원한다.
      • 애플리케이션 계층 패킷을 메시지라고 한다.
    • 트랜스포트 계층(Transport Layer, L4)
      • 네트워크 계층에서 보내온 데이터 정렬, 오류 정정 등을 수행하고 신뢰할 수 있는 통신을 확보
      • TCP/UDP 같은 프로토콜이 이 계층에 위치
      • 트랜스포트 계층 패킷을 세그먼트라고 한다.
    • 네트워크 계층(Network Layer/IP Layer, L3)
      • 다른 네트워크에 있는 목적지에 데이터를 전송하는 역할을 수행
      • 이를 위해, 라우터 장비와 IP 프로토콜, 라우팅 프로토콜이 사용된다.
      • 라우터는 다른 네트워크와 통신하기 위해 경로를 설정하고 논리주소를 결정하는 역할
      • 네트워크 계층의 패킷을 데이터그램라고 한다.
    • 링크 계층(Data Link Layer, L2)
      • 네트워크 기기 간 데이터 전송 및 물리 주소를 결정하는 역할을 수행
      • LAN에서 데이터를 정상적으로 주고받기 위해 필요한 계층이며 일반적으로 이더넷 프로토콜이 사용되며, 스위치같은 장치가 사용된다.
      • 링크 계층 패킷을 프레임이라 한다.
    • 물리 계층(Physical Layer, L1)
      • 물리적인 연결과 전기 신호 변환/제어를 담당하여, 이진 데이터를 전기 신호로 변환한다. 또한 컴퓨터와 네트워크 장비를 물리적으로 연결하여, 하나의 노드에서 다른 노드로 비트를 이동시키는 역할을 수행
      • 물리 계층의 프로토콜들은 링크에 의존한다.

2. OSI 7계층과 TCP/IP 계층의 차이

  • OSI 7계층은 TCP/IP 계층의 애플리케이션 계층을 더 세분화한 것이다.
  • OSI 7계층의 작동 순서
    • 이메일을 보낸다고 가정할 때 응용 계층 -> ... -> 물리 계층으로 헤더를 붙여 넘겨준다. ( Encapsulation)
    • 이메일을 받으면 물리 계층 -> ... -> 응용 계층 순으로 헤더를 떼면서 넘겨준다. (Decapsulation)

3. Frame, Packet, Segment, Datagram을 비교해주세요.

  • Packet: 컴퓨터 간에 데이터를 주고받을 때, 네트워크를 통해 전송되는 데이터 조각
  • Segment: Transport 계층(L4)에서 신뢰할 수 있는 통신을 구현하기 위한 헤더를 데이터(L5 계층 데이터)에 붙이는데, 이렇게 만들어진 패킷을 세그먼트라고 한다.
  • Datagram: Network 계층(L3)에서 다른 네트워크와 통신하기 위한 헤더를 세그먼트(L4 계층 데이터)에 붙인 것을 데이터그램, 데이터 세그먼트라고 부른다.
  • Frame: 데이터 링크 계층(L2)에서 물리적인 통신 채널을 열기 위해 패킷에 헤더와 트레일러를 붙인다. 트레일러는 데이터를 전달할 때 데이터 끝 부분에 붙이는 정보로, 주로 에러 검출에 사용된다.

왜 패킷을 잘라서 보낼까?

많은 데이터를 한번에 보내게 되면, 데이터 손실의 가능성이 있으며, 대역폭을 너무 많이 차지하게 되므로, 패킷의 흐름을 원활히 조절하기 위함

소켓, 포트, 패킷

  • Port : 프로세스를 식별하기 위해, 호스트 내부적으로 프로세스가 할당받는 고유한 값, 서로 다른 프로세스가 같은 포트 넘버를 가질 수 있지만 같은 소켓을 사용하지는 못한다.
    • 추가 설명 : "논리적인 접속장소"이며, 특히 인터넷 프로토콜인 TCP/IP를 사용할 때에는 클라이언트 프로그램이 네트워크 상의 특정 서버 프로그램을 지정하는 방법으로 사용된다.
    • 하나의 컴퓨터에는 여러 개의 서버가 실행될 수 있다. 컴퓨터에 여러 개의 서버가 실행되고 있다면, 어느 서버에 접속해야 하는지 컴퓨터에게 알려주어야 한다. 이때 사용되는 것이 포트 번호이다.
  • Socket : 프로세스로부터 네트워크로 데이터를 전달하는 출입구 역할을 한다.

4. TCP와 UDP의 차이를 설명해주세요.

TCP와 UDP는 모두 Transport 계층의 프로토콜이다. 공통적으로 가진 특징은 다음과 같다.
1. 트랜스포트 다중화/역다중화 기능
2. 무결성 검사

  • UDP
    • 위의 가장 기본적인 두가지 기능만을 제공한다.
    • 비신뢰적인 서비스로서, 프로세스에 의해서 전송된 데이터가 손상되지 않은채로 목적지에 도착하는 것을 보장하지 않는다.
    • 비연결형 서비스로 지연이 없고 유지해야하는 정보가 없기 때문에 더 많은 클라이언트를 수용할 수 있다.
    • 신뢰적이지 않기에, 몇몇의 정보를 잃어버릴 수 있다.
  • TCP
    • 기본적인 두 기능도 제공하면서, 신뢰적인 데이터 전달 기능, 연결지향형 서비스, 혼잡제어 등의 기능을 제공

UDP는 속도 증가와 지연 감소를 위해서 많이 사용되고, TCP는 신뢰성이 중요한 경우에 사용된다.
예로들어, UDP는 동영상 전송과 같이, 몇 프레임 전도 손실되어도 괜찮은 데이터 전송에
TCP는 몇몇의 정보도 손실되어서는 안되는 애플리케이션에 이용된다.

5. TCP와 UDP의 헤더를 비교

  • UDP Header : 8bytes
  • TCP Header : 20bytes(무옵션, 옵션 포함시 최대 60bytes)
    • Sequence number, ACKnowledgement number 등이 있다.

6. TCP의 3-way-handshake와 4-way-handshake를 비교 설명해주세요

handshake란, 호스트 간 데이터를 전송하기 전에 먼저 정확한 전송을 보장하기 위해 상대방 컴퓨터와 사전에 세션을 수립하는 과정

3-way handshake : TCP의 연결을 초기화 할 때 사용한다. 양쪽 모두 데이터를 전송할 준비가 되었다는 것을 보장
1. 접속 요청 프로세스가 연결 요청 메세지를 전송한다. (SYN)
2. 접속 요청을 받은 프로세스가 요청을 수락한다는 확인 메세지를 보낸다. (ACK) 동시에 접속 요청을 받은 프로세스도 접속 요청을 한 프로세스에 연결 요청을 보낸다. (SYN) -> (SYN+ACK)
3. 마지막으로 접속 요청 프로세스가 수락 확인을 보내 연결을 맺는다. (ACK)

2-way가 아닌 3-way인 이유 : SYN에 대한 ACK를 보내기 위해

4-way handshake : 세션을 종료하기 위해 수행되는 절차
1. 클라이언트가 연결을 종료하겠다는 FIN 플래그를 전송
2. 서버는 일단 확인메세지를 보내고 자신의 통신이 끝날 때까지 기다림, 이 상태가 TIME_WAIT 상태이다.
3. 서버가 통신이 끝났으면 연결이 종료되었다고 클라이언트에게 FIN 플래그를 전송
4. 클라이언트는 확인했다는 메세지를 보낸다. (ACK)

TIME_WAIT 상태로 대기하는 이유는, 세션 종료 후, 혹시나 네트워크에 아직 라이브 패킷이 존재할 수 있기에

7. TCP의 연결 설정 과정(3단계)과 연결 종료 과정(4단계)이 단계가 차이나는 이유가 무엇인가요?

연결 설정 과정과 다르게, 연결 종료 과정에서 고려해야하는 경우가 존재하는데, 이는 전송중인 데이터에 대한 경우이다. 클라이언트는 아직 서버로부터 못 받은 데이터가 있을 것을 대비하여 일정시간동안 세션을 남긴다(TIME_WAIT). 모든 데이터를 다 보내서 더 이상 보낼 데이터가 없다는 의미의(FIN)을 받으면, 바로 연결을 종료한다.

10. HTTP와 HTTPS에 대해서 설명하고 차이점에 대해 설명해주세요.

HTTP : 서버/클라이언트 모델을 따라 데이터를 주고받기 위한 프로토콜이다. 즉, HTTP는 인터넷에서 하이퍼텍스트를 교환하기 위한 통신 규약, 80번 포트를 사용하고 있다.
HTTPS : HTTP에 데이터 암호화가 추가된 프로토콜. 443번 포트를 사용하며, 공개키 암호화를 지원하고 있다.

13. CORS가 무엇인가요?

교차 출처 리소스 공유(Cross-Origin Resource Sharing, CORS)는 추가 HTTP 헤더를 사용하여, 한 출처에서 실행 중인 웹 애플리케이션이 다른 출처의 선택한 자원에 접근할 수 있는 권한을 부여하도록 브라우저에 알려주는 체제

14. HTTP GET과 POST 메서드를 비교/설명

GET

클라이언트에서 서버로 정보를 요청하기 위해 사용되는 메서드이다.

  • query string : GET을 통한 요청은 URL 주소 끝에 파라미터로 포함되어 전송되며, 이 부분을 쿼리 스트링이라고 부른다.
  • URL 끝에 ?를 붙이고 그 다음 변수명1=값1&변수명2=값2... 형식으로 사용할 수 있다.

POST

POST는 클라이언트에서 서버로 리소스를 생성하거나 업데이트하기 위해 데이터를 보낼 때 사용되는 메서드이다.
POST는 전송할 데이터를 HTTP 메세지 body 부분에 담아서 서버로 보낸다.
POST로 데이터를 전송할 때 길이 제한이 따로 없어 용량이 큰 데이터를 보낼 때 사용하거나 GET처럼 데이터가 외부적으로 들어나지 않아 보안이 필요한 부분에 많이 사용된다.
POST를 통한 데이터 전송은 보통 HTML form을 통해 서버로 전송된다.

GETPOST의 차이점

  • 사용목적 : GET은 서버의 리소스에서 데이터를 요청할 때, POST는 서버의 리소스를 새로 생성하거나 업데이트할 때 사용한다.
  • body 유무 : GET은 HTTP 메세지에 body가 없지만 POST는 body에 데이터를 담아 보내기에 존재한다.
  • 멱등성 : GET 요청은 멱등이며, POST는 멱등이 아니다.

15. 쿠키와 세션을 설명해주세요

쿠키

쿠키는 클라이언트 로컬에 저장되는 키와 값이 들어있는 작은 데이터 파일
사용자 인증이 유효한 시간을 명시할 수 있으며, 유효 시간이 정해지면 브라우저가 종료되어도 인증이 유지

세션

세션은 쿠키 기반이지만 사용자 정보 파일을 서버 측에서 관리한다.
웹 브라우저가 서버에 접속해서 브라우저를 종료할 때까지 인증 상태를 유지한다.

쿠키와 세션의 차이점

  • 자원을 사용하는 장소가 다르다.
    • 쿠키 : 로컬
    • 세션 : 서버
  • 쿠키는 로컬에 저장되기에 변질되거나 request에서 스니핑 당할 수 있기에 보안에 취약, 세션은 쿠키를 이용해서 세션 ID만 저장하고 서버에서 처리하기에 비교적 보안이 좋음
  • 쿠키는 만료시간이 존재하지만 파일로 저장되기에 브라우저를 종료해도 정보가 남는다. 하지만 세션은 브라우저가 종료되면 만료시간에 관계없이 삭제
  • 쿠키에 정보가 있기에 서버에 요청 시 속도가 빠르다. 반면 세션은 정보가 서버에 있기에 비교적 느림

세션은 서버의 자원을 사용하기에 서버의 메모리에 과부화를 주거나 속도가 느려질 수 있기에 쿠키와 함께 사용

16. DNS가 무엇인가요?

모든 네트워크 통신에는 고유의 주소, 즉 IP 주소가 필요하다. 이 때 통신을 주고받는 주체가 되는 네트워크에 연결되어 있는 모든 장치들을 host라고 한다. IP는 사람이 이해하고 기억하기 어렵기에 이를 위해서 각 IP에 부여한 이름이 도메인이다.

DNS(Domain Name Server or Service)는 숫자로 이루어진 IP 주소와 일정한 형식을 가진 도메인을 서로 매핑 시키고 정보를 가지고 있다.

17. REST와 RESTful의 개념을 설명하고 차이를 말해주세요.

RESTRepresentation State Transfer의 약자로, URI로 자원(데이터베이스)을 명시하고 HTTP 메서드를 통해 해당 자원에 대한 CRUD(Create, Read, Update, Delete) 연산을 적용하는 것

RESTful은 REST 아키텍처로 구현된 웹 서비스를 나타내기 위한 용어로, "REST API를 제공하는 웹 서비스는 RESTful하다"처럼 사용된다.

  • HTTP 메서드 종류
    • GET : 데이터를 조회한다.
    • POST : 데이터를 등록한다.
    • DELETE : 데이터를 삭제한다.
    • PUT : 데이터를 새 정보로 통째로 업데이트할 때 사용된다.
    • PATCH : 데이터의 특정 필드를 수정할 때 사용한다.
  • URI는 Uniform Resource Identifier의 약자로, 자원을 식별자로 취급하여 나타내는 주소

18. 소켓이 무엇인가요?

소켓이란 ...

20. IPv4와 IPv6의 차이점을 설명해주세요

ㅁㄴㅇㄹ

21. MAC Address가 무엇인가요?

MAC 주소는 Data Link Layer에서 통신을 위해 네트워크 인터페이스에 할당한 식별자를 말한다. 즉, 모든 네트워크 장비는 자신의 MAC 주소가 있으며 주소는 장비 제조업체가 할당한다. MAC 주소는 물리적 주소라고 불리기도 한다.

22. 라우터와 스위치, 허브의 차이를 설명해주세요.

라우터는 Network Layer 3계층 장비로 네트워크 사이를 연결하는 장치이다. 최종 도착지의 네트워크에 도착할 수 있도록 적절한 경로를 설정하여 패킷을 전송한다.
스위치는 Data Link Layer 2계층 장비로 네트워크 내에서 패킷을 전송하는 장치를 말한다. 스위치로 요청이 들어오면 IP 주소에 대응되는 MAC 주소를 찾아 해당 MAC 주소로 패킷을 전송한다. 만약 대응되는 MAC 주소가 없다면 허브처럼 브로드캐스트 방식으로 패킷을 전송하고 IP 주소와 MAC 주소를 대응시킨 테이블을 갱신한다.
허브는 Physical Layer 1계층 장비로 여러 기기를 연결하여 네트워크를 만들어주는 장치이다. 패킷을 받으면 연결된 모든 기기에 패킷을 전송한다.

23. SMTP가 무엇인가요?

SMTP(Simple Mail Transfer Protocol)인터넷에서 이메일을 보내기 위해 사용하는 TCP/IP 프로토콜을 말한다.

24. 노트북으로 구글에 접속할 때 요청을 받기까지의 과정

ㅁㄴㅇㄹ

26. subnet mask에 대하여 설명해주세요.

IPv4의 경우 2322^{32}의 숫자로 주소를 표현하고, 이는 한정된 자원이기 때문에 효율적으로 노드에 주소를 할당하는게 중요하다. 이를 위해 IP를 쪼개는, 네트워크 파트 + 호스트 파트로 구성하는 서브네팅을 활용한다.

효율적인 주소 관리를 위해 내부적으로 호스트 파트를 새로운 네트워크 파트와 호스트 파트로 나눌 수 있다. 이 때 서브넷 마스크를 활용할 수 있다.

만약 C 클래스인 192.12.16.1 IP, 255.255.255.0 서브넷 마스크(호스트 파트)가 할당되었을 때 기존의 서브넷 마스크인 마지막 8 비트를 1111 0000 으로 바꾼다면, 4 비트만큼의 네트워크 파트 (그룹), 4 비트만큼의 호스트 (멤버) 를 할당할 수 있다. 이렇게 된다면 동일 네트워크 간에는 커뮤니케이션이 자유롭지만, 다른 네트워크 간에는 라우터를 거쳐야 커뮤니케이션을 할 수 있다.

27. Data encapsulation이란?

Data encapsulation은 데이터를 보내는 송신측에서 데이터를 생성하는 방법으로, 네트워크 계층에서 상위 계층에서부터 하위 계층으로 내려올 때마다 각 계층의 헤더를 붙여 보내는 데이터로 만들어진다.

반대로 데이터를 받는 수신측에서는 데이터를 받은 후에 계층을 거슬러 올라가면서 헤더를 떼내며 데이터를 파악한다.

28. DHCP를 설명해주세요

DHCP(Dynamic Host Configuration Protocol)은 동적으로 IP 주소나 기타 정보들을 관리해주는 프로토콜이다.
DHCP는 UDP를 사용하여 클라이언트/서버 구조로 통신한다.
1. DHCP discover : 컴퓨터가 동일 서브넷으로 브로드캐스팅으로 DHCP 서버를 찾는다.
2. DHCP offer : DHCP가 사용가능한 IP 주소의 리스트를 컴퓨터에게 전달한다.
3. DHCP request : 컴퓨터가 리스트 중 하나의 IP 주소를 선택하여 서버에 전달한다
4. DHCP ack : DHCP가 컴퓨터에게 해당 IP 주소를 허락/거절하는 메세지를 전달한다.

장점

  • DHCP 서버에서 자동으로 IP를 관리해주며, IP에 변동이 있을 때 DHCP에만 정보를 입력하면 된다.
  • 사용중인 컴퓨터에 대해서만 할당하므로 효율적

단점

  • DHCP 서버에 의존하기 때문에 서버가 다운되는 경우 모든 컴퓨터에서 인터넷을 할 수 없다.
  • 초기 DHCP 세팅 시간 및 트래픽이 크다.
  • 단말 컴퓨터를 끌 경우, 완전히 주소가 release 될 때 까지 해당 IP를 사용할 수 없다.

30. 이더넷이 무엇인가요?

이더넷은 근거리 유선 통신을 위해 사용되는 네트워킹 방법으로 CSMA/CD 프로토콜을 사용한다.

31. client와 server의 차이점을 설명해주세요

네트워크 상에서 요청을 보내는 대상을 client, 요청에 응답하는 대상을 server라고 한다. client와 server는 고정되지 않고 요청에 따라 바뀐다.

32. delay, timing(jitter), throughput 차이를 설명해주세요

위 세가지 개념은 모두 네트워크 성능과 관련되어 있다.

delay

하나의 데이터 패킷이 출발 지점에서 도착 지점에 도착한 시간을 의미한다.

timing(jitter)

delay의 변동을 의미한다. 같은 스위치가 아닌 경우 패킷마다 대기 시간이 달라지므로 지터가 생긴다.

throughput

지정된 시간동안 실제로 전송된 정보량을 의미한다.
데이터가 지나갈 수 있는 통로의 크기인 bandwith와는 다른 개념, bandwith가 크더라도 전송된 정보량이 적으면 throughput이 적은 것

LAN vs WAN

  • LAN(Local Area Network) : 랜은 가정이나 사무실 등 하나의 거점 내부를 연결하는 네트워크
    • 유선 랜 규격으로 대부분 이더넷을 사용한다.
    • 이러한 유선 랜을 스위치를 통해 묶는다.
      • 단순히 유선 랜을 묶는 것을 L2 스위치, 네트워크와 네트워크를 연결하는 기능이 있으면 L3 스위치, 부하 분산 및 애플리케이션에 맞게 통신을 제어할 수 있는 고급 스위치를 L4 스위치나 L7 스위치로 부른다.
  • WAN(Wide Area Network) : 왠은 거점과 거점을 연결하는 네트워크
    • SKT, KT 등 통신 사업자가 제공하는 통신 회선 서비스를 이용하는 네트워크
    • 복수 네트워크를 서로 연결하는 것을 인터네트워킹이라고 한다.
      • 거점 A와 거점 B의 랜을 WAN 회선으로 연결하는 것도 인터네트워킹의 일종
      • 장점은 불필요한 통신을 네트워크 전체로 확산시키지 않고 고장이 나도 영향이 광범위하게 퍼지지 않는다. 또한 개별 네트워크를 각 조직의 방침에 따라 관리할 수 있다.
    • 왠으로 연결된 네트워크 전체가 인터넷이다.

NAT

NAT(Network Address Translation)은 IP 주소를 변환하는 기술이다.
IP 주소에는 프라이빗 IP 주소와 글로벌 IP 주소가 있다.
그 중 랜 내에서 사용되는 것이 프라이빗 IP 주소이며, 인터넷에서 사용되는 것이 글로벌 IP 주소이다.
여기서 프라이빗 IP 주소를 가진 컴퓨터로 인터넷 상의 글로벌 IP 주소를 가진 서버에 접속한다고 가정할 때 프라이빗 IP 상태로는 인터넷상에서 라우팅할 수 없다. 그렇기에 라우터가 프라이빗 IP를 글로벌 IP 주소로 변환해주어야만 데이터를 전송할 수 있다. 이가 NAT이다.

URI vs URL

URL은 URI의 서브셋이다.

URI는 특정 리소스를 식별하는 통합 자원 식별자
URL은 웹 주소로 불리며, 컴퓨터 네트워크 상에서 리소스가 어디에 있는지 알려주기 위한 규약

로드밸런서는 트래픽을 받아 여러 대의 서버에 분산시키는 하드웨어 또는 소프트웨어이다.
부하 분산에는 L4 로드밸런서와 L7 로드밸런서가 사용되며,이는 L4 부터 Port를 다룰 수 있기 때문이다.

L4 로드밸런서 : IP,Port를 기준으로 스케줄링 알고리즘을 통해 부하를 분산한다.
클라이언트에서 로드밸런서(DNS)로 요청을 보냈을 때 최적의 서버로 요청을 전송하고 결과를 클라이언트에게 줍니다. 즉, 요청하는 서비스의 종류와 상관 없이 공장을 여러 개 돌리는 것입니다.

L7 로드밸런서 : L7 위에서 동작하기에 IP,Port 이외에도 URI, Payload, Http Header, Cookie 등의 내용을 기준으로 부하를 분산한다. 그래서 콘텐츠 기반 스위칭이라고도 한다.
L4 로드밸런서가 단지 부하를 분산한다면, L7 로드밸런서는 요청의 세부적인 사항을 두고 결제만 담당하는 서버, 회원가입만을 담당하는 서버 등으로 분리해서 가볍고 작은 단위로 여러 개의 서비스를 운영하고 요청을 각각의 서버에 분산할 수 있는 것입니다.


브로드캐스팅 : 송신 호스트가 전송한 데이터가 네트워크에 연결된 모든 호스트에 전송되는 방식
발췌 : ai-tech-interview

profile
AI 새싹

0개의 댓글