[Tech Interview] 네트워크(Network)

Dodam·2023년 8월 5일
0

[기술 면접]

목록 보기
2/5
post-thumbnail

네트워크란?

네트워크의 정의

  • 네트워크는 Net과 Work의 합성어로 컴퓨터와 같은 노드들이 통신 기술을 통해 그물망처럼 연결되어 통신을 하는 형태
  • 데이터 및 리소스를 송신, 교환 또는 공유하기 위한 목적으로 케이블(유선) 또는 WiFi(무선)로 연결된 2개 이상의 컴퓨터로 구성

주요 용어

  • ip 주소: 통신을 위해 인터넷 프로토콜을 사용하는 네트워크에 연결된 모든 디바이스에 할당된 고유 번호
  • 노드: 데이터를 송신, 수신, 작성 또는 저장할 수 있는 네트워크 내의 연결 지점.
    ex) 컴퓨터, 프린터, 모뎀, 브릿지, 스위치
  • 라우터: 네트워크 간에 데이터 패킷에 포함된 정보를 전송하는 물리적 또는 가상 디바이스. 패킷 교환기라고도 함
  • 라우팅: 라우터가 패킷을 네트워크에서 목적지까지 보내는 최적의 경로를 선택하는 과정
  • 스위치: 다른 디바이스를 연결하고 네트워크 내의 노드 간 통신을 관리함으로써 데이터 패킷이 최종 목적지에 도달하도록 보장하는 디바이스
  • 포트: 네트워크 디바이스 간의 특정 연결 식별
  • 프로토콜: 컴퓨터가 다른 컴퓨터와 통신하는데 필요한 장비(네트워크 장비 등)가 서로 통신을 위해 정해놓은 통신규약
  • 패킷 교환: 데이터를 일괄적으로 한 번에 보내지 않고 여럿으로 분할해서 송신하는 것

네트워크의 장단점

  • 장점
    • 네트워크 데이터 통신을 통해 방대한 자료를 공유할 수 있음
    • 사진, 음악, 영상 등의 디지털 미디어를 볼 수 있음
    • 프로세스 분배를 통한 성능 향상
  • 단점
    • 바이러스나 악성코드로 인한 해킹으로 개인정보 유출 피해, 보안상의 문제
    • 데이터 변조가 가능

네트워크의 종류

  • WAN(Wide Area Network): 광대역 네트워크
    • 지역 간 또는 대륙간의 넓은 지역의 컴퓨터를 연결
    • 인터넷은 전 세계 수십억 대의 컴퓨터를 연결하는 가장 큰 WAN
  • MAN(Metropolitan Area Network): 대도시 영역 네트워크
    • 일반적으로 도시 및 정부기관이 소유, 관리함
  • LAN(Local Area Network): 근거리 영역 네트워크
    • 상대적으로 짧은 거리에 있는 컴퓨터를 연결
    • ex) 사무실, 학원, 병원의 모든 컴퓨터를 연결 가능
  • PAN(Personal Area Network): 가장 작은 규모의 네트워크, 개인 네트워크
    • 약 5m 전후의 인접 통신
    • ex) 아이폰과 맥에서 정보를 공유하는 형태
  • 추가적인 네트워크 종류로는 WLAN, CAN, SAN, GAN, VPN, ISDN, Intranet, Extranet 등으로 분류

네트워크의 회선구성 방식

  • 포인트 투 포인트(Point-To-Point) 방식: 중앙 컴퓨터와 단말기를 일대일로 연결하여 언제든지 데이터 전송이 가능
  • 멀티 드롭(Multi-Drop) 방식: 멀티 포인트(Multi-Point) 방식이라고도 하며, 다수의 단말기들을 한 개의 통신 회선에 연결
  • 회선 다중 방식: 여러 대의 단말기들을 다중화 장치를 통해 중앙 컴퓨터와 연결하는 방식

네트워크의 데이터 교환 방식

  • 회선 교환 방식: 통신을 원하는 두 지점을 교환기를 이용하여 물리적으로 접속시키는 방법
  • 공간 분할 교환 방식: 기계식 접점과 전자교환기의 전자식 접점 등을 이용하여 교환을 수행하는 방식
  • 시분할 교환 방식: 전자부품이 갖는 고속성과 디지털 교환 기술을 사용하여 다수의 디지털 신호를 시분할적으로 동작시켜 다중화하는 방식

네트워크 통신 방식

  • 유니 캐스트: 네트워크에 다수의 대상이 있을 때, 그 중 특성 대상이랑만 1:1 통신하는 방법
  • 멀티 캐스트: 네트워크에 다수의 대상이 있을 때, 그 중 특정 대상들이랑만 1:N 통신하는 방법
  • 브로드 캐스트: 네트워크에 다수의 대상이 있을 때, 그 모든 대상과 통신하는 방법

OSI 7계층 (Open System Interconnection 7 Layer)

OSI7 계층이란? (Open System Interconnection)

  • 네트워크 프로토콜이 통신하는 구조를 7개의 계층으로 분리하여 각 계층 간 상호 작동하는 방식을 정해 놓은 것
  • 개방된 시스템, 시스템 간의 상호 연결성을 부여하는 표준

계층별 특징

Layer 1: 물리 계층(Physical layer)

  • 전기, 기계적인 신호를 주고 받는 역할을 하는 계층
  • 디지털에서 아날로그 혹은 그 반대로 신호를 변환
  • OSI 모델에서 가장 복잡한 계층
  • 전송 단위: 비트(Bit)
  • 대표적인 장비: 통신 케이블, 허브, 리피터, 어댑터 등

Layer 2: 데이터링크 계층(Data link layer)

  • 물리적인 연결을 통해 인접한 두 장치 간의 신뢰성 있는 정보 전송을 담당하는 계층
  • 에러 검출, 재전송, 흐름 제어 역할을 함
  • Point-To-Point 전송
  • MAC 주소를 통해 통신
  • 전송 단위: 프레임(Frame)
  • 대표적인 장비: 스위치, 브릿지, 이더넷 등

Layer 3: 네트워크 계층(Network layer)

  • 종단 간 주소(IP)를 정하고 경로(Route)를 선택하고 패킷(Packet)을 전달하는 계층
  • End-To-End 혹은 Host-To-Host 전송
  • 라우팅 기능을 맡고 있으며, 목적지까지의 최적경로 알고리즘을 사용
  • 전송 단위: 패킷(Packet)
  • 대표적인 장비: 라우터, L3 스위치, IP 공유기

Layer 4: 전송 계층(Transport layer)

  • 종단 간 신뢰성 있고 정확한 데이터 전송을 담당하는 계층
  • 신뢰성 있고 효율적인 데이터 전송을 위해 오류 검출, 복구, 흐름 제어, 중복 검사 등을 수행
  • 데이터 전송을 위해 포트번호 사용
  • 전송 단위: TCP-세그먼트(Segment), UDP-데이타그램(Datagram)
  • 방화벽이나 프록시 서버가 여기에 해당

Layer 5: 세션 계층(Session layer)

  • 통시 장치 간의 상호작용 및 동기화를 제공하는 계층
  • TCP/IP 세션을 만들고 없애는 역할
  • 통신을 하기 위한 세션을 확립, 유지, 중단하는 역할
  • 연결 세션에서 데이터 교환과 에러 발생 시 복구 관리

Layer 6: 표현 계층(Presentation layer)

  • 데이터를 어떻게 표현할지를 정하는 역할을 하는 계층
  • 데이터 인코딩/디코딩, 압축/해제, 암호화/복호화 수행

Layer 7: 응용 계층(Application layer)

  • 사용자와 가장 밀접한 계층으로 인터페이스 역할을 하는 계층
  • 응용 프로세스 간의 정보 교환을 담당
  • 텔넷, 크롬, 이메일, 데이터베이스 관리 등의 서비스가 여기에 해당

TCP vs UDP

(Transmission Control Protocol vs User Datagram Protocol)

  • 전송 계층은 프로토콜 내에서 송신자와 수신자를 연결하는 통신 서비스를 제공하는 계층인데, IP에 의해 전달되는 패킷의 오류를 검사하고 재전송 요구 등의 제어를 담당
  • 이러한 전송 계층에서 사용되는 프로토콜이 바로 TCP와 UDP

TCP(Transmission Control Protocol)

  • TCP는 신뢰성있는 데이터 전송을 지원하는 연결 지향형 프로토콜
  • 일반적으로 TCP와 IP가 함께 사용되는데,
    IP가 데이터의 전송을 처리한다면 TCP는 패킷 추적 및 관리를 함
  • 연결 지향형인 TCP는 3-way handshaking이라는 과정을 통해 연결 후 통신을 시작하는데, 흐름 제어와 혼잡 제어를 지원하며 데이터의 순서를 보장
    - 흐름 제어: 보내는 측과 받는 측의 데이터 처리 속도 차이를 조절해주는 것
    - 혼잡 제어: 네트워크 내의 패킷 수가 넘치게 증가하지 않도록 방지하는 것

특징

  • 연결형 서비스로 가상 회선 방식을 제공
  • 데이터의 전송 순서 보장
  • 데이터의 경계를 구분하지 않음
  • 신뢰성있는 데이터 전송
  • UDP보다 전송 속도가 느림
  • 연결을 설정(3-way handshaking)과 해제(4-way handshaking)

UDP(User Datagram Protocol)

  • UPD는 비연결형 프로토콜로써, 인터넷상에서 서로 정보를 주고 받을 때 정보를 보낸다는 신호나 받는다는 신호 절차를 거치지 않고 보내는 쪽에서 일방적으로 데이터를 전달하는 통신 프로토콜
  • TCP와는 다르게 연결 설정이 없으며, 혼잡 제어를 하지 않기 때문에 TCP보다 전송 속도가 빠름
  • 데이터 전송에 대한 보장을 하지 않기 때문에 패킷 손실이 발생할 수 있음

특징

  • 비연결형 서비스로 데이터그램 방식을 제공
  • 비신뢰성
  • 데이터의 경계를 구분
  • 패킷 오버헤드가 적어 네트워크 부하 감소
  • 혼잡 제어를 하지 않기 때문에 TCP보다 빠름
  • TCP의 handshaking 같은 연결 설정이 없음

TCP vs UDP

TCP(Transfer Control Protocol)UDP(User Datagram Protocol)
- 연결형 프로토콜
- 데이터의 경계를 구분하지 않음
- 신뢰성있는 데이터 전송 (데이터 재전송 존재 O)
- 일 대 일(Unicast) 통신
- 비연결형 프로토콜
- 데이터의 경계를 구분함
- 비신뢰성 데이터 전송 (데이터 재전송 존재 X)
- 일 대 일, 일 대 다(Broadcast), 다 대 다(Multicast) 통신

요약

TCP는 연속성보다 신뢰성 있는 전송이 중요할 때에 사용되는 프로토콜이며,
UDP는 TCP보다 빠르고 네트워크 부하가 적다는 장점이 있지만 신뢰성있는 데이터 전송을 보장하지는 않음
따라서 신뢰성보다는 연속성이 중요한 실시간 스트리밍과 같은 서비스에 자주 사용

그림으로 비교하는 TCP vs UDP


GET, POST 방식의 차이점

  • 클라이언트는 인터넷 브라우저 주소창에 URL을 입력하고 서버는 클라이언트의 요청에 응답을 하여 웹페이지를 보여줌
  • 이 때, 클라이언트가 서버로 보내는 데이터를 HTTP 패킷이라고 하며, HTTP 패킷은 크게 Headr(헤더)와 Body(바디)로 나눠짐
  • 헤더에는 HTTP Method 방식, 클라이언트와 브라우저, 접속하고자 하는 URL 정보 등이 담겨있음
  • 바디는 보통 비어있으며, 정보를 담아서 서버에 요청할 수 있음

HTTP

  • 웹상에서 클라이언트와 서버 간에 데이터를 주고 받을 수 있는 프로토콜
  • 클라이언트가 HTTP 프로토콜을 통해서 서버에 요청을 보내면 서버는 요청에 맞는 응답을 클라이언트에게 전송

GET 방식

  • GET 방식은 클라이언트가 서버로 데이터를 요청하기 위해 사용되는 Method이며, GET 요청을 할 때는 Body 부분은 비어있고 헤더에 Body의 콘텐츠 타입을 명시하는 Content-Type 헤더 필드도 적지 않음

  • 아래와 같이 URL 뒤에 쿼리 스트링(Key와 Value)을 붙이고 HTTP 패킷의 헤더에 포함해서 서버에 데이터를 요청

    	http://localhost:3000/login?id=admin&pw=1234
  • URL의 "?" 뒤에서부터 쿼리 스트링으로 데이터를 표현하는데 중요한 값들이 노출되기 때문에 실제 사이트에서 ID와 PW와 같은 정보들에 GET 방식을 이용하면 보안에 문제가 발생

  • GET 방식의 경우에는 브라우저마다 글자 수 제한이 있기 때문에 게시판의 게시물, 목록 조회와 같은 간단한 데이터를 요청할 때 적합하며, 캐싱이 가능하므로 속도가 빠름

GET 방식의 특징

  • URL에 쿼리 스트링(데이터)을 붙여서 서버에 전송
  • 데이터를 Header(헤더)에 포함하여 전송
  • URL에 정보들이 그대로 노출되기 때문에 POST 방식보다 상대적으로 보안에 취약
  • 캐싱이 가능
  • POST 방식보다 상대적으로 전송 속도가 빠름
  • 전송하는 데이터 양에 한계가 있음 (브라우저마다 GET 요청 길이 제한 존재)
  • 브라우저 히스토리에 기록이 남음

캐싱(Caching)이란?
캐싱이란 한 번 접근 후 또 요청할 시 빠르게 접근하기 위해 레지스터에 데이터를 저장시켜 놓는 것


POST 방식

  • POST 방식은 클라이언트가 서버로 데이터를 전송해 리소스를 추가하거나 생성하기 위해 사용되는 Method
  • POST 요청 시 HTTP 패킷의 헤더에 Body의 콘텐츠 타입을 명시하는 Content-Type 헤더 필드를 포함하고 HTTP 패킷의 Body에는 데이터를 담아서 서버로 전송
http://localhost:3000/login
  • POST 방식은 GET 방식과 다르게 데이터들이 URL에 표시되지 않고 HTTP 패킷 Body에 담겨 서버로 데이터가 전송됨
  • 보내는 데이터의 양에 제한이 없어 대용량 데이터를 전송할 때는 POST 방식이 적합
  • URL에 데이터가 표시되지 않기 때문에 GET 방식보다는 상대적으로 보안적
  • body의 데이터도 결국엔 크롬 개발자 도구, Fiddler와 같은 툴로 요청 내용을 확인할 수 있기 때문에 꼭 암호화를 해주어야 함
  • POST 방식의 경우 보통 서버의 값이나 상태를 변경하기 위해 사용되므로 글쓰기, 글 수정과 같은 작업에 적합

POST 방식의 특징

  • 데이터들을 URL 뒤에 붙여서 서버로 보내는 것이 아닌 Body에 담아서 전송
  • 요청 헤더의 Content-Type에 콘텐츠 타입을 명시
  • 데이터들이 URL에 노출되지 않기 때문에 GET 방식보다 상대적으로 보안적
  • 데이터들을 Body에 담기 때문에 서버로 보내는 데이터의 양은 제한 없음
  • URL에 데이터가 노출되지 않으므로 캐싱 불가
  • 클라이언트에서 인코딩, 서버에서 디코딩
  • 요청받는 시간제한 존재
  • 브라우저 히스토리에 기록이 남지 않음

HTTP 상태코드 (HTTP Status Code)

HTTP Status Code란?

  • 클라이언트(사용자)가 웹 서버에 HTTP 요청을 했을 때 웹 서버는 응답으로 HTTP 상태 코드를 알려줌
  • 이러한 코드는 HTTP 요청의 성공/실패 여부를 알려주는 코드이며 5개의 그룹으로 분류

HTTP Status Code 분류

  • 1XX (조건부 응답)
  • 2XX (성공)
  • 3XX (리다이렉션 완료)
  • 4XX (요청 오류)
  • 5XX (서버 오류)

HTTP Status Code 상세 정보

1XX : 조건부 응답

현재 요청을 받았으며, 작업 진행 중이라는 의미

  • 100(계속) : Continue
  • 101(프로토콜 전환): 클라이언트가 서버에 프로토콜 전환을 요청했으며, 서버는 승인 중

2XX : 성공

현재 서버가 클라이언트의 요청을 받았으며, 성공적으로 처리했음을 의미

  • 200(성공) : 서버가 요청을 제대로 처리하거나 제공했다는 의미
  • 201(작성됨) : 서버에 요청을 성공하였고, 서버가 새 리소스를 생성함
  • 202(허용됨) : 서버에 요청을 성공했으나, 아직 처리되지 않음
  • 203(신뢰할 수 없는 정보) : 서버에 요청을 성공했으나, 요청에 대한 검증이 되지 않음
  • 204(콘텐츠 없음) : 서버에 요청을 성공했으나, 콘텐츠를 제공하지 않음
  • 205(콘텐츠 재설정) : 204 응답과 달리 클라이언트가 문서 보기를 재설정할 것을 요구
  • 206(일부 콘텐츠) : 서버가 콘텐츠의 일부분만 제공

3XX : 리다이렉션 완료

클라이언트가 요청을 완료하기 위해 리다이렉션이 이루어져야 함을 의미

  • 300(복수 응답) : 서버는 여러 응답 목록을 제공하고 클라이언트는 여러 항목 중 하나를 선택할 수 있음
  • 301(영구 이동) : 요청한 페이지가 새 위치로 영구적으로 이동
  • 302(임시 이동) : 요청한 페이지가 일시적으로 이동
  • 303(기타 위치 보기) : 요청한 리소스를 다른 위치에서 GET 요청을 얻어야 할 때의 응답
  • 304(수정되지 않음) : 마지막 요청 이후 페이지가 수정되지 않았음
  • 305(프록시 사용) : 클라이언트는 프록시(우회경로)를 통해 요청한 페이지만 액세스 가능
  • 307(임시 리다이렉션) : 302와 동일하게 일시적인 콘텐츠 이동을 나타내지만 HTTP 메서드 변경을 허용하지 않음
  • 308(영구 리다이렉션) : 302와 동일하게 영구적인 콘텐츠 이동을 나타내지만 HTTP 메서드 변경을 허용하지 않음

4XX : 요청 오류

클라이언트의 요청 오류를 의미

  • 400(잘못된 요청) : 요청 자체가 잘못되었음
  • 401(권한 없음) : 해당 요청에 대해 사용자의 인증이 되지 않은 상태
  • 402(결제 필요) : 해당 요청에는 결제가 필요
  • 403(금지됨) : 서버가 요청을 거부함
  • 404(찾을 수 없음) : 요청한 리소스를 찾을 수 없음
  • 405(허용되지 않는 방법) : 리소스에 맞지 않는 메서드를 사용했을 때
    (ex. 서버에 GET 요청만 가능한데 POST 요청을 한 경우)
  • 406(허용되지 않음) : 서버가 요청한 콘텐츠 특성으로 응답할 수 없을 때
  • 407(프록시 인증 필요) : 401과 비슷하지만 클라이언트는 프록시를 통해 인증해야 함
  • 408(요청 시간 초과) : 서버의 요청 대기시간 초과
  • 409(충돌) : 요청이 현재 서버의 상태와 충돌됨
  • 410(사라짐) : 404와 달리 해당 리소스가 영원히 사라짐
  • 429(너무 많은 요청) : 일정 시간 동안 너무 많은 요청을 보냈을 때
  • 451(법적인 이유로 차단됨) : 국가 검열 등 법적인 이유로 차단됨

5XX : 서버 오류

올바른 클라이언트 요청에 대해 서버가 응답할 수 없다는 의미

  • 500(내부 서버 에러) : 서버에 오류가 발생해서 응답할 수 없음
  • 501(구현되지 않음) : 요청에 대한 서버의 응답 수행 기능이 없음
  • 502(불량 게이트웨이) : 게이트웨이가 연결된 서버로부터 잘못된 응답을 받음
    (ex. 보통 서버에 접속자가 폭주해 과부하될 때 발생)
  • 503(서비스를 사용할 수 없음) : 서비스를 일시적으로 사용할 수 없음
    (ex. 웹서버 유지보수 혹은 과부하로 인해 다운되었을 때)
  • 504(게이트웨이 시간 초과) : 서버가 게이트웨이나 프록시 역할을 하고 있거나 연결된 서버와의 응답 지연 발생
  • 505(HTTP 버전이 지원되지 않음) : 서버가 요청에 사용된 HTTP 프로토콜 버전을 지원하지 않음
  • 511(네트워크 인증 필요) : 클라이언트의 네트워크 액세스 권한이 필요한 경우
profile
⏰ Good things take time

0개의 댓글