네트워크

[공부] 네트워크 - L4수준에서 외워야 할 것들

개발 공부하는 태준 2024. 12. 17. 01:44

네트워크 계층별 데이터와 프로토콜

네트워크 통신에서는 계층별로 사용하는 데이터 단위와 프로토콜이 다릅니다. 이를 통해 데이터가 생성, 전달, 소멸되는 과정에서 체계적으로 처리됩니다. 아래에서는 각 계층별 주요 프로토콜과 데이터 단위에 대해 설명합니다.


1. 계층별 주요 프로토콜
  • L2 (데이터 링크 계층):
    • 대표 프로토콜: 이더넷 (Ethernet)
    • 주소 체계: 48비트 MAC 주소
      • 예: 00:1A:2B:3C:4D:5E
    • 데이터 단위: 프레임 (Frame)
  • L3 (네트워크 계층):
    • 대표 프로토콜: IPv4, IPv6
    • 주소 체계: IPv4는 32비트, IPv6는 128비트
      • IPv4는 8비트씩 4개로 나뉘어 192.168.0.1 형태로 표현 (8비트 = 0~255 범위)
    • 데이터 단위: 패킷 (Packet)
  • L4 (전송 계층):
    • 대표 프로토콜: TCP, UDP
    • 데이터 단위: 세그먼트 (Segment) (TCP), 데이터그램 (Datagram) (UDP)
  • L5~L7 (세션/프레젠테이션/애플리케이션 계층):
    • 대표 프로토콜: SSL/TLS (L5), HTTP, FTP, DNS (L7)
    • 데이터 단위: 메시지 (Message)

2. 주소 체계와 데이터 단위

  • L2: 48비트 MAC 주소
    • 네트워크 카드에 고유하게 부여되는 물리적 주소입니다.
    • 데이터를 전달할 때 출발지와 목적지의 MAC 주소를 사용합니다.
  • L3: 32비트 IPv4 주소
    • 네트워크 아이디와 호스트 아이디로 나뉩니다.
      • 네트워크 아이디: 지역(번지)을 나타냄.
      • 호스트 아이디: 특정 집을 구분.
    • 브로드캐스트 주소: 255.255.255.255로, 네트워크의 모든 호스트를 대상으로 데이터를 보냅니다.


 

3. MTU와 MSS

  • MTU (Maximum Transmission Unit): 1500 bytes
    • 네트워크 계층(L3)에서 패킷의 최대 크기입니다.
  • MSS (Maximum Segment Size): 1460 bytes
    • 전송 계층(L4)에서 세그먼트의 최대 크기입니다. (MTU에서 IP 헤더(20 bytes)와 TCP 헤더(20 bytes)를 제외한 크기)

 



 

4. 헤더와 페이로드

  • 헤더(Header): 송장 역할. 데이터를 어떻게 처리할지 정보(주소, 포트 등)를 담고 있습니다.
  • 페이로드(Payload): 택배 내용물에 해당. 실제 전송하고자 하는 데이터입니다.


 

5. 캡슐화와 디캡슐화

캡슐화는 데이터가 하위 계층으로 내려가며 각 계층의 헤더가 추가되는 과정입니다. 디캡슐화는 반대로 상위 계층으로 올라가면서 헤더를 제거하는 과정입니다.

예시 비유

  1. 데이터를 보낼 때:
    • 애플리케이션(예: 크롬 브라우저)에서 작성한 편지(데이터)를 TCP가 봉투로 싸고, IP가 주소를 적고, Ethernet이 택배박스로 포장합니다.
  2. 데이터를 받을 때:
    • 택배박스(Ethernet)를 뜯고, 주소(IP)를 확인한 뒤, 봉투(TCP)를 열어 최종 데이터를 애플리케이션으로 전달합니다.


 

6. 데이터 단위의 흐름

  • L7 (애플리케이션 계층): 스트림(Stream)
    • 데이터를 연속적으로 보내는 단위로, 끝이 정해지지 않았습니다.
  • L4 (전송 계층): 세그먼트(Segment)
    • 스트림 데이터를 전송 가능한 크기로 나눕니다.
  • L3 (네트워크 계층): 패킷(Packet)
    • 세그먼트를 네트워크 주소를 포함한 단위로 변환합니다.
  • L2 (데이터 링크 계층): 프레임(Frame)
    • 패킷을 물리적 전송이 가능한 전기 신호로 변환합니다.

데이터 흐름 비유

  1. 스트림 (L7): 4MB의 큰 파일을 보낼 준비를 합니다.
  2. 세그먼트 (L4): 파일을 1460 bytes씩 나눕니다. (Segmentation)
  3. 패킷 (L3): 각 세그먼트에 주소와 정보를 추가해 패킷으로 만듭니다.
  4. 프레임 (L2): 패킷을 전기 신호로 바꾸어 네트워크를 통해 전달합니다.


 

7. 소켓(Socket)과 스트림(Stream)

소켓은 데이터를 주고받기 위한 통로이고, 스트림은 데이터를 흐르게 하는 수단입니다.

  • 스트림의 특징: 시작은 있지만 끝이 정해지지 않음. 데이터를 순차적으로 전송.
  • 소켓의 역할: 스트림을 통해 데이터를 읽고 쓰는 인터페이스를 제공합니다.

비유

  • 소켓은 전화기, 스트림은 전화로 전달되는 음성입니다.
    • 소켓이 연결을 열고 스트림을 통해 음성이 흐릅니다.

인터넷에서 데이터가 전송되는 과정

  1. 유저 모드 애플리케이션(예: 크롬)이 스트림 데이터를 소켓에 씁니다(write).
  2. 소켓은 데이터를 세그먼트, 패킷, 프레임 순으로 처리해 전송합니다.
  3. 상대방 소켓은 반대로 프레임, 패킷, 세그먼트를 해석하여 데이터를 스트림 형태로 애플리케이션에 전달합니다.


 

8.  용어 정리

  • 스트림(Stream): 데이터가 연속적으로 흐르는 파이프.
  • 세그먼트(Segment): 전송 계층의 데이터 단위.
  • 패킷(Packet): 네트워크 계층의 데이터 단위.
  • 프레임(Frame): 데이터 링크 계층의 데이터 단위.
  • 캡슐화(Encapsulation): 데이터를 보호하기 위해 각 계층의 헤더를 덧붙이는 과정.
  • MTU: 패킷의 최대 크기 (1500 bytes).
  • MSS: 세그먼트의 최대 크기 (1460 bytes).
각 계층별로 L2 이더넷, L3 IP, L4 TCP/UDP, L5 SSL, L7 HTTP 각 계층에 대표적인 프로토콜이 각 계층별로 존재함

L2 에는 48비트 주소체계를 가지며 L3 IPv4에서는 32 비트 주소체계를 가진다 이 말은 8비트가 4개라는뜻이다.

8비트라는 것은 2의 8승 그 말은 즉슨 0부터 255까지라는 것 , 0~255까지 근데 1111 1111은 브로드 캐스트 주소일 수 있다. 

네트워크 아이디는 앞에 포괄적인 주소이고 호스트 아이디는 상세 주소 (번지 수) 라고 생각하면 된다.  

L3 Packet -> 단위 데이터 

Packet 이라는 말은 L3 IP Packet 으로 외워야 한다. Packet 이라는 말은 언급하는 것만으로도 IP 프로토콜이고 레이어로 따지면 3이다. 

최대 크기는 MTU = 1500bytes 



Header 가 실어 나르는 대상을 Payload임 Header는 송장, Payload는 택배 내용물 정도로만 생각 


패킷의 특징 Encapsulation : Decapsulation 여기 지피티 문장 삽입 프레임 안에 또 하나의 프레임 L2 -> L3 -> L4 이런식으로 존재할 수 있다. 

패킷의 생성, 전달, 소멸 
데이터라는 것을 패킷으로 만듦 

어떤 데이터를 영희라는 프로세스한테 송신을 해야한다고 생각 그럼 그 데이터를 택배 즉 패킷으로 만듦

그럼 패킷을 이제 택배 기사님에게 전달을 해줘야 하는데 택배 기사님을 라우팅 해주는 게이트웨이라고 생각 

목적지를 보고 영희네 집 Host까지 찾아 올것임 

이제 그때 이름을 보고 어떤 집인지 찾아서 영희한테 줄텐데 그때 그 이름을 포트 번호가 되는 것임! 


계층별 데이터 단위

크롬 브라우저가 인터넷으로 정보를 송수신 하려면 일단 크롬 브라우저도 소켓 인터페이스를 이용해서 정보를 보내고 또 수신을 할 것임. 

근데 L2 에서 논하는 단위는 프레임이고 L3에서 논하는 단위는 Packet일거고 L4에서 논하는 단위는 Segment일 것이다 . 
그런데 User mode 애플리케이션에서 단위를 논할때 Socket에서는 Stream임. 

스트림의 특징은 시작은 있고 끝이 언젠지 정해지지 않음 프로세스에서 정해버린다 

소켓이라는 어떤 인터페이스가 있으면 이 스트림라는 것을 여기다 대고 write하는 것이다? 

문제는 인터넷이라는 곳에서 데이터의 단위가 정해져 있음 

최대 크기가 MTU, Maximun Transmission Unit (MTU) 라고 정해져 있음 = 1500 byte

세그먼트 쪽에서도 MSS, Maximun Segment Size라는 크기가 정해져 있음 = 1460 byte 

그런데 만약 스트림에서 4MB 정도 했다고 가정하면 그러면 세그먼트나 패킷이 가질 수 있는 크기를 넘어가버림 

그래서 스트림을 잘라서 분할하게됨 그래서 소켓이 타고 내려가서 세그먼트화 될 때 일어나는 것이 Segmentation 즉 분할이 일어나게 됨 

유저모드 어플리케이션에서 스트림은 단위라고 하기 뭐하다 그냥 데이터 덩어리 일 뿐이고 그게 하나의 단위가 될 때는 적어도 세그먼트를 논하고 그다음 패킷, 그다음 프레임 순서이다. 

 

Reference : 외워서 끝내는 네트워크 핵심이론 - 기초 

'네트워크' 카테고리의 다른 글

[공부] 네트워크 - L2 수준에서 외울 것  (0) 2024.12.13