[네트워크] 라우터의 송신과 수신

문돌이 개발자·2023년 12월 9일

라우터의 패킷 중계 동작

  • 라우터는 중계 부분과 포트 부분으로 구성
  • 중계 부분은 패킷의 중계 대상을 판단하는 동작을 담당
  • 포트 부분은 패킷을 송, 수신하는 동작을 담당
  • 라우터의 포트 부분이 무선 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 주소를 조회한다.
profile
까먹고 다시 보려고 남기는 기록

0개의 댓글