개발하는 프로 국밥러
article thumbnail

IT 엔지니어를 위한 네트워크 입문

고재성, 이상훈님의 책을 보며 정리한 내용입니다.

문제가 될 시 해당글 삭제하겠습니다.


네트워크 구성도 살펴보기

홈 네트워크

      • 홈 네트워크를 구성하기 위해서는 모뎀, 공유기, 단말기 간에 물리적 연결이 필요하다.
      • 무선 연결이라고 부르는 것도 실제적으로는 공기라는 매체를 통해서 물리적으로 연결이 되는 것.
      • 크게 공기를 통한 무선 연결 / 유선 랜카드 or 랜케이블을 통한 유선 연결로 나뉜다.

데이터센터 네트워크

데이터센터 네트워크

      • 안정적이고 빠른 대용량 서비스 제공을 목표로 한다.
      • 10 ,25 ,40 ,100 ,400 기가와 같은 고속 이더넷 기술이 사용된다. *대역폭? : 통신에서 이용 가능한 최대 전송 속도, 인터넷이 느리면 대역폭을 늘리라는 소리가 조금 더 높은 용량의 네트워크 속도를 사용하라고 이해하면 된다.
      • 최근 늘어나는 서버간 통신 트래픽 경향을 지원하기 위해서 스파인 - 리프 구조가 많이 사용된다. ⇒ 아 이런게 있구나~
      • 최근 일반 서버에는 10G Base-T 이더넷 포트가 기본적으로 제공되어 리프 스위치인 TOR(Top of Rack) 와 연결되고 스파인 스위치와 40G 100G 로 연결되는 추세이다.(더 높은 대역폭을 위해서 400G 스위치로 연결되는 표준도 생겨나고 있다.) ⇒ 늘어나는 네트워크 이용량을 커버하기 위해서 데이터 센터 대역폭이 늘어나고 있다.

프로토콜(네트워크 통신 규정이나 규약)

      • 상당히 많은 프로토콜이 존재하지만 최근에는 다음 두가지 관점으로 많이 표준화 되고 있다.
        • 물리적 측면 : 이더넷 → 물리적인 장치를 연결하기 위한 표준 (1, 2, 3? 계층)
        • 논리적 측면 : TCP/IP → 논리적인 통신을 하기 위한 표준 (1~7 계층)
      • 과거 네트워킹 환경은 너무나 열악했기 때문에 자연어를 처리할 수 없었다. 때문에, 대부분의 프로토콜이 문자 단위가 아닌 비트 단위로 매우 치밀한 규칙으로 만들어졌다. → 보다 자세한 단위!
      • 애플리케이션(7계층) 레벨 프로토콜은 비트 기반이 아닌 문자 기반의 프로토콜이 만들어졌고 대표적인 예가 HTTP, SMTP 프로토콜이다.
      • 문자 기반 프로토콜이 실제 전송 효율성은 떨어질지 모르지만 다양한 확장이 가능하다.
      • 별도 계층에서 동작하는 프로토콜이지만 함께 사용하고 있는 프로토콜 묶음을 프로토콜 스택이라고 부른다. ex) TCP/IP

HTTP 헤더

OSI 7계층과 TCP/IP

OSI 7계층

      • 과거에는 네트워크 규약이 표준화 되지 않았기에 각 시스템이나 어플리케이션에서 호환이 되지 않았고 이를 하나로 통합하려는 노력이 OSI 7계층이라는 결과물로 남아 있다.
      • 현재는 대부분의 프로토콜이 TCP/IP 프로토콜 스택 기반으로 되어있다.
      • OSI 7계층은 역할과 목표에 따라 다시 두 계층으로 나눌 수 있다.
        • 1-4 계층 : 데이터 플로 계층(하위) → 정확한 데이터 전달에 초점(네트워크 엔지니어가 중요시 생각)
        • 5-7 계층 : 애플리케이션 계층(상위) → 하위 계층을 생각하지 않고 데이터를 표현하는데 초점(애플리케이션 개발자가 중요시 생각)
        ⇒ 때문에 애플리케이션 개발자와 네트워크 엔지니어가 중요하게 생각하는 부분이 다르다.

TCP/IP 프로토콜 스택

OSI 7계층, TCP/IP 프로토콜 스택

      • TCP/IP 는 이론보다는 실용성에 중점을 둔 프로토콜이다.
      • 이미지를 보면 알 수 있듯, 현실에 쉽게 반영이 가능하도록 간단히 구분하는 TCP/IP 프로토콜 성향이 드러난다.

OSI 7계층별 이해하기

OSI 계층별 장비

1계층(피지컬 계층)

      • 물리적 연결과 관련된 정보를 정의한다.
      • 주로 전기 신호를 전달하는데 초점이 맞추어져 있다.
      • 주요 장비로는 허브, 케이블, 커넥터, 트랜시버 등이 있다.
      • 1계층에서는 들어온 전기 신호를 그대로 잘 전달하는 것이 목적이기 때문에, 전기 신호가 1계층 장비에 들어오면 이 전기 신호를 재생성하여 보낸다.
      • 주소개념이 없다.

2계층(데이터링크 계층)

      • 1계층의 전기 신호를 모아서 우리가 알아볼 수 있는 데이터 형태로 처리한다.
      • 1계층과 다르게 전기 신호를 정확히 전달하기 보다는 주소 정보를 정의하고 정확한 주소로 통신이 되도록 하는데 초점이 맞추어져 있다.
        → 말 그대로 데이터 링크를 맞추어주는 계층이다.
      • 주소 체계가 생겨난다는 뜻은 한 명과 통신하는 것이 아니라 동시에 여러 명과 통신할 수 있다는 의미로 무작정 데이터를 던지는 것이 아닌 받는 사람이 현재 데이터를 받을 수 있는 상태인지 확인을 해야 한다. 이 역할을 플로 컨트롤이라고 한다.
      • 2계층에서 가장 중요한 특징은 MAC 주소(하드웨어 주소, 유일하다)라는 주소 체계가 있다는 것이다.
      • 2계층에서 동작하는 네트워크 인터페이스 카드(랜카드)와 스위치 모두 MAC 주소를 이해할 수 있고, 스위치는 MAC 주소를 보고 통신해야 할 포트를 지정해 내보내는 능력이 있다.
      • 네트워크 인터페이스 카드의 동작 방식
        • 네트워크 인터페이스 카드에는 고유 MAC 주소가 있고,
        • 입력되는 전기 신호를 데이터 형태로 만들고,
        • 데이터에서 도착지 MAC 주소를 확인 후 자신에게 들어오는 전기 신호가 맞다면 해당 데이터를 상위 계층에서 처리할 수 있도록 메모리에 적재(3계층으로 Toss~)하고 아니라면 버린다.
      • 스위치 동작 방식
        • 스위치는 MAC 주소를 보고, 연결된 포트는 어느 것인지 주소 습득 과정에서 알 수 있다.
        • 이 데이터를 기반으로 단말들이 통신할 때 포트를 적절하게 필터링하고 정확한 포트로 포워딩 해준다.
        • 1계층에서 동작하는 허브는 한 포트에서 전기 신호가 들어오면 전체 포트로 전달하다 보니 전체 네트워크에서 동시에 오직 하나의 장비만 데이터를 보낼 수 있다.
        • 스위치에 적절한 필터링과 포워딩 기능으로 통신이 필요한 포트만 사용하고 불필요한 처리가 감소함으로 이더넷 네트워크 효율성이 크게 향상되었고, 이더넷 기반 네트워크가 급증하는 계기가 되었다.
          → MAC 주소가 있기 때문에 가능한 일..

3계층(네트워크 계층)

      1. 3계층에서는 IP주소와 같은 논리적인 주소가 정의된다.
      2. MAC 주소와 달리 IP 주소는 사용자가 환경에 맞게 변경해 사용할 수 있고, 네트워크 주소 부분과 호스트 주소 부분으로 나뉜다. ex) 127.0.0.1
      3. 3계층을 이해하는 장비는 네트워크 주소를 통해서 자식이 속한(로컬) 네트워크와 원격지 네트워크를 구분할 수 있고, 원격지 네트워크를 가려면 어디로 가야 하는지 경로를 지정하는 능력(라우터)이 있다.
      4. 3계층에서 동작하는 하드웨어는 라우터이다.
        → 라우터는 IP 주소를 사용해 최적의 경로를 찾아주고 해당 경로로 패킷을 전송하는 역할.

4계층(트랜스포트 계층)

      1. 1,2,3 계층은 신호와 데이터를 올바른 위치로 보내고 실제 신호를 잘 만들어 보내는데 집중한다.
      2. 4계층은 해당 데이터들이 정상적으로 잘 보내지도록 확인하는 역할을 한다.
      3. 패킷 네트워크는 데이터를 분할해 패킷에 실어 보내다 보니, 중간에 패킷이 유실되거나 순서가 바뀌는 경우가 생길 수 있다.
      4. 이 문제를 해결하기 위해서 문제가 있는 패킷을 바로잡아주는 역할을 4계층에서 담당한다. (TCP Protocol !)

5계층(세션 계층)

      1. 세션 계층은 다음 3가지 역할을 한다.
        1. 양 끝 단, 응용 프로세스가 연결을 성립하도록 도와주고
        2. 연결이 안정적으로 유지되도록 관리하고,
        3. 작업 완료 후 이 연결을 끊어주는 역할을 한다.
      2. 우리가 흔히 말하는 세션 관리를 해당 계층에서 한다.

6계층(프레젠테이션 계층)

      1. 표현 방식이 다른 애플리케이션이나 시스템 간의 통신을 돕기 위해서 하나의 통일된 구문 형식으로 변환하는 기능을 수행한다. 일종의 번역기 역할
      2. 인코딩, 암호화, 압축, 코드 변환 같은 과정이 이 계층에서 수행한다.

7계층(애플리케이션 계층)

      1. 애플리케이션 프로세스를 정의하고, 애플리케이션 서비스를 수행한다.
      2. 네트워크 소프트웨어 UI 부분, 입/출력 부분을 정의하는 것이 애플리케이션 계층의 역할.

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

      1. 데이터를 상위에서 하위로 보내는 과정을 인캡슐레이션이라고 부르고,
      2. 반대로 받는 과정을 디캡슐레이션이라고 부른다.
      3. 현대 네트워크는 대부분 패킷 단위로 통신하는 패킷 기반 네트워크이다.
        → 해당 기법을 통해서 하나의 통신이 회선 전체를 점유하지 않고! 동시에 여러 단말을 통신하도록 해준다.
        (엄격히 말하면 동시 통신이 아닌, 우리가 알아보지 못할 빠른 속도록 점유가 변경되가며 통신하는 것이다)
      4. 인캡슐레이션 상황에서 4계층부터 2계층까지(총 3개의 헤더정보) 네트워크 전송을 위한 정보를 헤더에 붙여 넣는다.(문자가 아닌 비트 단위로)
      5. 헤더정보를 바탕으로 디캡슐레이션 상황에서는 각 계층에서 헤더정보를 확인해 자신에게 온 정보가 맞다면 상위 계층으로 올리고 아니라면 버린다.
        상위 계층으로 올라가는 상황에서 하위 헤더 정보를 버려진다.
      6. 헤더에 수 많은 정보들이 있지만 다음 두 가지 정보는 반드시 포함되어 있어야 한다.
        1. 현재 계층에서 정의하는 정보
        2. 상위 프로토콜 지시자
          → 상위로 갈수록 프로토콜의 개수가 많아지는데 지시자를 통해 찾아간다.
  1.  
profile

개발하는 프로 국밥러

@gugbab2

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!