Skip to content
DarkKaiser의 블로그
DarkKaiser의 블로그
  • 개발 관련 자료(노션)
  • Raspberry Pi(노션)
  • WD My Cloud(노션)
  • GitHub
DarkKaiser의 블로그

라우팅

DarkKaiser, 2007년 7월 7일2023년 9월 2일
라우터는 OSI 3계층에서 작동하는 인터네트워킹 장비이다. 네트워크 세그먼트 또는 전체 네트워크를 함께 연결하여 3계층의 정보를 바탕으로 라우팅과 스위치 기능을 통해 최종 목적지로 패킷을 전달한다. 네트워크와 연결되는 라우터의 포트를 인터페이스(S0, S1, S2)라 부르는데 라우터에서 각 인터페이스는 분리되어 있고 유일한 네트워크 주소(211.214.138.0, 165.229.127.0, 192.168.3.0)을 가지고 있다.
발신지에서 패킷을 내보낼 때에는 먼저 목적지 주소와 자신의 서브넷 마스크를 마스킹해서 나온 네트워크 주소가 자신이 속한 네트워크 주소와 같으면 패킷을 로컬 영역에 패킷을 전송하지만 그렇지 않으면 패킷을 라우터로 보내게 된다.
라우터에 도착한 패킷은 라우터에 의해 다시 비트 AND 연산이 되는데, 패킷의 목적지 주소와 서브넷 마스크를 적용한 결과를 라우팅 테이블의 네트워크 주소에서 찾을 수 있으면 그 주소에 해당하는 인터페이스로 패킷을 스위칭한다. 라우팅은 라우터가 패킷을 전송하기 위해 가장 적합한 인터페이스를 선택하는 기능이고, 스위칭은 한 인터페이스로 패킷을 받아들이고 이를 다른 인터페이스로 전송하는 기능을 말한다.
  • 라우티드 프로토콜

주소 방식을 바탕으로 패킷을 호스트에서 호스트로 전달하기 위해 네트워크 계층 헤더에 충분한 정보를 제공하는 네트워크 프로토콜을 말한다. 라우티드 프로토콜은 버전, 주소 등의 형식을 정의하고 이 필드를 사용하여 네트워크 계층 기능을 수행한다. IP, IPX, ?AppleTalk DDP와 같은 프로토콜은 3계층을 지원하기 때문에 라우티드 프로토콜이다. 그러나 어떤 프로토콜들은 3계층을 지원하지 않는 경우도 있는데 이것은 비경로 프로토콜로 분류되며, 예로서 ?NetBEUI가 있다. ?NetBEUI는 작고 빠르고 효율적인 프로토콜이지만 하나의 세그먼트 내에서 실행되도록 한정되어 있다.

  • 라우팅 프로토콜 라우팅 정보를 공유하기 위한 메커니즘을 제공하며 라우티드 프로토콜이 목적지로 가는 경로를 결정하는 프로토콜이다. 라우터들은 라우팅 프로토콜을 통해 경로 선정에 관련된 정보들을 상호 교환하여 라우팅 테이블을 갱신한다. 한 도메인 또는 자율시스템 내에서 라우터들 사이에 라우팅 정보를 전달하기 위해 사용되는 가장 보편적으로 사용되는 프로토콜로 RIP가 있다. 이외에 OSPF, IGRP 등이 있다.

라우팅 테이블 엔트리

[네트워크 주소, 서브넷 마스크, 다음 홉, 인터페이스, 메트릭]
  • 네트워크 주소

목적지 호스트 주소나 목적지 네트워크 주소를 정의한다. 호스트 지정 목적지 주소의 경우에는 네트워크 ID와 호스트 ID로 구성된 완전한 목적지 주소이다. 네트워크 주소는 유일하게 식별되는 고유한 값이다.

  • 서브넷 마스크

이 필드는 목적지 네트워크 주소나 서브네트워크 주소를 찾기 위해 목적지 IP 주소에 적용될 마스크를 정용한다. 호스트 지정이 디폴트 라우팅인 경우의 서브넷 마스크는 255.255.255.255이다. 서브네트워크화 되지 않은 경우에 서브넷 마스크는 클래스의 디폴트 마스크이다(클래스 A, B, C의 경우 각각 255.0.0.0, 255.255.0.0, 255.255.255.0)

  • 다음 홉

패킷이 전달되어야 하는 다음 홉 라우터의 주소를 정의한다.

  • 인터페이스

IP패킷을 전달하기 위해 어떤 네트워크 인터페이스가 사용될 것인지를 지정한다.

  • 매트릭

동일 목적지에 도달하는 여러 경로 중 가장 최상의 경로를 선택할 수 있도록 하기 위해 사용되는 경로에 대한 비용을 의미한다. 가장 낮은 매트릭을 가진 라우터가 최적의 경로이다.

네트워크

글 내비게이션

Previous post
Next post

답글 남기기 응답 취소

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다

최신 글

  • AssertJ 소개testCompile ‘org.assertj:assertj-core:3.6.2’ 2017년 9월 14일
  • 자주 사용되는 Lombok 어노테이션 2017년 9월 14일
  • 유니코드 #3 2017년 9월 14일
  • 유니코드 #2 2017년 9월 14일
  • 유니코드 #1 2017년 9월 14일

최신 댓글

    카테고리

    • 개인 자료 (1)
      • 일기 (1)
    • 주절주절 (7)
    • 프로그래밍 갤러리 (16)
    • 프로그래밍 언어 (186)
      • Java (29)
      • C/C++/VC++ (114)
      • C# (11)
      • Visual Basic (6)
      • 안드로이드 (9)
      • Objective-C (5)
      • JavaScript (4)
      • JSP/Servlet (2)
      • Python (4)
      • 어셈블러 (1)
    • 개발++ (44)
      • Book (11)
        • Joel On Software (10)
      • 프로젝트 관리 (6)
      • Maven (1)
      • 디버깅 (1)
      • DirectX (1)
      • Silverlight (1)
      • RESTful (1)
      • Hacking (1)
      • WDM (4)
      • VoIP (5)
      • 기타 (1)
    • 개발 도구 (15)
      • eclipse (14)
      • Sublime Text (1)
    • 네트워크 (7)
    • 설치 및 배포 (7)
      • InstallShield (2)
      • NSIS (4)
    • 버전 관리 (9)
      • Git (2)
      • CVS (2)
      • Subversion (5)
    • 데이터베이스 (7)
      • Oracle (3)
      • Sybase (2)
      • MS-SQL (2)
    • 단위테스트 (3)
      • JUnit (1)
      • NUnit (2)
    • 버그추적시스템 (2)
      • mantis (2)
    • 운영체제 (7)
      • Windows (5)
      • 리눅스 (2)
    • WAS (3)
      • WebLogic (3)
    • 디자인패턴 (1)
    • 디지털 이미지 프로세싱 (16)

    태그

    AutoExp.dat CppUnit CreateFile CVS Detours Generic ignore파일 Installer Isolation level LogCat OSI OSI 7 layer PRODUCTION_MODE request RunInstaller Runnable SafeInt session setPoperty startWebLogic.cmd STL synchronized TAB time_t VC Vector VS2005 날짜 디버깅 리치에디트컨트롤 매핑모드 문서화 주석 변환 사설 IP 성능 주석 트랜젝션 트리 프로젝트관리 프로파일러 픽셀 형변환 형식 확장자 히스토그램

    메타

    • 로그인
    • 엔트리 피드
    • 댓글 피드
    • WordPress.org
    ©2025 DarkKaiser의 블로그 | WordPress Theme by SuperbThemes