TIL 01. 네트워크 시작하기

1. 네트워크 구성도 살펴보기

  • 홈 네트워크와 데이터 센터 네트워크의 구성과 차이로 내용이 시작된다. 이 중 데이터 센터 네트워크와 관련된 내용엔 익숙지 않은 내용들이 있다.

    1. 스파인-리프 구조
    2. 리프 스위치
    3. 10G Base-T

    등등의 내용들이 있는데 나중에 읽을 케이블과 커넥터(2-3장), 네트워크 디자인(13장)에서 각기 상세하게 다루게 된다.



2. 프로토콜

  • 네트워크에서 통신할 때의 규약을 통상적으로 프로토콜이라 일컫는다.
  • 기존의 프로토콜 계층 정의는 OSI 7 계층의 정의로 불려졌지만, 과거에 비해 좋아진 기술력으로 인해 4 계층으로 줄어든 TCP/IP 계층이라고 하기도 한다. 광의의 TCP/IP와 협의의 TCP/IP라는 용어로도 나눌 수 있다.
    1. 광의의 TCP/IP - 어떤 계층을 쓰든 간에 통신을 하는 행위 자체를 의미. (하단의 프로토콜 스택과 같은 맥락이라 보면 될 것 같다.)
    2. 협의의 TCP/IP - L4(전송) 계층에 따른 통신 규약을 통칭.
  • 여러 가지 프로토콜이 있지만, 그 중에 TCP/IP 프로토콜은 프로토콜 스택이라 부른다. 각 프로토콜은 별도 계층에서 각기 사용되지만, 묶음으로 사용하기에 스택이라 부른다.


3. OSI 7 계층과 TCP/IP

* OSI 7계층

계층 기본 용어 약어 데이터(PDU)
7계층 Application Layer
애플리케이션 계층
L7 Data
6계층 Presentation Layer
프레젠테이션(표현) 계층
L6 Data
5계층 Session Layer
세션 계층
L5 Data
4계층 Transport Layer
트랜스포트(전송) 계층
L4 Segments
3계층 Network Layer
네트워크 계층
L3 Packets
2계층 Data Link Layer
데이터 링크 계층
L2 Frames
1계층 Physical Layer
피지컬(물리) 계층
L1 Bits

*PDU - Procotol Data Unit - 각 계층에서의 데이터 단위.



4. OSI 7계층별 이해하기

1) 피지컬 계층 (L1)

  • 물리 계층으로 물리적 연결과 관련된 정보 정의. 주로 전기 신호를 전달하는 데 초점이 맞춰져 있다.

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

  • L2 계층의 핵심은 정확한 주소로 통신을 주고 받는 것이다. L1 계층은 전기 신호를 잘 보내는 것이 주 목적이라면, L2 계층에선 그 전기 신호가 올바른 네트워크 인터페이스(MAC 주소)로 왔나를 검증하는 계층이다.

3) 네트워크 계층 (L3)

  • IP 주소와 같은 논리적인 주소가 정의되는 계층. IP 주소를 구성하는 네트워크 주소 부분과 호스트 주소 부분 같은 속성에 대해 후에 3장에서 상세하게 다룬다.

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

  • 앞서 L1~L3 계층을 거쳐 들어온 네트워크 패킷들이 각기 최종 목적지(ex : L7 Application 계층의 모듈로 정상 전달되도록)까지 유실되지 않거나 순서가 바뀌지 않게 바로잡는 역할을 한다.
    • L4 계층 - TCP 프로토콜의 경우, 3-way HandShaking 과정을 통해 패킷의 순서를 보장한다. 즉, 높은 신뢰성을 보장한다.
    • L4 계층 - UDP 프로토콜의 경우 신뢰성 보장이 안 되지만, 속도가 빠르다는 상대적인 장점이 있다. (흔히 스트리밍 서비스에서 사용하는 프로토콜은 UDP 라 암기해 두면 이해하는데 도움될 것이다.)

5) 세션 계층 (L5)

  • 양 끝단의 각 프로세스(연결 주체)가 연결을 성립할 수 있도록 도와주고, 그 연결을 안정적으로 유지되도록 관리하고 작업 완료 후 끊는 역할을 하는 계층이다.

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

  • 표현 방식이 다른 시스템이나 애플리케이션 간의 통신을 돕기 위해 통일된 구문 형식으로 변환시키는 기능을 하는 계층이다.

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

  • 애플리케이션 프로세스를 정의하고, 서비스를 수행하는 계층이다. 많은 프로토콜이 존재하지만 대표적으로 HTTP, SMTP, TELNET, FTP 등이 존재한다.


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

  1. 인캡슐레이션 - 애플리케이션 계층(=L5 ~ L7 계층, 상위 계층)에서 데이터를 데이터 플로 계층(= L1 ~ L4 계층, 하위 계층)으로 내려보내면서 패킷에 데이터를 넣을 수 있도록 분할하는 과정
  2. 디캡슐레이션 - 데이터를 받는 과정, 즉, 전기 신호(=데이터)를 입력 받아 데이터 플로 계층(=L1 ~ L4 계층, 하위 계층)에서 애플리케이션 계층(=L5 ~ L7 계층, 상위 계층)으로 올려보내 주는 과정.
  • 2가지 용어는 네트워크를 구성하는 단위인 패킷의 구조 중 헤더에 어떤 정보가 필수로 담기는가? 부터 알면 접근하기 한결 쉽다.
    1. 현재 계층에서 정의하는 정보
    2. 상위 프로토콜 지시자


!! 왜 위 정보가 필요할까?

1) 현재 계층에서 정의하는 정보

  • L4 계층(트랜스포트 계층)의 주된 목적은 보내는 쪽에서는 큰 데이터를 잘 분할하고, 받는 쪽에서는 잘 조립하는 것이다. 그러기 위해 데이터에 순서를 정하고 받은 패킷의 순서가 맞는지, 빠진 패킷은 없는지 점검하는 역할을 담당하며 이에 관한 정보를 헤더에 적어 넣게 된다. 각 계층의 헤더마다 정의되는 데이터는 다르며, 그 구성은 간략하게 아래와 같다. (각 상세 내용은 후술하도록 한다.)

    1. L4 중 TCP 프로토콜에서는 시퀸스(Sequence), 애크(ACKnowledgement) 번호 필드로 위의 데이터를 표기한다.

      → 1. L4 계층 헤더의 구조

      Source Port Destination Port
      Sequence Number
      Acknowledgement Number
      Data Offset Reserved TCP Flags Window Size
      Header and Data Checksum Urgent Pointer
      Options

    2. L3 계층에서는 논리적인 주소인 출발지, 도착지 IP 주소를 헤더에 표기한다.

      → 2. L3 계층 헤더의 구조

      Version IHL DSCP ECN Total Length
      Identification IP Flags Fragment Offset
      Time to Live Protocol Header Checksum
      Source Ip Address
      Destination IP Address
      Options (if IHL>5)

    3. L2 계층에서는 MAC 주소를 정의하며, L3 계층처럼 L2 계층도 출발지, 도착지 MAC 주소 정보를 헤더에 표기한다.

      → 3. L2 계층 헤더의 구조

      Destination MAC
      Destination MAC Source MAC
      Source MAC
      Ether Type


2) 상위 프로토콜 지시자

  • 프로토콜 스택은 상위 계층(= L5 ~ L7 계층, 애플리케이션 계층)으로 올라갈수록 종류가 많아진다.
  • 인캡슐레이션 과정에서는 상위 프로토콜이 많아도 문제가 없지만, 디캡슐레이션하는 목적지 쪽에서는 헤더에 아무 정보가 없으면 각 계층에서 어떤 상위 프로토콜로 데이터를 보내야할 지 결정할 수 없다.
    ex) L3 계층에서 IP 주소를 확인하고 L4 계층으로 데이터를 올려보낼 때, 헤더에 상위 프로토콜 정보가 없다면 TCP로 보내야할 지, UDP로 보내야할 지 구분할 수 없다.
  • 위의 예시와 같은 문제가 발생하지 않도록 인캡슐레이션하는 쪽에서는 헤더에 상위 프로토콜 지시자 정보를 포함해야 한다.