Addressing
주소 지정
- TCP/IP 5-계층 모델 기반의 인터넷 통신에서 각 계층에서의 주솟값들이 어떻게 이용되는지에 관한 개념이다.
- 네트워크 내의 모든 노드(Host, Router, Switch 등)들은 한 개체당 하나의 주소가 아닌, 각각의 Interface(경로)마다 하나의 주소를 가진다.
(즉, 4개의 네트워크에 연결된 라우터의 경우, 4개의 주솟값을 가지게 되는 것이다.)
Physical Address (물리 주소)
- 하나의 물리 네트워크 내에서 Frame(물리주소를 사용하는 L2의 패킷)이 오고가는 경우이다.
- Hub는 L1장비로써, 전달할 패킷을 목적지 노드의 위치에 관계없이, Hub에 연결된 모든 Interface로 송신하기 떄문에 충돌의 위험이 존재한다.
- 각각의 노드에서는 도착한 패킷을 Network Interface Card(Ethernet이 대표적)를 통해 그림처럼 Packet Discarded(패킷 폐기) 혹은 Packet Accepted(패킷 수용) 여부를 선택한다.
- Frame에서는 다른 계층의 패킷들과는 달리, 목적지 주소(87)을 헤더의 앞에 기재하고, 헤더의 뒤에는 소스 주소(10)를 기재한다.
- 실제 현장에서는, 그림과 같은 Hub(L1장비)보다는, Switch(L2장비)를 이용한다.
물리 주솟값
- 대부분의 LAN(물리 네트워크)에서의 물리 주소 체계는 6Byte(48bit)로 구성되며, 일반적으로 이 물리 주소를 12 Hexadecimal Digits(12자리 12진수=48bit) 형태로 표기한다.
Ex. 물리 네트워크 주소의 16진수 표현 vs 2진수 표현
\(\texttt{07:01:02:01:2C:4B} \iff \texttt{0000 0111 0000 0001 0000 0010 0000 0001 0010 1100 0100 1011}\)
Logical Address (논리 주소)
- 위 그림에서 수치값은 물리 주소(L2주소), 알파벳 값은 논리 주소(IP주소 = L3주소)이다.
- 각 노드들은 그들의 Interface(경로) 개수만큼의 주소값을 가진다.
(따라서, Router1, 2는 각각 3 Pairs의 주솟값을 가진다.)
- 위 그림에서 데이터 패킷은 L2주소까지 갖고 있으므로, Frame(L2 패킷)이다.
1. Sender에서 Router1까지의 전송 (LAN 1)
- Sender에서는 Routing Table에서 목적지 IP주소(P)에 대응되는 다음 노드로의 전송을 위한 Interface 주솟값*과 NHA 주솟값(F)**을 얻는다.
- NHA 주솟값(F)은 ARP 프로토콜***을 통해 다음 노드의 물리 주솟값(20)으로 변환된다.
- IP-Datagram(A/P)에 다음 노드(Router1)의 물리 주솟값(20)을 포함시켜 LAN 1를 건너갈 Frame(20/10)을 만들어 전송시킨다.
* Interface 주솟값 : 다음 노드로 전송하기 위해 현재 노드의 어느 인터페이스로 나가야 하는지를 정해주는 주솟값
** NHA 주솟값 : 해당 Interface로 나와서, 어느 노드로 가야하는지를 정해주는 논리 주솟값 (Next-Hopping Address)
*** ARP Protocol :
2. Router1에서 Router2까지의 전송 (LAN 2)
- Sender1으로 부터 도착한 Frame의 L2 헤더의 목적지 주솟값과 자신(Router1)의 물리 주솟값이 일치하는지를 확인한 후, L2헤더를 떼어내서 Frame을 IP-Datagram으로 만든다.
- Router1의 Routing Table에서 IP-Datagram 헤더에 있는 목적지 IP주소(P)에 대응되는 다음 노드로의 전송을 위한 Interface 주솟값과 NHA 주솟값(N)을 얻는다.
- NHA 주솟값(N)을 ARP 프로토콜을 통해 다음 노드의 물리 주솟값(33)으로 변환한다.
- IP-Datagram(A/P)에 다음 노드(Router2)의 물리 주솟값(33)을 포함시켜 LAN 2를 건너갈 Frame(33/99)을 만들어 전송시킨다.
3. Router2에서 Receiver까지의 전송 (LAN 3)
- Router1으로 부터 도착한 Frame의 L2 헤더의 목적지 주솟값과 자신(Router2)의 물리 주솟값이 일치하는지를 확인한 후, L2헤더를 떼어내서 Frame을 IP-Datagram으로 만든다.
- Router2의 Routing Table에서 IP-Datagram 헤더에 있는 목적지 IP주소(P)에 대응되는 다음 노드로의 전송을 위한 Interface 주솟값과 NHA 주솟값(P)을 얻는다.
- NHA 주솟값(P)을 ARP 프로토콜을 통해 다음 노드의 물리 주솟값(95)으로 변환한다.
- IP-Datagram(A/P)에 다음 노드(Receiver)의 물리 주솟값(95)을 포함시켜 LAN 3를 건너갈 Frame(95/66)을 만들어 전송시킨다.
- Receiver는 도착한 Frame의 물리 주솟값과 자신의 물리 주솟값이 일치하는지를 확인한 후, L2헤더를 떼어내서 Frame을 IP-Datagram으로 만든다.
- IP-Datagram의 목적지 주솟값과 자신의 논리 주솟값이 일치함을 확인한 후, L3헤더를 떼어내서 Segment(혹은 User-Datagram)으로 만들고, Port번호를 활용하여 해당 프로세스에 데이터를 전달한다.
※ 물리 주소는 하나의 물리네트워크를 지날 때 마다(Hop to Hop) 바뀌지만, 논리 주소는 출발부터 도착까지 변하지 않는다.
Port Number (포트 번호)
- L4(Transport Layer)에서 사용되는 주소 체계이다.
- 위 그림에서 \(\texttt{a, b, c / j, k}\)는 Sender와 Receiver에서 구동중인 프로세스들이다.
- 위 그림에서 주황색 필드(L4)는 포트번호, 노랑색 필드(L3)는 IP주소, 검은색 헤더(L2)는 물리주소이다.
- 포트번호는 하나의 노드가 아닌, 노드에서 구동되는 각각의 프로세스를 구분짓는 더욱 세부적인 주솟값이다.
- 인터넷 표준에 의해, L4에서 사용되는 포트 번호는 unsigned int 16bit로 구성되어 있다.
(0 ≤ Port Number ≤ 65,535)
※ L3 IP-Datagram(밑에서 두 번째 패킷)에는 주솟값에 추가적으로 Protocol Field도 추가된다.
프로토콜 필드란, L4의 프로토콜이 TCP인지 UDP인지를 구분하는 정보를 담고 있는 필드이다.
(위 그림에선 프로토콜 필드를 따로 표시하지 않았다.)
※ Receiver 측에서, 수신한 패킷의 헤더를 레이어마다 떼어내는 과정을 취하고 있는데, 사실 Sender측의 IP주소, 프로토콜 필드, 포트 번호는 삭제되지 않고 Process에 전달되는 Parameter로 포함되어 ACK 신호를 전송하는데에 이용된다.
Reference: TCP/IP Protocol Suite 4th Edition
(Behrouz A. Forouzan 저, McGraw-Hill, 2010)
Reference: Data Communications and Networking 5th Edition
(Behrouz A. Forouzan 저, McGraw-Hill, 2012)