IT 엔지니어를 위한 네트워크 입문 - 1장 네트워크 시작하기

코코딩딩·2022년 5월 21일
0

네트워크

목록 보기
1/6
post-thumbnail

네트워크 시작하기

개요

  • 해당 장의 목표는 네트워크의 큰 그림을 훑어보는 것입니다.
  • 모든 부분을 알려고 하기보다 전반적인 흐름을 파악하는 식으로 살펴보았습니다.

목차

  • 클라이언트와 서버의 네트워크 구성도
  • 네트워크상의 통신규약. 즉, 프로토콜
  • 물리적 프로토콜 : 이더넷
    논리적 프로토콜 : OSI 모델, TCP/IP모델
  • OSI의 각 계층의 특징
  • 인캡슐레이션, 디캡슐레이션

네트워크 구성

네트워크 구분

  • 네트워크는 클라이언트와 서버로 나눠진다 볼 수 있습니다.
  • 물론 둘이 섞여있는 경우도 있으나, 보통 서버-클라이언트 모델로 보는 것이 좋을 것 같습니다.
  • 클라이언트는 서비스를 받는 입장이고, 서버는 서비스를 제공하는 입장입니다.
  • 서버와 클라이언트는 각각 네트워크 구성을 가집니다.

홈 네트워크 (클라이언트)

Untitled

  • 일반적으로 [인터넷 → 모뎀 → 공유기 → 단말기] 흐름의 구성도를 가집니다.
  • 이는 회사나 집 등 서비스를 제공받는 곳은 그 구조가 비슷하다고 볼 수 있습니다.
  • 네트워크는 광케이블을 통해 모뎀과 연결되며, 모뎀은 공유기로 연결됩니다.
  • 공유기를 통해서 각 단말기에 유무선으로 연결이 가능합니다.

데이터 센터 네트워크(서버)

Untitled

  • 서버 측 네트워크 구성은 빠르고 안정적인 대용량 서비스 제공을 목표로 합니다.
  • 데이터 센터의 네트워크 구성은 3계층 디자인과 2계층 디자인이 있습니다.
  • 기존에는 3계층 디자인을 사용하였으나, 서버 간의 대용량 트래픽 통신을 지원하기 의해서 2계층 디자인(스파인-리프)이 등장하였습니다.

프로토콜

정의

  • 네트워크 통신의 규약

종류

  • 물리적 프로토콜 : 이더넷
  • 논리적 프로토콜 : TCP/IP 스택

목적

  • 통신 시 자원의 효율성을 위해서 프로토콜이 필요합니다.
  • 네트워크 탄생 초기의 환경은 매우 열악하여 최대한의 효율을 위해 비트 기반의 프로토콜을 사용하였습니다.
    장점 : 성능이 좋음
    단점 : 알아보기 힘들고 확장하기 힘듬
  • 어플리케이션 레벨에서는 문자기반의 프로토콜을 사용합니다.
    장점 : 확장성, 가독성이 좋음
    단점 : 문자열을 사용하기에 비트보다는 자원 효율이 떨어짐

OSI 7 계층과 TCP/IP

  • 표준화가 되지 않았던 시절에는 각 밴더사의 방식대로 네트워크 통신을 개발하였습니다.
  • 그 결과 시스템이나 어플리케이션 끼리 호환되지 않는 경우가 발생하였습니다.
  • 현재는 OIS 7 계층을 이론적 배경(참조형 모델)으로 하고, TCP/IP 스택을 프로토콜(실제사용 모델) 기준으로 표준화 하였습니다.
  • 계층별로 프로토콜을 개발하여 각 계층을 모듈화 할 수 있습니다.

Untitled

OSI 7계층

데이터 플로우 계층(하위 계층)

  • 피지컬 계층, 데이터 링크 계층, 네트워크 계층, 트랜스포트 계층이 이에 속합니다.
  • 데이터를 상대에게 전달하는 역할을 하는 계층입니다.

어플리케이션 계층(상위 계층)

  • 세션 계층, 프레젠테이션 계층, 어플리케이션 계층이 이에 속합니다. Untitled

TCP/IP 프로토콜 스택

  • 현대 네트워크는 대부분 TCP/IP와 이더넷으로 이루어져있습니다.
  • 이론보다 실용성을 중점으로 둔 프로토콜입니다.

Untitled

OSI 모델과 비교

  • OSI모델은 7개의 계층으로 구분하며, TCP/IP는 4개의 계층으로 구분합니다.
  • OSI모델은 크게 데이터플로우 계층과 어플리케이션 계층으로 구분하는데, 이는 OSI모델을 크게 데이터를 만드는 어플리케이션 부분과 데이터를 전달하는 하부 계층으로 구분하기 위해서입니다.
  • OSI모델은 이론적인 분류로 이해하면 될 것이고, TCP모델은 네트워크를 기존 OSI 7모델보다 현실적이고 실무적으로 구분한 것으로 이해하면 될 것입니다

OSI 7 계층별 이해하기

1 계층 - 피지컬 계층

  • 물리적 연결과 관련된 정보를 정의합니다.
  • 해당 계층의 목표는 들어오는 전기 신호를 그대로 잘 전달하는 것입니다.
  • 1계층 장비(허브)는 전기 신호가 들어오면, 이를 재생성하여 내보냅니다.
  • 주소의 개념이 없으므로 전기 신호가 들어온 포트를 제외하고 모든 포트에 같은 전기 신호를 전달합니다.

2 계층 - 데이터 링크 계층

Untitled

  • 2계층에서는 네트워크 인터페이스 카드(NIC)와 스위치를 사용합니다.
  • 각 NIC는 고유 MAC주소를 가지고 있습니다.
  • 무작정 데이터를 보내는 것이 아닌 수신자가 받을 수 있는 상태인지 확인합니다.이를 플로우 컨트롤이라 합니다.
  • MAC주소 체계를 바탕으로 여러 사람이 네트워크를 사용하며 데이터를 주고 받을 수 있게 되었습니다.
  • 또한 해당 계층에서는 데이터에 대한 에러를 탐지합니다.

Untitled

  • 해당 계층의 장비인 스위치는 자신과 연결된 각 단말의 MAC주소는 무엇인지, 포트번호는 무엇인지는 주소습득 과정에서 알 수 있습니다.
  • 각 단말들이 통신할 때 포트를 적절히 필터링 하고 정확한 포트로 포워딩 해줍니다.
  • 이를 통해 네트워크 전체에 불필요한 처리를 감소시키며 이더넷의 효율성을 향상 시킵니다.

3 계층 - 네트워크 계층

  • IP주소가 정의 되는 계층입니다.
  • 네트워크 통신 시 두 주소(2계층에서는 MAC, 3계층에서는 IP) 모두 사용합니다.
  • IP주소는 네트워크 주소 부분, 호스트 주소 부분으로 나눠집니다.
  • 3계층에 속하는 단말(라우터)는 IP주소를 통해 자신이 속한 네트워크와 원격지 네트워크를 구분할 수 있고, 원격지까지의 경로를 지정할 수 있습니다.

Untitled

4 계층 - 트랜스포트 계층

  • 데이터플로우 계층은 데이터를 목적지로 보내거나 신호를 전달하는 것을 목표로합니다.
  • 이와 다르게 4계층은 데이터가 정상적으로 보내지도록 확인하는 역할을 합니다.
  • 즉, 패킷의 순서와 유실에 대해 확인하는 작업을 합니다.
  • 시퀀스 번호는 패킷을 보내는 순서입니다.
  • ACK 번호는 패킷을 받는 순서입니다.
  • 포트번호를 통해 어플리케이션을 식별합니다.
  • 4계층 장비로는 로드밸런서와 방화벽이 있습니다.

5 계층 - 세션 계층

  • 양쪽 엔드포인트의 어플리케이션의 연결을 유지하고 작업 완료 후 끊어주는 역할을 합니다.
  • 에러로 중단된 통신에 대한 복구와 재전송도 수행합니다.

6 계층 - 프레젠테이션 계층

  • 표현방식이 서로 다른 어플리케이션 간의 변환기 역할을 수행합니다.
  • MINE 인코딩, 암호화, 압축, 코드변환 등이 이뤄지는 계층입니다.

7 계층 - 어플리케이션 계층

  • 어플리케이션을 서비스를 수행하는 계층입니다
  • 소프트웨어 UI, 입출력 등을 정의하는 계층입니다.
  • FTP, HTTP, SMTP, TELNET등의 프로토콜을 사용합니다.

Untitled

인캡슐레이션과 디캡슐레이션

인캡슐레이션

  • 어플리케이션 계층 에서 데이터 플로우 계층으로 데이터를 넘길 때 패킷 단위로 분리합니다.
  • 분리한 패킷을 4~2계층의 헤더 정보를 덧붙이며 내립니다.
  • 각 헤더는 비트단위 정보입니다.
  • 이를 인캡슐레이션이라 합니다.

디캡슐레이션

  • 1계층에서 받아온 전기신호를 2계층에서 데이터 형태로 만듭니다.
  • 이후 4계층까지 전송받는 헤더를 확인하여 목적지를 확인하고 올리는 것을 디캡슐레이션이라 합니다.
  • 확인한 헤더데이터는 버려집니다.

Untitled

  • 단순하게 보면 상위 계층→하위 계층, 하위 계층 → 상위 계층으로 데이터가 흐릅니다.
  • 또한 각 계층의 헤더는 각 계층에서 만들고 확인하여 버립니다.

계층별 헤더 정보

Untitled

  • 위 이미지에서 보듯 헤더에는 수 많은 정보가 있고 이를 정보를 하나하나 다 알기에는 공부해야 할 양이 많습니다.
  • 하지만 반드시 두가지 정보는 포함됩니다.
    • 현재 계층에서 정의하는 정보
    • 상위 프로토콜 지시자

현재 계층에서 헤더에 정의하는 정보

  • 4계층은 데이터의 분할과 조립을 목적으로 합니다.
    해당 계층에서는 데이터의분할과 조립의 순서가 중요합니다.
    그러므로 4계층(TCP)의 헤더는 시퀀스, ACK번호 정보를 담습니다.
  • 3계층은 출발지, 도착지의 IP주소를 헤더에 담습니다.
  • 2계층에서는 출발지, 도착지 MAC주소를 헤더에 담습니다.

상위 프로토콜 지시자

Untitled

  • 상위 프로토콜은 하위 프로토콜이 정해져있습니다. 즉, TCP프로토콜에서는 IP프로토콜로 데이터를 내려줍니다.
  • 하지만 하위 프로토콜은 복수의 상위 프로토콜을 가집니다. IP프로토콜에서 TCP와 UDP 중 어디로 데이터를 올려야할지 정보가 필요합니다.
  • 이렇듯 인캡슐레이션 과정에서는 문제가 안되지만 디캡슐레이션 과정에서는 상위 프로토콜에 대한 정보가 있어야합니다.
  • 그러므로 인캡슐레이션 시 각 계층의 헤더에는 상위 프로토콜 지시자 정보가 담기게 됩니다.
  • 상위 프로토콜 지시자를 4계층은 포트번호, 3계층은 프로토콜 번호, 2계층은 이더타입이라 부릅니다.

Untitled

Untitled

Untitled

MSS & MTU

  • 어플리케이션에서 받은 데이터를 데이터 플로우 계층에서는 네트워크 상황에 맞게 데이터를 패킷으로 쪼게야합니다.
  • 네트워크에서 한번에 보낼 수 있는 데이터의 크기는 MTU라 합니다.
  • 일반적으로 이더넷의 MTU는 1,500바이트입니다.
  • MSS는 MTU에서 각 계층별 헤더값을 뺀 데이터의 크기를 의미합니다.
  • MSS의 값은 MTU에서 3~4계층의 헤더값(20바이트)를 제외한 값입니다. 즉 1460바이트입니다.

Untitled

0개의 댓글