본문 바로가기
망 (Network)

[네트워크] 인터넷 프로토콜(IP)

728x90

네트워크 계층 작업

  1. 라우팅
  2. IP 주소 관리
  3. 도메인 이름 관리
  4. IP - MAC 주소 변환
  5. 네트워크 분할
  6. 이 기종 LAN 연결

IP가 해야 할 일

  1. 목적지까지 패킷 전송
  2. 혼잡 제어
  3. 서비스 요구 사항
  4. 패킷 분리 처리
  5. 터널링
  6. IP 버전 관리

서비스 요구 사항(QoS) : 네트워크에 요구되는 사항, 각 응용 프로그램마다 요구사항 다름, 표시하도록 되어 있으나 무의미 해짐

응용 프로그램 신뢰성 지연 지터 대역폭
이메일 높음 낮음 낮음 낮음
파일 전송 높음 낮음 낮음 중간
웹 접속 높음 중간 낮음 중간
인터넷 전화 낮음 높음 높음 낮음
화상 회의 낮음 높음 높음 높음

 


혼잡 제어 : 혼잡이 발생하는 곳의 흐름을 변화시켜 혼잡을 완화시키는 작업

  • 호스트의 타임 아웃 시간을 늘리는 것
  • 타임아웃보다 더 효과적인 방법은 패킷을 천천히 전송하는 것 -> 슬라이딩 윈도우 크기 줄이기 => 초크 패킷
  • 패킷과 패킷의 전송간격을 조정 => 토큰 버킷 알고리즘

초크 패킷 : 윈도우의 크기를 줄일 때 사용되는 패킷

  • 분필을 뜻하는 초크는 혼잡제어에 사용되는 빈 패킷 의미
  • 상대방 호스트에게 보내는 빈 패킷이 초크 패킷 -> 초크 패킷을 받은 호스트는 윈도우 줄임
  • IP 헤더에서 초크 패킷의 역할을 하는 필드가 ECN

토큰 버킷 알고리즘 : 일정하지 않은 간격으로 도착하는 패킷을 버킷에 넣고, 보내는 쪽에서는 일정 간격을 맞추어 천천히 패킷을 처리하는 알고리즘

  • 버퍼를 이용한 혼잡제어 알고리즘

패킷 단편화

  • LAN 마다 패킷의 처리능력이 다를 뿐 아니라 다룰 수 있는 패킷의 크기도 다름 -> 처음 보낸 패킷이 여러 개로 조각나서 배달되는 경우가 발생
  • IP에는 패킷이 여러 개로 조각나는 문제에 대비하여 원본을 확인할 수 있도록 준비

Identification Number(ID Number) : 잘려나간 패킷이 여러 개 있는 경우, 같은 패킷에 있는 데이터인지 확인 할 수 있는 필드

Fragment Offset : 기준 위치로부터 얼마큼 떨어졌는지를 나타냄, 분할되기 전 패킷 데이터로부터 얼마큼 떨어진 위치에 있는 데이터인지 알려줌

More Fragment : 1이면 맨 마지막 패킷이라는 의미, 0이면 패킷이 분할되어 뒤따르는 패킷이 더 있다는 의미

ID Number = 21 : 두 개의 패킷이 하나의 패킷에서 분할

Fragment Offset = 0 : 원래 데이터의 0번째 위치

Fragment Offset = 7 : 원래 데이터의 7번째 위치에 있었음

More Fragment = 0 : 뒤로 패킷이 더 있음

More Fragment = 1 : 패킷의 끝임

 

Fragment Offset = 0 : 원래 데이터의 0번째 위치 (첫번째 패킷)

Fragment Offset = 7 : 원래 데이터의 7번째 위치 (마지막 패킷)

Fragment Offset = 3 : 원래 데이터의 3번째 위치 (두번째 패킷)

More Fragment = 1 : 마지막 패킷이니 더 이상 분할된 패킷이 없다는 것을 알림


 

터널링(IP 터널링) : 기존의 IP 패킷을 무선 전화망에서 사용하는 패킷에 집어넣고, 무선 전화망과 인터넷이 연결되는 곳까지 보냄, 이후 IP 패킷으로 전송

  • 서로 다른 종류의 통신망을 사용하여 인터넷에 접속하는 경우 -> 집에 있는 무선 공유기 고장으로 스마트폰의 핫스팟 기능을 이용하여 노트북을 인터넷에 연결하는 경우
  • 무선 전화통신망은 IP 패킷과는 다른 종류의 헤더를 사용 -> 패킷이 인터넷 망이 아닌 구간을 통과할 때 어떻게 해야 하는가의 문제가 발생

 

 

IPv4의 헤더 : 32bit(4byte)를 기준으로 나눔, 위에서부터 5줄까지 필수(5 * 4byte = 20byte), 옵션 부분은 필수 아님

 

Version : IP 버전 번호, IPv4 = 4

IHL(IP HEader Length) : 옵션을 포함한 IP 헤더의 길이, 4byte 기준, 옵션이 없는 경우(20byte) = 5

Services : 1번 줄의 8번에서 15번 bit 까지는 원래 Quality of Service 명시, 일반적인 인터넷에서는 무시

ECN : 혼잡 제어와 관련된 필드, ECT bit와 CE bit로 구성, TCP의 요청에 의해 사용되는 필드

Total Length : 헤더를 포함하여 전체 패킷의 크기, 200byte = 200

 

Identification Number : 패킷 번호를 의미, 분할 된 패킷 중 원본 패킷이 무엇인지 확인하는데 사용, 같은 ID Number를 가진 패킷은 원본에서 분할된 패킷

DF(Don't Forget) : 목적지의 호스트가 나눠진 패킷을 하나로 만들 수 없는 경우 패킷을 분할하지 못하도록 만든 필드, 패킷이 분할하지 못함 = 1

MF(More Fragment) : 뒤로 패킷이 더 있다는 의미, 마지막 패킷 = 1

Fragment Offset : 현재 가지고 있는 데이터가 원본 데이터에서 어느 위치인지 나타냄, 바이트로 표시, 맨 앞의 패킷 = 0

 

TTL(Time to Live) : 패킷이 살아있을 수 있는 시간, 패킷이 목적지에 도착 x -> 좀비 패킷, 좀비 패킷이 많아지면 네트워크 부담 커짐, 홉으로 표시

Transport Protocol : TCP인지 UDP인지 해당 패킷을 전송계층에 있는 어떤 프로토콜에게 전달해야 하는지 명시

Header Checksum : 헤더에 에러가 있는지 없는지 검사하는 16bit 코드가 들어가 있음, 에러검사 코드 중 체크썸 방식 사용, 헤더만 검사

 

IP헤더 4번 줄의 Source Address는 보내는 호스트의 IP 주소를 나타내며, 5번 줄 Destination Address는 받는 호스트의 IP 주소를 의미

 


 

 

IPv6의 크기 = 40byte(고정)

Version = 6

Traffic Class : Quality of Service가 들어감

Flow Label : 일반적으로 0으로 설정

 

Payload Length : 헤더를 제외한 데이터의 크기를 byte로 표시, IPv6는 헤더가 40byte로 고정이기에 IHL 필드 필요 없음

Next Header : Transport Protocol의 이름 변경된 것, 상위 계층에 전달될 프로토콜의 헤더 가리킴

Hop Limit : Time to Live가 변경된 것, 패킷을 살아 있을 수 있는 최대의 홉 개수

 

IPv6 주소 표기

  • 128bit(16byte)의 주소를 4개 16진수(2byte)를 하나로 묶어서 8개의 덩어리로 표시
    • ex) 9000:0000:0000:0000:1F23:2D5C:2323:34FF
  • 0000은 생략 가능 => 9000::1F23:2D5C:2323:34FF
  • IPv6와 IPv4 같이 표시하는 경우 : IPv6에 연결된 IPv4주소는 콜론(:) 두 개와 10진수로 표시
    • ex) 9000::1F23:2D5C:2323:34FF::258.231.20.12

 

인터넷 계층의 필요성과 라우터의 역할

네트워크 인터페이스 계층의 역할 : 물리적으로 직접 연결된 컴퓨터 간에 데이터 전송

인터넷 계층 : 인터 네트워킹, 네트워크와 네트워크를 연결해서 네트워크 간에 데이터를 전송하는 역할

라우터 : 서로 다른 네트워크 간에 데이터를 전송, 인터넷 계층의 역할을 구현하는 핵심 네트워크 장비

 

1번과 2번 / 3번과 4번은 통신 가능 , 하지만 1번과 4번은 통신 불가능

네트워크 A와 네트워크 B를 연결하여 직접 연결되지 않은 1번과 4번 컴퓨터 간에 데이터 전송이 가능해짐

=> 라우터의 역할이 곧 인터넷 계층의 역할

 

IP 프로토콜 : 데이터가 길을 잃지 않고 정확한 목적지에 도착할 수 있도록 하는 프로토콜

IP 주소(논리 주소) : 어느 네트워크의 어느 컴퓨터라는 것을 식별하는 주소, 네트워크 번호와 컴퓨터 번호를 조합하여 만들어짐

 

IP 주소와 인터페이스

  • IP 주소는 호스트(컴퓨터)와 라우터의 각 인터페이스에 할당됨
  • 인터페이스는 링크의 경계이며, 라우팅을 위해 각 인터페이스가 고유한 IP 주소를 가져야 함
  • 라우터는 여러 링크와 연결되므로 인터페이스 수만큼 IP 주소를 가짐

라우팅 테이블

  • 라우팅은 호스트와 라우터가 라우팅 테이블을 통해 경로를 결정
  • 라우팅 테이블은 네트워크와 라우터 간의 경로 정보를 기록함

TCP/IP 계층 간 역할

  • 인터넷 계층
    • IP 주소를 기반으로 최적의 경로를 선택해 라우팅 수행
    • 패킷에 송신지와 수신지 IP 주소를 담아 전달
  • 네트워크 인터페이스 계층
    • 물리적으로 연결된 기기 간 데이터를 전송
    • MAC 주소를 사용하여 데이터를 프레임 형태로 전송

ARP (Address Resolution Protocol)

  • IP 주소를 MAC 주소로 변환
  • 인터넷 계층에서 네트워크 인터페이스 계층으로 데이터를 넘길 때 사용됨

라우팅 과정

  • 라우터는 IP 패킷의 수신지 IP 주소를 보고 다음 경로를 결정
  • 경로 결정 후 다음 라우터의 MAC 주소를 ARP로 확인
  • MAC 주소를 프레임 헤더에 담아 패킷을 전송
  • 라우터를 거칠 때마다 MAC 주소는 변경되지만, IP 주소는 유지됨

라우터의 역할

  • 데이터가 최종 목적지에 도달하기 위해 여러 라우터를 통과
  • 각 라우터는 패킷을 다음 라우터로 전달하며, 이를 라우팅이라고 함

 


 

스위치의 역할

  • 스위치는 MAC 주소를 읽고 프레임을 중계하는 단순한 역할을 함
  • MAC 주소와 IP 주소는 할당되지 않음
  • 송신 호스트에서 받은 프레임을 수신지 MAC 주소에 따라 알맞은 포트로 전송
    1. 송신 호스트가 스위치의 ①번 포트로 프레임을 전송.
    2. 스위치는 프레임의 수신지 MAC 주소를 확인하여, 라우터 A가 연결된 ②번 포트로 프레임 전송

라우터 A의 역할

  • 스위치로부터 프레임을 받은 라우터 A는:
    1. 이더넷 헤더의 MAC 주소를 확인하여 자신이 수신지인지 확인
    2. IP 헤더의 수신지 IP 주소를 읽고 최적 경로의 다음 라우터(라우터 B)를 결정
    3. ARP 프로토콜로 라우터 B의 MAC 주소를 얻음
    4. 기존 이더넷 헤더를 버리고, 라우터 B의 MAC 주소를 포함한 새로운 헤더를 만들어 전송

라우터 B의 역할

  • 라우터 A와 동일한 방식으로:
    1. 프레임을 수신하고 IP 헤더의 수신지 IP 주소를 읽음
    2. 최적 경로에 따라 다음 라우터(라우터 C)를 결정
    3. ARP 프로토콜로 라우터 C의 MAC 주소를 얻음
    4. 새 헤더를 만들어 라우터 C로 프레임 전송

라우터 C의 역할

  • 라우터 C는 수신 호스트가 연결된 네트워크(D)임을 확인:
    1. IP 주소의 네트워크 번호를 읽어 수신 호스트가 같은 네트워크에 속함을 확인
    2. 수신 호스트의 MAC 주소를 ARP 프로토콜로 얻음
    3. 수신 호스트의 MAC 주소를 포함한 헤더를 만들어 수신 호스트로 전송

스위치의 중계

  • 라우터 C가 생성한 패킷은:
    1. 스위치의 ③번 포트로 전송
    2. 스위치가 수신 호스트의 MAC 주소를 확인하여 ④번 포트로 프레임을 중계
    3. 수신 호스트가 최종적으로 패킷 수신
728x90