라우팅 테이블 

  • netstat -r  명령어로 확인 가능
  • 네트워크 대역을 찾아가는 지도와 같음

다른 네트워크와 통신하는 과정

다른 4개의 네트워크 대역이 존재하는 상황 ( A와 B가 통신하는 방법 )

 

A라는 컴퓨터가 다른 네트워크 대역에 있는 B와 통신하는 과정

1.  A는 자신의 라우팅 테이블을 확인한다.
     ( 이 때, B의 네트워크 대역( 192.168.20.0/24 )이 있어야지만 통신이 가능함 )

2. AICMP 요청을 위한 프로토콜 작성

  • ICMP 프로토콜 Type에서 요청은 08, 응답0임 

  • IP 프로토콜 작성

  • Ethernet 프로토콜 작성 ( 목적지 MAC 주소는 무엇으로 세팅될까? )
    • Ethernet가까운 곳 통신을 위한 프로토콜
    • 라우팅 테이블을 확인하면 B의 IP로 가기 위해서는 192.168.10.1로 가야함
    • 즉, Ethernet 프로토콜은 게이트웨이MAC 주소 ( 192.168.10.1 )로 설정됨

3. 패킷 전송

  • Switch2계층 장비2계층Ethernet까지만 까보고 목적지 MAC으로 패킷을 전달함 ( C에게 )

4. C( MAC 주소가 cc : cc : cc : cc : cc :cc 인 장비 )는 다른 네트워크 대역으로 패킷 전달

  • 먼저, 2계층Ethernet의 목적지 MAC을 확인하여 올바르게 온 것인지 확인
  • 3계층 IPv4IP 주소가 자신의 IP와 다르므로 자신의 라우팅 테이블을 확인

  • Ethernet 프로토콜만 다시 만들어서 라우팅 테이블에 해당하는 MAC 주소목적지를 변경해서 보냄

5. 3계층 장비라우터패킷을 받음

  • 3계층까지 확인해보고 자신의 라우팅 테이블 보고 Ethernet 프로토콜을 수정해서 보냄

6. B공유기패킷을 받고, 안쪽 네트워크 대역으로 보내줘야 하므로 Ethernet 프로토콜을 다시 작성해서 보냄

7. Switch를 거쳐 B에게 전송 

  • BICMP 요청이 왔음을 확인하고 Type00으로 바꿔 반대로 다시 수행하여 A에게 응답 전달

이 과정에서 중간중간 MAC 주소를 모른다면 ARP로 MAC을 알아오는 과정이 있다
Ethernet 프로토콜은 네트워크 대역이 변경될 때마다 재작성된다.

다음 강의를 정리했습니다.

https://www.youtube.com/watch?v=tVntagSJctc&list=PL0d8NnikouEWcF1jJueLdjRIC4HsUlULi&index=13&ab_channel=%EB%94%B0%EB%9D%BC%ED%95%98%EB%A9%B4%EC%84%9C%EB%B0%B0%EC%9A%B0%EB%8A%94IT

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

4계층 ( Transport Layer )  (0) 2023.11.09
IPv4 조각화  (0) 2023.11.09
먼 컴퓨터와 통신하는 방법 : IPv4 & ICMP ( 3 Layer )  (3) 2023.10.28
ARP 프로토콜  (1) 2023.10.26
OSI 3계층 ( Network Layer )  (2) 2023.10.23

IPv4 프로토콜

IPv4가 하는 일

  • 네트워크 상에서 데이터를 교환하기 위한 프로토콜
  • 데이터가 정확하게 전달될 것을 보장하지 않는다. ( 4계층에서 재전송 등으로 보장해줌 )
  • 중복된 패킷을 전달하거나 패킷의 순서를 잘못 전달할 가능성도 있다.
  • 신뢰성 있는 통신은 4계층이 담당

 

IPv4 프로토콜의 구조

  • 20Byte + ( 옵션:: 4Byte씩 추가로 최대 10개 붙을 수 있고 일반적으로 옵션 없이 사용 ) 
  • Source Address : 출발지 IP 주소
  • Destination Address : 목적지 IP 주소
  • Version : IP 버전 ( IPv6는 구조 자체가 달라서 사실상 0x4로 고정 )
  • IHL : IP 프로토콜의 헤더의 길이( 20 ~ 60Byte )를 4로 나눈 수로 씀.
    ex ) 20인 경우 = 0101  
  • TOS : 서비스의 형식이지만 지금은 사용하지 않아 전부 0으로 비워져있음.
  • Total Length : 상위 계층으로부터 Encapsulation 해서 내려온 페이로드까지 합친 전체의 길이 
  • Identification & IP Flags & Fragment Offset : 데이터가 경우 작게 쪼개서 보내는 데 이때 쪼개진 데이터를 알아보기 위해 사용되는 값
    • Identification : 쪼개진 데이터를 식별하는 ID , 쪼개진 애들끼리는 같은 ID를 갖는다.
    • IP Flags : 3bit
      ( X : 안씀 / Don't fragmentation : 패킷을 보내는 사람이 데이터를 쪼개지 않고 보낸다고 명시하는 것. 그러나 최대 전송 단위보다 큰 경우 전송이 안 됨 / More fragmentation: 조각화가 일어나서 더 많은 패킷이 있으니 기다리라고 알려주는 표시 )
    • Fragment Offset : 받는 쪽에서는 쪼개진 순서대로 오지 않을 수 있으므로, 순서를 알 수 있게 시작 부분으로부터 얼마만큼 떨어진 조각인지 표기하는 부분
  • Time To Live(TTL) : 네트워크 패킷의 수명으로 특정 숫자값, 3계층 장비인 라우터 등을 하나씩 넘어갈 때마다 1씩 줄어듦. 인터넷에 네트워크 패킷이 계속 살아있는 것을 방지한다.
    • Protocol : 상위 프로토콜이 어떤 것인지 알려줌 ( ICMP(3계층 01), TCP(4계층 06), UDP(4계층 11))
  •  Header Checksum : 헤더에 오류가 있는지 없는지 확인하는 값

 

ICMP 프로토콜

ICMP가 하는 일

  • ICMP ( Internet Control Message Protocol , 인터넷 제어 메시지 프로토콜 )로 상대방과 통신이 되는지 안 되는지 확인하는 역할
  • 네트워크 컴퓨터 위에서 돌아가는 운영체제에서 오류 메시지를 전송 받는 데 주로 쓰인다
  • 프로토콜 구조의 Type과 Code를 통해 오류 메시지를 전송 받는다

ICMP 프로토콜의 구조

 

  • Type : 대분류 중 아래 5가지는 알아두기
    • 0, 8 ( Echo Reply, Echo ) : 기본적인 통신 확인에 사용되는 타입으로 8로 요청 0으로 응답
    • 3 ( Destination Unreachable ) :  목적지에 도달하지 못한 상태 ( 가는 경로에서 문제가 발생 )
    • 11 ( Time Exceded ) : 목적지까지 갔는데 응답을 받지 못한 상태 ( 상대방의 문제 :: 상대 방화벽 등 )
    • 5 ( Redirect ) : Redirect는 예전에 쓰던 것으로 원격지에 있는 상대방의 라우팅 테이블을 ICMP로 수정할 때 사용
  • Code : 소분류

다음 강의를 정리한 내용입니다.

https://www.youtube.com/watch?v=_i8O_o2ozlE&list=PL0d8NnikouEWcF1jJueLdjRIC4HsUlULi&index=9&ab_channel=%EB%94%B0%EB%9D%BC%ED%95%98%EB%A9%B4%EC%84%9C%EB%B0%B0%EC%9A%B0%EB%8A%94IT

https://www.youtube.com/watch?v=JaBCIUsFE74&list=PL0d8NnikouEWcF1jJueLdjRIC4HsUlULi&index=10&ab_channel=%EB%94%B0%EB%9D%BC%ED%95%98%EB%A9%B4%EC%84%9C%EB%B0%B0%EC%9A%B0%EB%8A%94IT

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

IPv4 조각화  (0) 2023.11.09
라우팅 테이블  (1) 2023.10.28
ARP 프로토콜  (1) 2023.10.26
OSI 3계층 ( Network Layer )  (2) 2023.10.23
LAN에서 통신하는 방법 (OSI 2계층이 하는 일)  (1) 2023.10.23

ARP 프로토콜

  • ARP 프로토콜같은 네트워크 대역에서 통신을 하기 위해 필요한 MAC 주소IP 주소를 이용해서 알아오는 프로토콜

ARP 프로토콜의 구조

  • 총 28Byte 
  • Source Hardware Address : 출발지의 MAC 주소 ( 6Byte )
  • Source Protocol Address : IP 주소 ( 4Byte )
  • Destination Hardware Address : 목적지의 MAC 주소 ( 6Byte )
  • Destination Protocol Address  : 목적지의 IP 주소 ( 4Byte )
  • Hardware type : 2계층에서 사용하는 프로토콜의 타입 ( Ethernet 프로토콜 : 0x 0001  ) 
  • Protocol type : Source Protocol Address의 프로토콜 타입 ( IPv4 : 0x 0800
  • Hardware Address Length : MAC주소의 길이 ( 6Byte : 06 )  
  • Protocol Address Length : IP주소의 길이 ( 4Byte : 04 )
  • Opcode : Operation Code, 어떻게 동작하는지 나타내는 코드
    => 수행하는 동작이 요청인 경우( 0001 ), 응답인 경우( 0002

ARP 프로토콜을 사용하여 MAC 주소를 알아오는 과정

  • 같은 네트워크 대역에서 A컴퓨터가 C컴퓨터의 MAC을 알고 싶은 상황. ( ACIP 알고 있는 상황 (192.168.0.30) )

(1) AARP 요청 프로토콜을 만들고 앞에 2계층 프로토콜인 Ethernet 프로토콜을 캡슐화 ( 앞에 붙임 )

참고사항 : Ethernet의 구조 ( 목적지 MAC, 출발지 MAC, 상위 프로토콜 타입 ) 

A가 만든 ARP 요청 프로토콜 
( 요청이므로 Opcode가 1이고, 목적지의 MAC 주소는 모르기 때문에 0으로 비워둠 ) 

A가 만든 ARP 요청 프로토콜

ARPEncapsulation 하는 2계층의 Ethernet 프로토콜 

  • 목적지 MAC주소가 0xFFFFFFFFFFFF (전부 1)인 상황 : 이런 식으로 MAC 주소를 1로 꽉 채우는 경우 Broad Cast 
  • 즉, 같은 네트워크 대역에 있는 모두에게 보냅니다.

(2) 2계층 장비인 SwitchMAC주소를 확인하여 보내는 역할을 수행

  • Ethernet 프로토콜을 디캡슐화해서 보고 목적지 MAC 주소 확인하고 보냄
  • 2계층 장비 2계층까지 확인( 3계층ARP는 까보지 않음 )
  • MAC 주소가 Broad Cast이므로 같은 네트워크 대역 모두에게 전송

(3) 받은 모든 곳에서 Decapsulation 과정을 거침

  • 2계층인 Ethernet을 까보니 도착지가 Broad Cast로 제대로 온 것이 맞음
  • 따라서 3계층까지 Decapsulation해서 확인 ( A가 보낸 ARP 요청 프로토콜 )
  • 자기의 IP 주소와 목적지 IP 주소가 일치하지 않는 곳은 패킷을 버림 ( C를 제외한 모두 )

(4) CARP 응답 프로토콜은 만들고 Ethernet 프로토콜Encapsulation해서 다시 보냄

  • ARP 응답 프로토콜 
    • 응답이므로 Opcode2
    • 출발지 MAC 주소에 CMAC 주소를 써서 보냄
    • 목적지 MAC 주소는 보낸 주소를 씀 ( A의 MAC 주소 :: Ehternet에 보낸 MAC 주소 정보가 있으니 활용 )
  • Ethernet 프로토콜
    • 브로드캐스트를 할 필요가 없으니 목적지 MAC 주소로 AMAC 주소를 입력
    • 출발지 MACCMAC 주소
    • 상위 프로토콜 타입은 ARP이므로 0806

C가 응답을 위해 보내는 ARP 프로토콜과 Ethernet 프로토콜

(5) Switch는 2계층인 Ethernet까지 Decapsulation하고 목적지인 A에게 전달 

(6) A는 받은 패킷을 Decapsulation하여 c의 MAC 주소가 cc cc cc cc임을 알고 ARP 캐시 테이블에 이 내용을 저장합니다.

  • ARP 캐시 테이블IP주소MAC주소를 저장한 구조
  • 통신했던 컴퓨터들의 주소는 ARP 캐시 테이블에 남음

ARP 캐시 테이블에 c의 ip와 MAC 주소 저장

 


다음 강의를 정리한 내용입니다.

https://www.youtube.com/watch?v=LDsp-Xb168E&list=PL0d8NnikouEWcF1jJueLdjRIC4HsUlULi&index=8&ab_channel=%EB%94%B0%EB%9D%BC%ED%95%98%EB%A9%B4%EC%84%9C%EB%B0%B0%EC%9A%B0%EB%8A%94IT

3계층의 기능

  • 다른 네트워크 대역( 서로 다른 LAN )에 존재하는 네트워크까지 어떻게 데이터를 전달할지 제어하는 일을 담당
  • 발신에서 착신까지 패킷의 경로를 제어
  • IP 주소를 사용 ( cmd :: ipconfig 명령어로 확인 가능)
    • IPv4 주소 : 현재 PC에 할당된 IP주소
    • 서브넷 마스크 : IP 주소에 대한 네트워크의 대역을 규정하는 것
      :: 네트워크 대역을 어디서부터 할 지 지정하는 역할  
    • 게이트웨이 : 외부와 통신할 때 사용하는 네트워크의 출입
  •  3계층 프로토콜
    • ARP 프로토콜 : IP주소를 이용해 MAC주소를 알아오는 프로토콜
    • IPv4 프로토콜 : WAN에서 통신할 때 사용하는 프로토콜
    • ICMP 프로토콜 : 서로가 통신되는지 확인할 때 사용하는 프로토콜

일반적인 IP 주소

  • 4Byte, 10진수로 씀 ( 범위 : 0 ~ 255 )
  • 필드가 총 4개로 1Byte씩 나누어져 있으며 '.'으로 구분 

Classful IP 주소

  • 필드 단위로(classful) 네트워크를 구분하였기 때문에 주소의 낭비가 심한 방법
  • A클래스 : 0.0.0.0 ~ 127.255.255.255  
    0 0000000.00000000.00000000.00000000 ~ 01111111.11111111.11111111.11111111
  • B클래스 : 128.0.0.0 ~ 191.255.255.255
    10 000000.00000000.00000000.00000000 ~ 10 111111.11111111.11111111.11111111
  • C클래스 : 192.0.0.0 ~ 223.255.255.255
    110 00000.00000000.00000000.00000000 ~ 110 11111.11111111.11111111.11111111
  • D클래스 : 224.0.0.0 ~ 239.255.255.255
    1110 0000.00000000.00000000.00000000 ~ 1110 1111.11111111.11111111.11111111
  • E클래스 : 240.0.0.0 ~ 255.255.255.255
    1111 0000.00000000.00000000.00000000 ~ 1111 1111.11111111.11111111.11111111
  • 클래스에는 여러 개의 네트워크 대역이 존재함 ( A-1 네트워크 대역, A-2 네트워크 대역 등 ) 
    • A 클래스: 첫번째 필드까지 네트워크 대역 구분 
      0. 0.0.0 ~ 127.255.255.255 => 맨 앞 필드(1Byte)로 대역을 구분함 ( 총 128개 ) 
      : 여러 개의 네트워크 대역을 구분하는 것보단 하나의 내역많은 pc를 구분할 수 있음 ( 약 1670개 )
    • B 클래스 : 두번째 필드까지 네트워크 대역 구분
      128.0. 0.0 ~ 191.255. 255.255 
    • C클래스 : 세번째 필드까지 네트워크 대역 구분
      매우 많은 네트워크 대역, 256개의 pc 구분하므로 일반 pc에 많이 사용
    • D클래스 : 멀티캐스트를 위해 남겨둔 주소
    • E클래스 : 예약, 실험용으로 남겨둔 주소

Classfulless IP 주소

  • 필드 단위로 구분하지 않고, 서브넷 마스크를 사용하여 네트워크 대역을 구분하도록 변경
  • 서브넷 마스크로 어떻게 구분??
    • 서브넷 마스크4Byte이고 2진수로 표기했을 때 1로 시작하며, 1과 1사이에는 0이 올 수 없다는 규칙을 가지고 있다.  ( 0이 나오면 그 이후는 계속 0 ) ex:: 255.255.255.192 -> 11111111.11111111.11111111.11000000
    • 서브넷 마스크 1이 있는 곳까지 네트워크 대역 구분, 0인 부분에서부터 각 네트워크 내역의 pc를 구분
      ex:: 11111111.11111111.11111111.11000000인 경우 pc는 2^6 = 64대 구분 가능
      -> 낭비되는 주소가 줄어듦 

Classless IP 주소

  • 현재 사용하는 IPv4로 사설 IP공인 IP와 함께 사용
  • 공인 IP : 인터넷 네트워크 통신망이랑 통신할 때 사용하는 IP 주소
  • 사설 IP : 같은 네트워크 대역에서 사용하는 IP 주소
  • 사설 IP를 사용하는 장비들은 외부와 통신할 때 공인 IP로 바꿔서 통신하여 부족한 현상 해결
  • 외부에서는 사설 IP 대역의 pc를 구분할 수 없다. 공유기에게 데이터 전달하고 공유기가 그 역할을 수행
    ( NAT : Network Address Translation , 사설 IP 주소를 공인 IP 주소로 바꾸는 기술 )  

사설 IP와 공인 IP의 특징

  • 인터넷 세상에서는 공인 IP로만 통신, 외부 네트워크 대역에서는 사설 IP 대역이 보이지 않음
  • 공유기NAT Table에 어떤 대상이 요청했는지 전달하고 응답이 오면 그 대상 pc에게 전달하는 것
    • NAT Table에 없는데 요청 기록이 없는데 응답이 온다면??
      : 공유기가 받고 끝남, 이러면 만약 사설 IP에 있는 서버에게 요청이 전달되지 않을 수 있음 
        그래서 서버는 보통 공인 IP를 사용하거나 추가적인 설정을 해줘야함
        그 추가적인 설정이 바로 포트 포워딩( Port Forwarding ) // Port 는 4계층에서 다룰 예정
  • 공인 IP 1개당 2^32개의 사설 IP

 

특수한 IP 주소

  • 0.0.0.0 : wildcard, 나머지 모든 IP
  • 127.0.0.1, 127.0.0.2 등 : 127.0.0.으로 시작하는 IP들, 자신의 pc 
  • 게이트웨이 주소 : 일반적으로 공유기의 IP, 그 중 쓸 수 있는 가장 낮거나 높은 값 ( 외부로 나가는 문이라는 뜻 ) 

아래 강의를 정리한 내용입니다.

https://www.youtube.com/watch?v=s5kIGnaNFvM&list=PL0d8NnikouEWcF1jJueLdjRIC4HsUlULi&index=6&ab_channel=%EB%94%B0%EB%9D%BC%ED%95%98%EB%A9%B4%EC%84%9C%EB%B0%B0%EC%9A%B0%EB%8A%94IT

+ Recent posts