라우터의 패킷 중계 동작
- 라우터는 중계 부분과 포트 부분으로 구성
- 중계 부분은 패킷의 중계 대상을 판단하는 동작을 담당
- 포트 부분은 패킷을 송, 수신하는 동작을 담당
- 라우터의 포트 부분이 무선 LAN용 하드웨어를 장착한 기종이라면 무선 LAN도 지원할 수 있다.
- 포트 부분이 이더넷인 경우 포트에 MAC 주소가 할당되어 이더넷의 송신처나 수신처가 된다. 또한 IP 주소도 할당된다.
경로표
- 중계 대상을 조사한다는 점은 스위칭 허브와 비슷하지만 라우터는 MAC 주소가 아닌 수신처 IP 주소로 중계 대상을 판단한다.
- 라우터는 경로표를 서브넷을 여러개 묶어서 저장하는 주소 집약을 사용하기도 하고 서브넷을 세분화하여 저장하기도 한다.
- 라우터의 경로표에는 메트릭이라는 항목이 존재한다. 메트릭은 수신처 IP 주소에 기록된 목적지가 먼지 가까운지를 나타낸다.
라우터의 패킷 수신 동작
- 신호가 커넥터에 도착하면 PHY 회로와 MAC 회로에서 신호를 디지털 데이터로 변환한다.
- 패킷 끝 부분의 FCS를 대조하여 오류를 점검하고 정상인 경우 MAC 헤더의 수신처 MAC 주소가 자신에게 해당하는지 조사하여 해당하면 버퍼 메모리에 저장한다.
- 주소에 해당하지 않을 경우 패킷을 폐기한다.
- 패킷 수신 동작이 끝나면 맨 앞의 MAC 헤더를 폐기한다. MAC 헤더의 역할이 현재 라우터에 패킷을 건네주기 위함이기 때문에 역할을 다한 헤더를 폐기한다.
- MAC 헤더 뒤의 IP 헤더를 보고 패킷 중계 동작에 들어간다.
- 넷마스크를 통해서 수신처 IP 주소를 AND 연산한 비트와 같은 네트워크 주소를 가진 라우터로 중계한다.
- 존재하지 않는 경우 ICMP 메세지를 송신처에 통지한다.
- 스위칭 허브의 경우 많아야 수천 대 규모의 네트워크를 가정하였으므로 중계 대상이 발견되지 않은 경우에 모든 포트에 패킷을 뿌려도 큰 문제가 없다. 하지만 라우터의 경우에는 너무나 방대한 네트워크를 가정하고 있어 중계 대상이 분명하지 않으면 패킷을 폐기한다.
기본 경로
- 경로표 마지막 행은 넷마스크가 0.0.0.0이다.
- 어떤 중계 대상과 연산해도 0.0.0.0으로 되어 있어 이 행의 게이트웨이 항목에 기본 경로를 설정한다.
패킷의 유효기간
- 중계 대상을 찾은 후 패킷을 출력측의 포트로 옮기기 전에 라우터는 IP 헤더의 TTL(Time To Live)를 갱신한다.
- TTL은 라우터를 경유할 때마다 1씩 줄어들며 0이 될 경우 패킷의 생존기간이 만료된 것으로 간주하여 폐기한다.
- 패킷이 같은 장소를 순환하는 사태를 막기 위한 조치
패킷 조각 나누기
- 포트측의 패킷 최대 길이가 각기 다르기 때문에 패킷을 조각 나누기로 분할하여 중계한다.
- TCP의 조각 나누기와 다른 점은 TCP의 조각 나누기는 데이터를 패킷에 담기 전에 데이터를 조각으로 나누어 한 패킷에 담는다.
- IP 프로톸르이 조각 나누기는 한 개의 패킷을 나누는 것이다.
- 출력측의 최대 출력 크기를 확인하고 패킷의 길이가 이보다 더 큰 경우 패킷을 분할한다.
- IP 헤더의 플래그 필드를 조사하여 분할해도 좋은지를 확인해야 한다.
- 분할 불가로 표기되어 있으면 패킷을 폐기하고 ICMP 메시지로 송신처에 통지한다.
- 분할이 가능하다면 데이터 앞 부분부터 출력 가능한 크기만큼 잘라낸다.
- TCP 헤더 이후의 데이터를 분할 대상으로 간주하여 잘라낸 후 IP 헤더를 덧붙인다.
송신하기
- MAC 주소 필드에 값을 설정하기 위해 경로표의 ‘게이트웨이’ 항목에서 패킷을 건네줄 상대를 판단합니다.
- ‘게이트웨이’ 항목에 IP 주소가 쓰여있으면 이 IP 주소가 건네줄 대상이고 이 곳이 비어있으면 IP 헤더의 수신처 IP 주소가 건네줄 대상이 된다.
- ARP 캐시를 먼저 조사하고 없으면 ARP로 MAC 주소를 조회한다.