Code States/TIL

[0406] 네트워크 기초 - OSI 7계층과 TCP/IP 4계층

ki1111m2 2023. 4. 6. 15:44

학습 목표

  • OSI 7계층 모델과 TCP/IP 4계층 모델을 기반으로 한 네트워크 흐름에 대해 이해할 수 있다.
    • TCP/IP 패킷이 왜 필요한 지 설명할 수 있다.
    • TCP와 UDP의 차이에 대해 설명할 수 있다.
    • 데이터 링크 계층과 물리적 계층에 대해서 설명할 수 있다.
  • HTTP 기본 동작과 특징에 대해 이해할 수 있다.
    • 상태유지(Stateful)과 무상태(Stateless)의 개념에 대해 설명할 수 있다.
    • HTTP 메시지 구성에 대해 설명할 수 있다.
  • 아키텍처의 구성요소에 대해서 알 수 있다.
    • 프록시, 로드밸런서에 대해 설명할 수 있다.
    • 캐시의 기본 원리와 CDN에 대해 설명할 수 있다.
    • 프록시 서버를 만들고, 프록시 캐시를 컨트롤 할 수 있다.

  • 물리계층
    • 주로 물리적 연결과 관련된 정보를 정의함
    • 주로 전기 신호를 전달하는데 초점을 두고, 들어온 전기 신호를 그대로 잘 전달하는 것이 목적
  • 데이터 링크 계층
    • 물리 계층에서 들어온 전기 신호를 모아 알아 볼 수 있는 데이터 형태로 처리함
    • 주소 정보를 정의하고 출발지와 도착지 주소를 확인한 후, 데이터 처리를 수행함
  • 네트워크 계층
    • IP주소와 같은 논리적인 주소 정의
    • 라우터를 통해 정의한 IP주소를 이해하고, 이를 사용해 최적의 경로를 찾아 패킷을 전송함
  • 전송 계층
    • 해당 데이터들이 실제로 정상적으로 보내지는지 확인하는 역할
    • 네트워크 계층에서 사용되는 패킷은 유실되거나 순서가 바뀌는 경우가 있는 데, 이를 바로 잡아주는 역할도 담당함
  • 세션 계층
    • 양 끝 단의 프로세스가 연결을 성립하도록 도와주고, 작업을 마친 후에는 연결을 끊는 역할을 함
  • 프레젠테이션(표현) 계층
    • 일종의 변역기 같은 역할을 수행함
    • MIME 인코딩이나 암호화, 압축, 코드 변환과 같은 동작이 이루어짐
  • 애플리케이션(응용) 계층
    • 애플리케이션 프로세스를 정의하고, 애플리케이션 서비스를 수행함
    • 사용되는 프로토콜은 다양한 종류가 있지만, 대표적인 프로토콜로는 HTTP, FTP, SMTP 등이 있음

Application Layer - HTTP


  • 특징
    • 클라이언트 서버 구조
      • Request Response 구조
      • 클라이언트는 서버에 요청을 보내고 응답을 대기
      • 서버가 요청에 대한 결과를 만들어 응답
    • 무상태 프로토콜(Stateless)
      • 서버가 클라이언트의 상태를 보존하지 않음
      • 장점: 서버 확장성 높음(스케일 아웃) → 응답 서버를 쉽게 바꿀 수 있으므로 무한한 서버 증설이 가능함
      • 단점: 클라이언트가 추가 데이터 전송
        • Stateful의 경우, 한 서버가 기존의 상태 정보를 유지하므로, 해당 서버 장애 발생시 유지되던 상태 정보가 다 날라가므로 처음부터 다시 서버에 요청해야함
      • 로그인이 필요 없는 단순한 서비스 소개 화면 같은 경우엔 무상태로 설계할 수 있지만, 로그인이 필요한 서비스라면 유저의 상태를 유지해야 되기 때문에 브라우저 쿠키, 서버 세션, 토큰 등을 이용해 상태를 유지함
    • 비연결성(Connectionless)
      • TCP/IP의 경우 기본적으로 연결을 유지함
      • 연결을 유지하는 모델에서는 요청을 보내지 않더라도 계속 연결을 유지해야 하고, 이러한 경우 연결을 유지하는 서버의 자원이 계속 소모됨
      • 비연결성을 가지는 HTTP는 실제로 요청을 주고받을 때만 연결을 유지하고 응답을 주고 나면 TCP/IP 연결을 끊고, 이를 통해 최소한의 자원으로 서버 유지를 가능하게 함
      • 트래픽이 많지 않고, 빠른 응답을 제공할 수 있는 경우, 비연결성의 특징은 효율적으로 작동함
      • 한계
        • TCP/IP 연결을 새로 맺어야 함 → 3 way handshake 시간 추가
        • 웹 브라우저로 사이트를 요청하면 HTML 뿐만 아니라 자바스크립트, css, 추가 이미지 등 수많은 자원이 함께 다운로드됨 → 해당 자원들을 각각 보낼 때마다 연결을 끊고 다시 연결하고를 반복하는 것은 비효율적이기 때문에 지금은 HTTP 지속 연결(Parsistent Connections)로 문제를 해결함(연결이 이루어지고 난 뒤 각각의 자원들을 요청하고 모든 자원에 대한 응답이 돌아온 후 연결을 종료함)
    • HTTP 메세지
    • 단순함, 확장 가능

Network Layer - IP와 IP Packet


  • IP는 지정한 IP주소에 패킷이라는 통신 단위로 데이터를 전달함
  • 패킷: Pack + Bucket 합성어로 소포에 비유할 수 있음
  • IP 패킷: 데이터 통신에 적용한 것으로, 전송 데이터를 무사히 전송하기 위해 출발지 IP,목적지 IP와 같은 정보가 포함되어 있음
  • 패킷 단위로 전송을 하면 노드들은 목적지 IP에 도달하기 위해 서로 데이터를 전달하고, 이를 통해 복잡한 인터넷 망 사이에서도 정확한 목적지로 패킷을 전송할 수 있음
  • 한계
    • 비연결성
      • 클라이언트는 서버의 상태를 파악할 방법이 없으므로 패킷을 받을 대상이 없거나 서비스 불능 상태여도 패킷 전송
    • 비신뢰성
      • 중간에 패킷이 사라질 수 있음
      • 패킷의 순서를 보장할 수 없음

Transport Layer - TCP vs UDP


  • 채팅 프로그램에서 메세지를 보낼 때
    • HTTP 메시지 생성
    • Socket을 통해 전달
    • TCP 정보 생성
    • IP 패킷 생성
  • TCP 세그먼트: IP 패킷의 출발지 IP와 목적지 IP 정보를 보완할 수 있는 출발지 PORT, 전송 제어, 순서, 검증 정보 등을 포함
  • TCP 특징
    • 연결지향 - TCP 3 way handshake
      • 논리적인 접속을 성립하기 위하여 3 way handshake를 사용하는 연결지향형 프로토콜
    • 데이터 전달 보증
      • 데이터 전송이 성공적으로 이루어진다면 이에 대한 응답을 돌려줌
    • 순서 보장
    • 신뢰할 수 있는 프로토콜
  • UDP 특징
    • IP 프로토콜에 PORT, 체크섬 필드 정보만 추가된 단순한 프로토콜
      • 체크섬(checksum): 중복 검사의 한 형태로, 오류 정정을 통해 공간(전자 통신)이나 시간(기억 장치) 속에서 송신된 자료의 무결성을 보호하는 단순한 방법
    • 비 연결지향 - TCP 3 way handshake x
    • 데이터 전달 보증 x
    • 순서 보장 x
    • 단순하고 빠름
    • 신뢰성보다는 연속성이 중요한 서비스에 주로 사용됨

Session Layer - Socket


  • 사전적 의미: 전구 따위를 끼워 넣어 전선과 접속되게 하는 기구
  • 네트워크에서 사용되는 소켓의 의미도 마찬가지로 프로그램이 네트워크에서 데이터를 송수신 할 수 있도록 “네트워크 환경에서 클라이언트와 서버가 서로 연결할 수 있게 만들어진 연결부”를 의미함
  • 네트워크 상에서 돌아가는 두 개의 프로세스 간 양뱡향 통신에서 하나의 엔드포인트이며, 여기서 엔드포인트는 IP주소와 포트 번호의 조합을 의미함
  • 포트 번호에 바인딩되어 전송 계층에서 데이터를 주고 받는 어플리케이션을 식별할 수 있게 함
  • 즉, 어플리케이션 계층에 존재하는 프로세스들은 데이터를 주고 받기 위해 소켓을 거쳐 전송 계층의 네트워크로 전달함으로써 데이터를 송수신 할 수 있음
  • 이때 데이터를 전달받을 호스트의 주소를 가리키는 IP 주소와 그 데이터를 전달받을 호스트 안에서 원하는 프로세스를 찾는 용도로 사용되는 포트 정보가 필요함
  • 소켓에 포함되는 정보
    • 프로토콜
    • 호스트 IP 주소
    • 호스트 Port 번호
    • 목적지 IP 주소
    • 목적지 Port 번호
  • 특징
    • 데이터를 주고 받는 프로세스 간의 양방향 통신을 목적으로 하기 때문에, 클라이언트와 서버의 구조를 가짐
    • 서버는 특정 포트 번호에 바인딩하여 작동하고, 소켓을 통해 클라이언트의 요청을 리스닝하며 대기함
    • 클라이언트는 이미 리스닝하고 있는 서버의 IP 주소 및 포트 번호를 알고 있기 때문에, 이에 해당하는 서버에 연결을 시도하게 됨
    • 순조롭게 연결이 진행되고 나면, 서버는 같은 포트에 바인딩 된 새로운 소켓을 형성하고, 기존의 연결된 소켓으로는 연결된 클라이언트의 요청을 처리함
    • 따라서 같은 포트에 여러 개의 소켓을 생성할 수 있음
    • 위의 과정을 거쳐 소켓을 통해 연결이 완료되면, 데이터를 주고 받은 후 연결이 끊어지는 것이 아니라 양 쪽에서 실시간으로 통신할 수 있으므로, 실시간으로 메세지를 송수신하는 채팅 서비스나 스트리밍 서비스에서 주로 사용됨

Data Link Layer - 데이터 링크 레이어


  • 전기 신호를 모아 알아볼 수 있는 데이터 형태로 처리함
  • 출발지와 도착지 주소를 확인하고 내게 보낸 것이 맞는지 혹은 내가 처리해야 하는지에 대해 검사한 후 데이터를 처리하는 것이 주된 역할
  • 주소를 확인한다는 것은 한 명과 통신하는 것이 아니라 동시에 여러 명과 통신할 수 있다는 것이기 때문에 무작정 데이터를 주고 받는 것이 아니라, 받는 사람이 데이터를 받을 수 있는지 확인하는 작업부터 해야하며, 이런 역할을 플로우 컨트롤(flow control)이라고 함
  • 네트워크 인터페이스 카드(NIC, Network Interface Card)
    • 랜 카드, 네트워크 카드, 네트워크 인터페이스 컨트롤러, 네트워크 어댑터 등
    • 컴퓨터를 네트워크에 연결하기 위한 하드웨어 장치
    • 직렬화: 전기적 신호를 데이터 신호 형태로, 혹은 그 역으로 변환해줌
    • MAC 주소: 입력되는 전기 신호를 데이터 형태로 만들고 데이터에서 도착지 MAC 주소를 확인한 후 자신에게 들어오는 전기 신호가 맞는지 확인한 후, 자신에게 들어오는 전기 신호가 아니면 버리고, 맞으면 이 데이터를 상위계층에서 처리할 수 있도록 메모리에 적재함
      • 네트워크에 접속하는 모든 장비는 MAC(Media Access Control) 주소라는 물리적 주소가 있어야 하며, 변경할 수 없도록 하드웨어에 고정되어 있음
  • 스위치(Switch)
    • 여러 장비를 연결하고 통신을 중재하며, 케이블을 한 곳으로 모아주는 역할을 하는 장비
    • 주어진 MAC 주소를 보고 어디로 연결되는지, 포트는 어디인지 확인하며 이 데이터를 기반으로 통신할 때 포트를 적절히 필터링 하고 정확한 포트로 포워딩하는 역할을 함
    • 포워딩(Forwarding): 패킷이 스위치에 들어온 경우, 도착지 MAC 주소를 확인하고 자신이 가진 MAC 테이블과 비교해 맞는 정보가 있으면 매치되는 해당 포트로 패킷을 포워딩함
    • 필터링(Filtering): 이 때 다른 포트로는 해당 패킷을 보내지 않으므로 이를 필터링이라고 부름

Physical Layer - 네트워크 액세스 계층


  • 물리적 연결과 관련된 정보를 정의함
  • 물리적 장비를 통해 전기 신호를 전달하며, 전기 신호를 전달하는 데 초점이 맞춰져 있음
  • 전기 신호가 1계층 장비에 들어오게 되면 이 전기 신호를 재생성하여 내보냄
  • 이 때 장비가 주소의 개념을 이해할 수 없으므로 전기 신호가 들어온 포트를 제외하고 모든 포트에 같은 전기 신호를 전송함
  • 허브(Hub), 리피터(Repeator): 네트워크 통신을 중재
  • 케이블(Cable), 커넥터: 케이블 본체를 구성하는 요소
  • 트랜시버(Tranceiver): 컴퓨터의 랜카드와 케이블을 연결하는 장비로 다양한 외부신호를 컴퓨터 내부 전기신호로 바꾸어주는 역할

정보처리기사 준비하면서 쎄빠지게 외우고 학부때 내내 했던 내용들이라 .. 기억들이 다 난다