IP/이더넷 송수신 과정(1)

|

##IP/이더넷 송수신 과정(1)

패킷의 기본

  • TCP는 접속,송∙수신,연결 끊기의 각 단계에서 통신 상대와 정보를 주고받는다.
  • IP는 담당 부분에 의뢰하여 주고받는 데이터를 패킷의 모습으로 만들어 상대와 주고받는다.

  • 패킷은 ‘헤더’와 ‘데이터’ 두 부분으로 구성되고 헤더에는 수신처를 나타내는 주소 등의 제어 정보가 들어있다.

  • 먼저 패킷의 송신처가 되는 기기가 패킷을 만든다. 그리고 가까운 중계 장치에 송신한다. 중계 장치는 패킷의 헤더를 조사하여 패킷의 목적지를 판단한다. 이때 어느 수신처가 어느 방향에 있는지에 대한 정보를 기록한 표 같은 것을 사용한다. 헤더에 등록되어 있는 내용과 표에 등록된 내용을 결합하여 패킷의 목적지를 판단하는 것이다.

  • 패킷은 라우터와 허브를 통해 운반된다.

    • 라우터가 목적지를 확인하여 다음 라우터로 보낸다
    • 허브가 서브넷 안에서 패킷을 운반하여 다음 라우터에 보낸다

  • 애플리케이션->TCP->IP로 전달된 IP주소를 IP헤더에 기록하고 다음 라우터에 할당된 이더넷 주소(MAC 주소)를 조사하여 MAC 헤더에 기록한다. 이렇게 해서 이더넷에 전달하면 이더넷이 다음 허브 또는 라우터에 전달하게 된다.

  • 도착한 라우터에는 IP용 표가 있으므로 이 것과 헤더에 등록된 내용을 결합하여 다음 라우터에 패킷이 도착하도록 이더넷에 또 다시 의뢰한다.
  • 무선 LAN, ADSL, FTTH 등을 이더넷 대신 사용할 수 있다.

패킷 송∙수신 동작의 개요

  • IP 담당 부분은 패킷을 운반하는 동작 전체에서 입구 부분에 불과하다. 먼저 TCP 담당 부분이 IP 담당 부분에 패킷 송신을 의뢰하는 것부터 시작된다.

    의뢰 동작을 할 때 TCP 담당 부분은 데이터의 조각에 TCP 헤더를 부가한 것을 IP 담당 부분에게 건내준다. 이 것이 패킷에 들어가는 내용물이 되고, 이와 동시에 통신상대의 IP주소를 나타낸다.

    IP 담당 부분은 내용물을 한 덩어리의 디지털 데이터로 간주하고, 그 앞에 제어 정보를 기록한 헤더를 부가한다. 이 헤더가 IP 헤더와 MAC 헤더라는 2개의 헤더이다.

    이렇게 만든 패킷을 네트워크용 하드웨어에 건네준다. 하드웨어는 이더넷이나 무선 LAN 등을 말한다. (여기서부터 LAN 어댑터로 통일) LAN 어댑터로 전달할 때 패킷의 모습은 0과 1로 이루어진 디지털 데이터이다. 이것이 LAN 어댑터에 의해 전기나 빛의 신호 상태로 바뀌어 케이블에 송출된다.

    응답이 돌아오면 마찬가지로 전기나 빛의 신호 상태로 돌아올 것이고 이 것을 LAN 어댑터에서 디지털 데이터의 모습으로 되돌린다. 그러면 IP 담당 부분이 MAC 헤더와 IP 헤더 뒤에 이어지는 내용물, TCP 헤더와 데이터 조각을 TCP 담당 부분에게 건네준다.

수신처 IP 주소를 기록한 IP 헤더를 만든다

  • IP 담당 부분은 TCP 담당 부분에서 패킷 송∙수신 의뢰를 받으면 IP 헤더를 만들어 TCP 헤더의 앞에 붙인다. IP 헤더에서 가장 중요한 것은 수신처 IP와 송신처 IP이다. 수신처 IP 주소는

    애플리케이션->TCP 담당부분->IP로 전달받은 주소이며, IP는 패킷을 송신할 책임만 가지므로 IP주소가 잘못된 경우 애플리케이션측에 책임이 있는 것으로 간주한다.

    송신용 IP주소는 LAN 어댑터당 하나씩 할당되므로 LAN 어댑터가 여러개일 경우 하나를 선택해야한다.

  • 프로토콜 번호라는 필드에도 값을 설정한다. 프로토콜 번호란 패킷에 들어간 내용물이 어디에서 의뢰받은 것인지를 나타내는 값이다. TCP에서 받은 의뢰받은 값이라면 06(16진수), UDP에서 의뢰받은 값이라면 17(16진수)로 표기한다.

  • 이 IP용 표를 경로표라 부른다.
  • Network Destination : 수신처 IP 주소와 비교하여 어느 행에 해당하는지 찾아낸다
  • Interface : LAN 어댑터 등의 네트워크용 인터페이스를 나타내고, 인터페이스에서 패킷을 송신하면 상대에 패킷을 전해줄 수 있다는 의미이다.
  • Gateway : 다음 라우터의 IP 주소

  • 만약 라우터를 나타내는 ‘Gateway’ 항목과 ‘Interface’ 항목의 IP 주소가 같으면 라우터로 중계하지 않고 상대에게 직접 패킷을 전할 수 있는 것이 된다.

이더넷용 MAC 헤더를 만든다

  • IP 헤더를 만들었으면 IP 담당 부분 앞에 MAC 헤더를 붙인다. 이더넷의 수신처 판단구조로 사용하는 것이 MAC 헤더이다.

MAC 헤더는 수신처 MAC주소, 송신처 MAC주소, 이더타입 세 가지 항목으로 나뉜다.

IP주소는 32비트이지만 MAC주소는 48비트이며, IP주소는 ‘무슨 동 몇 번지’와 같이 그룹화 개념이지만 , MAC주소에는 이러한 개념이 없고 48비트 한 개의 값으로 받아들여진다.

이더타입은 프로토콜 번호가 비슷하다. MAC 헤더를 제외한 패킷의 내용물이 무엇인지를 이더타입으로 나타낸다. IP나 ARP라는 프로토콜의 소켓이며 가각에 대응하는 값이 규칙을 정해져 있으므로 규칙에 따라 값을 기록한다.

송신처 MAC 주소는 LAN 어댑터의 ROM에서 읽어오나, LAN 어댑터가 여러 개 일경우 하나를 선택해야 한다.

수신용 MAC 주소는 패킷을 최종 건네줄 대상을 아직 파악하지 못했기 때문에 IP경로표에서 찾은 ‘Gateway’ 항목에 기록되어 있는 IP주소의 기기가 패킷을 건네줄 상대가 된다.

ARP로 수신처 라우터의 MAC 주소를 조사한다

ARP(Address Resolution Protocol

이더넷에는 연결되어 있는 전원에게 패킷을 전달하는 브로드캐스트라는 구조가 있다. 이 구조를 이용하여 해당 IP를 갖고 있는 서브넷을 찾아낸다(모두에게 질의하고 해당 대상만 응답한다). 패킷을 보낼 때마다 이 동작을 하면 ARP 패킷이 불어나기 때문에 한 번 조사한 결과는 ARP 캐시라는 메모리 영역에 보존하여 다시 이용한다. 즉, 패킷을 송신할 때 우선 ARP 캐시를 조사하여 거기에 상대의 MAC 주소가 존재하면 ARP를 조회하지 않고 ARP 캐시에 저장된 값을 사용하는 것이다. IP 주소를 설정하여 고쳐진 경우 등 ARP 캐시에 저장된 값과 실제 데이터와 일치 않을 수 있기 때문에 일정 시간이 지나면 삭제된다.

MAC 헤더를 IP 헤더 앞에 붙이면 패킷이 완성된다. 이렇게 패킷을 만들기까지가 IP 담당 부분의 역활이다. LAN 어댑터는 완성된 패킷을 송신하기만 하면 된다.

ref 성공과 실패를 결정하는 1% 네트워크 원리