옌의 로그

[Network] 외.끝.네.핵 (기초) | L3수준에서 외울 것들 본문

스터디/네트워크

[Network] 외.끝.네.핵 (기초) | L3수준에서 외울 것들

dev-yen 2024. 3. 1. 01:19

[Index]

IPv4주소의 기본 구조

L3 IP Packet으로 외워라

Encapsulation과 Decapsulation

패킷의 생성과 전달

계층별 데이터 단위

IP 헤더 형식

서브넷 마스크와 CIDR

Broadcast IP주소

Host 자신을 가리키는 IP주소

TTL과 단편화

인터넷 설정 자동화를 위한 DHCP

ARP

Ping과 RTT

 

 

https://inf.run/7B31q

 

외워서 끝내는 네트워크 핵심이론 - 기초 강의 - 인프런

TCP/IP에서 HTTP까지! 네트워크에 대한 기본 이론이 부족한 분들이 '외워서'라도 전공 이론을 이해하고자 희망하는 분들을 위해 준비한 강의입니다. 할 수 있습니다!, 네트워크, 외워서 쉽고 빠르게

www.inflearn.com

(본 게시글은 인프런 외워서 끝내는 네트워크 핵심이론 - 기초 강의에 의해 작성되었습니다.)

 

 

IPv4주소의 기본 구조

  • IP주소는 기본적으로8bit의 4자리 수로 이루어져 있다
  • 0.0.0.0 ~ 255.255.255.255 이 사용가능 범위이고, 2^32 개로 총 43억개 정도이다
  • IP주소에서 앞 24bit는 Network ID를 의미하고 뒤 8bit는 Host ID를 의미한다
  • 사용할 수 없는 주소
    • Host ID가 0인 것 (Subnet Mast가 되어버리므로)
    • Host ID가 255인 것 (Broadcast 주소가 되어버리므로) 

=> 그러므로 Host ID는 256개 중 위 2개를 제외한 254개를 사용할 수 있다

 

 

L3 IP Packet으로 외워라

  • L3 계층에서 주고받는 데이터 단위를 Packet(패킷) 이라한다
  • Header와 Payload로 나뉘며 Header 부분은 송장과 같은 역할 (출발지->도착지 정보), Payload 부분은 데이터 (내용물) 가 들어간다
  • L3 IP Packet의 최대 크기는 MTU (Maximum Transmition Unit)로, 1500 bytes이다

 

 

Encapsulation과 Decapsulation

Encapsulation (캡슐화)

  • Payload에 단계별로 Header를 붙여 하나의 Payload를 만드는 것
    (마트료시카 인형처럼 차곡차곡 넣어서 포장하는 느낌이다)
  • Payload #3 (전송 계층)
    > App(응용) 계층에서 받은 메세지를 TCP 헤더를 붙여 캡슐화하면 해당 데이터는 Segment로 네트워크 계층으로 전달된다
  • Payload #2 (네트워크 계층)
    > 전송 계층에서 받은 세그먼트에 IP 헤더를 붙여 캡슐화하면 해당 데이터는 Packet으로 데이터링크 계층으로 전달된다
  • Payload #1 (데이터링크 계층)
    > 네트워크 계층에서 받은 패킷에 Ethernet 헤더를 붙여 캡슐화하면 데이터는 Frame으로 물리 계층에 전달된다
    > 데이터 링크 계층에서는 헤더뿐만 아니라 트레일러도 페이로드 다음에 붙게된다)

Decapsulation (역캡슐화)

  • 캡슐화의 반대 작업을 통해 Header와 Payload를 분리
    (포장된 것을 다시 꺼내는 것)
  • 데이터링크 계층
    > 물리 계층에서 받은 Frame의 헤더와 트레일러를 구분해 나오는 Packet을 네트워크 계층에 전달
  • 네트워크 계층
    > 데이터링크 계층에서 받은 패킷의 헤더를 구분하여 나오는 Segment를 전송계층에 전달
  • 전송 계층
    > 네트워크 계층에서 받은 세그먼트의 헤더를 구분하여 나오는 메시지를 응용 계층에 전달

 

 

패킷의 생성과 전달

택배에 비유한 패킷 생성-전달-소멸 프로세스

  1. 상품 준비 및 포장 : 데이터 전송
  2. 택배박스에 송장 붙이기 (주소, 이름 정보 포함) : 출발-도착 정보를 담은 Header와 함께 Packet화
  3. 택배사 취합 및 배송시작 : Gateway를 지나 목적지로 이동
  4. 목적지 도착 : host 도착
  5. 수신인 확인 : Decapsulation 
  6. 포장 해체 및 상품 꺼내기

 

계층구조에서 보는 패킷의 생성-전달-소멸

  1. 데이터 패킹 [H|Frame((H|Packet((H|Segment))))]
  2. Gateway를 지나 목적지로 이동
  3. 도착후 패킹된 내용물을 계층을 지나면서 다시 해체

 

계층별 데이터 단위

  • L1 ~ L2 : Frame
  • L3 - IP : Packet
    • 최대 단위 MTU (1500bytes)
  • L3 - TCP : Segment
    • 최대 단위 MSS (1460bytes)
  • L7 : Stream
    • 단위라기 보다 데이터 덩어리 그 자체
    • 시작은 있으나 끝이 없는 연속적으로 이어진 데이터

 

 

IP 헤더 형식

  • Version (4bit) : TCP/IP 제품은 IPv4를 사용한다
  • IHL (4bit) : IP 헤더의 길이를 32비트 단위로 나타낸다. 대부분의 IP헤더의 길이는 20byte
  • Flags (3bit) : IP 라우터에 의해 분열되는 여부 + 원래 데이터의 분열된 조각이 더 있는 지 판단
  • Fragment offset (13bit) : 8바이트 오프셋으로, 조각에 저장된 원래 데이터의 바이트 범위를 나타낸다
    (단편화된 데이터를 다시 이어붙일 때 필요한 정보)
  • TTL (8bit) : 데이터를 전달할 수 없는 것으로 판단되어 소멸되기 이전에 데이터가 이동할 수 있는 단계의 수를 나타낸다
    > 1~255 사이의 값을 지정하며 라우터들은 패킷을 전달할 때마다 이 값을 하나씩 감소시킨다
  • Protocol (8bit) : 상위 계층 프로토콜

 

 

서브넷 마스크와 CIDR

Subnet Mask

  • IP주소를 Network ID / Host ID로 나누는데 사용되는 숫자 조합
    • 어떤 IP주소라도 이진 표현으로 변환 후, AND 연산을 통해 서브넷 마스크를 통과시키게 되면 네트워크 ID와 호스트 ID의 경계를 찾을 수 있다
    • IP주소와 같은 길이의 비트로 구성되며, 이진수(Binary)로 표현했을 때 Network ID는 1로, Host ID는 0으로 설정
      > 1111 1111. 1111 1111. 1111 1111. 0000 0000
      > 255.255.255.0
  • 단일 네트워크의 크기가 너무 큰 경우, 특정 기기와의 통신을 시도할 때 브로드캐스트의 영향이 너무 크기 때문에 서브넷 마스크를 사용해 네트워크를 쪼개어 브로드캐스트 영역을 보다 작은 네트워크(서브넷)으로 나눌 수 있다
    • 이를 통해 네트워크를 작은 그룹으로 조직화하고 관리할 수 있다

 

 

CIDR(Classless Inter-Domain Routing)

  • 서브넷팅 표기법
  • IP주소 뒤에 슬래시와 비트수를 숫자로 표기
  • 필요에 따라 더 작은 서브넷을 생성하거나 더 큰 주소 공간을 할당할 수 있다
    ex) 192.168.0.10/24
    • 슬래시 앞 부분은 네트워크 ID, /24는 서브넷 마스크 길이를 의미
    • 24비트 서브넷 마스크는 첫 24비트가 네트워크 ID이고 나머지 8비트가 호스트 ID임을 의미
    • 192.168.0.0 ~ 192.168.0.255 까지의 IP주소 범위를 의미하게 되는데, 여기서 네트워크 ID(호스트 ID가 0인것. 서브넷마스크), 브로드캐스트 주소를 제외하고 실제로 호스트에 할당할 수 있는 IP 주소 범위는 192.168.0.1 ~ 192.168.0.254가 된다

 

 

Broadcast IP주소

  • Broadcast는 모든 자리가 다 1로 이루어진 주소이므로 IP주소에선 마지막 8bit의 Host ID부분이 1로 이루어진 주소를 말한다
    > ex) 192.168.0.255
    • Network ID : 192.168.0
    • Host ID : 255
    • 해당 Network에서 방송주소로 사용됨

만약 IP주소가 192.168.0.10인 pc가 192.168.0.255로 데이터를 보내게 되면, 해당 패킷이 L2 Distribution에 도착하는 순간 같은 네트워크(192.168.0 대역) 안에 있는 host들에게 전부 퍼지게 된다. 위 이미지로 보면 pc1이 보낸 데이터를 pc 2,3,4,5,6 추가로 gateway까지 받게된다

 

 

Host 자신을 가리키는 IP주소

127.0.0.1

  • Loopback Address 또는 Localhost 라고 부른다

  • 네트워크 통신시 목적지 IP주소를 127.0.0.1로 설정하게 되면, 출발 host의 네트워크 계층은 이 패킷을 외부로 전송하지 않는다. 전송하지 않고 고스란히 자신이 다시 받은 것처럼 처리하여, 상위 계층으로 올려 보낸다.
  • 자신이 송신한 패킷을 그대로 수신한 효과

 

 

TTL과 단편화

TTL (Time to live)

  • 데이터의 유효 기간을 나타내기 위한 방법
    > 패킷이 무한으로 순환하는 것을 막는 역할을 함
  • 데이터가 라우터를 옮겨다니면 TTL 값이 줄어드는데, 목적지에 도착하지 못하게 되면 라우터가 해당 패킷을 버린다

단편화 (Fragmentation)

  • 데이터가 프레임으로 캡슐화될 때, 데이터의 전체크기가 MTU보다 작아야 하므로, 데이터 링크 계층에 전달되기 전에 작은 크기로 분할하는 것
  • 단편화된 패킷은 수신측 엔드포인트에서 조립한다
  • 단편화가 발생하는 경우는, VPN(IPSec)이 적용되었을 때 발생한다.
    *IPSec : 통신과정 도중, 패킷을 도청하거나 위조하는 악성 유저들로부터 패킷을 보호하기 위해 사용하는 보안 프로토콜

단편화 발생 예시

 

 

인터넷 설정 자동화를 위한 DHCP

인터넷 사용 전에 해야 할 설정은 IP주소, Subnet mask, Gateway IP주소, DNS 주소가 있다. 이때, DHCP를 활용하면 자동으로 IP주소를 할당받을 수 있다.

 

 

DHCP (Dynamic Host Configuration Protocol)

  • 네트워크의 컴퓨터 및 기타 장치에 IP 주소를 할당하기 위한 표준화된 프로토콜
  • DHCP 체계는 주소를 할당하는 서버와 할당 받으려는 클라이언트로 구성된다
  • DNS 서버 주소 또는 기본 게이트웨이 주소와 같은 네트워크의 장치에 다른 정보를 제공할 수도 있다
    (핵심은 내가 사용할 IP주소를 서버가 알려주는 것)

DHCP

  1. host가 네트워크에 연결되면 IP주소를 얻기 위해 DHCP 요청을 보낸다 (브로드캐스트 패킷이 나감)
  2. 그러면 네트워크의 DHCP 서버가 장치가 사용할 수 있는 IP주소로 응답을 보낸다

 

 

ARP

ARP (Address Resolution Protocol)

  • IP주소를 MAC주소와 매칭 시키기 위한 프로토콜
    (IP주소로 MAC주소를 알아내려 할 때 활용된다)
  • 보통의 경우 PC를 부팅하면 Gateway의 MAC주소를 찾아내기 위해 ARP Request가 발생하며 이에 대응하는 Reply로 MAC주소를 알 수 있다
    • 같은 IP 대역을 공유하는 LAN에서 단말간 통신을 하기 위해
    • L2에서의 통신에서 사용자는 IP주소를 목적지로 지정하지만 실제로는 MAC주소를 이용해 목적지를 찾는다
    • ARP Request 또한 브로드캐스트
  • 보통 캐싱된다

예시로, host가 네이버와 통신하려고 할 때 host는 목적지를 gateway의 ip주소로 잡지만, 실제 목적지는 gateway의 ip주소와 함께 MAC주소를 목적지로 지정하고 이를 활용해 전달한다.

 

 

Ping과 RTT

Ping

  • Ping 유틸리티는 특정 Host에 대한 RTT를 측정할 목적으로 사용된다
  • ICMP(Internet Control Message Protocol) 프로토콜을 이용한다
  • DoS(Denial of Service) 고역용으로 악용되기도 한다
    • ping을 서버에 미친듯이 날려서 서버가 재기능을 못하게 하는 것

RTT

  • Round Trip Time 의 약자로, 서버와의 통신(동기화) 시간을 의미
  • ping을 보냈을 때 나오는 응답 속도 (보통 ms 단위이다)
  • 거리에 비례하지 않고, 네트워크 속도에 영향을 받는다. 하지만 물리적으로 거리가 멀다면, 네트워크 속도가 빠르긴 쉽지 않다

Comments