라우터
- 라우터는 중계 부분과 포트 부분으로 구성되는데 중계 부분은 패킷의 중계 대상을 판단하는 동작을 담당하고, 포트 부분이 패킷을 송/수신하는 동작을 담당합니다.
- 다른 허브들과는 달리 라우터의 포트는 수신/송신처가 될 수 있습니다.
- 라우터의 각 포트에는 MAC 주소와 IP 주소가 할당되어 있습니다.
각 포트들은 포트 부분의 통신 기술의 규칙에 따라 동작하고, 중계 부분에서는 수신처 IP 주소와 중계 대상을 등록한 표를 대조하여 중계 대상을 판단합니다.
라우터 경로 표를 확인하는 방법
- 라우터는 IP 주소로 중계 대상을 판단합니다.
- 호스트 번호는 무시하고 네트워크 번호 부분만을 조사합니다.
- 게이트웨이 or 인터페이스 항목은 패킷의 중계 대상을 나타냅니다.
- 메트릭은 수신처 IP 주소에 기록되어 있는 목적지와 가까운지, 먼지 여부를 나타냅니다.
라우터의 패킷 수신 동작
- 신호가 커넥터 부분에 도착하면 PHY 회로와 MAC 회로에서 신호를 디지털 데이터로 변환합니다.
- 패킷 끝 부분의 FCS를 대조하여 오류 유무를 검사합니다. 정상이면 수신하고 수신 버퍼 메모리에 패킷을 저장하고, 비정상일 경우 패킷을 폐기 → 어차피 TCP 프로토콜에서 패킷을 재전송시킵니다.
- 패킷의 수신 동작이 끝나면 패킷의 MAC 헤더를 패기합니다. (MAC 헤더의 역할은 라우터에 패킷을 건너주는 것)
- IP 헤더의 내용을 통해 패킷 중계 실시. 넷마스크의 네트워크 부분만을 비교하여 복수의 후보 중 서브넷의 범위가 가장 작은 서브넷을 선택합니다. 네트워크 번호의 길이가 같을 경우 메트릭 값을 보고 중계 대상을 선택합니다. 해당하는 행이 하나도 발견되지 않을 경우 ICMP 메시지를 통해 송신처에 이 사실을 알립니다.
- 라우터는 패킷을 송신하기 전 TTL(Time To Live) 값을 확인하여 라우터를 경유할 때마다 이 값을 1씩 줄이다가 이 숫자가 0이 되면 패킷을 폐기합니다. → 패킷이 같은 장소를 순환하는 것을 방지
- 패킷의 크기가 출력측의 패킷 최대 길이를 초과한다면, 조각 나누기(fragmentation)을 실행합니다. IP 헤더의 플래그 필드를 확인하여 조각 나누기가 가능할 경우 패킷을 분할하고, 가능하지 않을 경우 패킷을 폐기하고, ICMP 메시지를 실행.
라우터 패킷의 송신 동작
- 출력측의 포트 규칙에 따라 패킷을 신호로 변환하여 송신합니다.
- 라우터 경로표를 통해 IP 주소를 얻고 IP 주소가 결정되면 ARP 방식으로 수신처 MAC 주소를 조사하여 MAC 주소를 설정합니다.
- 송신 패킷이 완성되면 전기 신호를 이를 변환하여 포트에서 송신합니다.
💡 IP가 이더넷에 의로한다는 것은 최종 목적지까지 패킷을 운반하는 것이 아니라 다음 라우터에 패킷을 운반하는 것입니다. MAC 헤더를 만들 떄 IP 경로표에서 다음 라우터의 IP 주소를 조사하고, 여기에서 ARP로 조사한 MAC 주소를 수신처 MAC 주소에 기록합니다. 이것이 다음 라우터까지 패킷을 운반하도록 이더넷에 의뢰하는 것을 나타냅니다. 각 라우터를 거칠 떄마다 이 동작을 반복하여 패킷이 IP의 목적지까지 운반되는 것입니다. 통신 상대까지 패킷을 전달하는 전체의 동작은 IP(라우터)가 담당하고, 이 동작을 할 때 다음 라우터까지 패킷을 운반하는 부분은 이더넷(스위칭 허브)가 담당합니다.
라우터의 부가 기능
주소 부족 사태에 대처하기 위해 사내용으로 프라이비트 주소(private address)를 사용하고, 회사에 할당된 고유한 주소를 글로벌 주소(global address)로 사용합니다.
하지만 사내 네트워크는 완전히 독립되어 있는 것이 아니라 인터넷을 통해 많은 회사에 연결되므로 위와 같이 네트워크 환경을 구성합니다. 공개용 서버쪽에 글로벌 주소를 할당하고 공개용 서버를 통해 다른 사내 네트워크에 접속합니다.
주소 변환의 기본 동작
주소 변환 장치는 주소의 대응표에서 글로벌 주소와 포트 번호를 찾아서 수신처를 대응하는 프라이빗 주소와 포트 번호로 바꿔쓰고, 사내 네트워크에 패킷을 보냅니다.
이외에도 패킷 필터링 기능이 존재합니다.
..이하 액세스 회선을 통해 인터넷 내부를 탐험하는 부분은 생략하겠습니다.