Mac addresses and ARP
•
ARP = Address Resolution Protocol
•
네트워크 계층에선 32Bit의 IP주소를 가지고 목적지를 찾아감
•
노드와 노드간 통신시 물리적 특성에 의해서 결정된 Frame에 캡슐화 한다.
•
MAC 주소
◦
48Bit의 MAC 주소 = 생산시 정해져서 나오게 됨
ARP : Address Resolution Protocol
데이터를 전송할때 Frame을 MAC 주소로 보내야하는데 우리가 아는건 IP 주소뿐임
그렇다면 이 문제를 어떻게 해결할 것인가 ⇒ 해당 문제를 해결하기 위한것이 ARP
•
IP와 MAC 주소간의 매핑을 저장해놓는 테이블 = ARP table
•
해당 매핑을 TTL 시간만큼만 유지됨
◦
TTL ⇒ 일반적으로 20분
ARP protocol: same LAN
ARP table은 어찌생성이 될까? ⇒ 그건 ARP protocol을 이용하게 됨
•
전송자 A가 처음엔 B의 MAC 주소를 모름
◦
A가 B의 IP를 첨부해서 ARP 쿼리를 브로드캐스트함
◦
목적지 MAC 주소는 Broadcast를 뜻하는 FF-FF-FF-FF-FF-FF로 보냄
◦
B는 ARP 패킷을 통해서 MAC 주소를 보내주게 됨
•
ARP table은 일종의 캐시 역할임
◦
일정 시간동안 캐시를 가지는 이유는 A가 B의 MAC주소를 알아낼 경우 앞으로 한동안 데이터를 보낼 확률이 높기 때문에 미리 캐싱해두는게 좋음
Addressing: routing to another LAN
1.
A는 IP계층에서 목적지 B로 가기 위해서는 R로 보내야 한다는걸 알게 됨
a.
IP의 datagram엔 A와 B의 IP주소가 수신지, 목적지로 적히게 됨
2.
해당 datagram이 link계층으로 넘어오면 A의 src MAC 주소와 나가야 하는 R의 dest MAC주소를 만들게 됨
3.
R에서는 MAC이 제대로 자신에게 온건지 캡슐을 풀어서 확인하게 됨
4.
이후 IP계층으로 넘어가서 목적지를 확인함
5.
다시 B에게 전달하기 위한 MAC 주소를 캡슐화 함
a.
R의 인터페이스 src 1A-23-F9-CD-06-9B / B의 MAC 주소 dest 49-BD-D2-C7-56-2A
시나리오
학생이 노트북을 들고 캠퍼스 네트워크에 연결했고, 구글에 송/수신 하는 시나리오
1.
노트북이 네트워크에 참여했을때 DHCP를 통해서 IP주소를 할당받음
a.
이때 DHCP를 통해서 firts-hop라우터, DNS서버 정보도 함께 정보를 가져옴
b.
DHCP 클라이언트는 UDP를 통해서 메세지를 브로드캐스팅함
2.
구글의 URL을 가져올 수 있도록 DNS 서버에서 주소를 가져와야 함
a.
DNS쿼리 메세지를 만듦
b.
UDP 세그먼트로 캡슐화됨
c.
firts-hop라우터의 MAC주소를 ARP로 알아내서 link계층에 실어서 라우터로 보냄
d.
라우터는 inter-AS protocol을 통해서 작성된 라우팅 테이블을 lookup함
e.
DNS 서버로 전송된 쿼리는 구글의 IP를 lookup해서 replies해줌
3.
가져오게 된 IP주소로 HTTP 요청을 보내게 됨
a.
먼저 TCP 커넥션을 맺기위한 handshake 를 위해서 메세지를 생성함
b.
HTTP 메세지를 생성하고 구글의 IP를 목적지로 요청을 보내게 됨
4.
이제 응답을 보내주게 되어서 사용자의 화면에 구글 페이지가 나타나게 됨