[Network] 4. Link Layer

신명철·2022년 6월 29일
0

네트워크

목록 보기
17/17
post-custom-banner

MAC address

  • network-layer 에서는 32bit의 IP 주소를 사용했지만, LAN에서 통신하기 위해서 물리적인 MAC address를 사용한다.
  • MAC addressNIC ROM(Network Interface Card)에 있고, 16진수의 48bit를 사용한다. e.g) 1A-2F-BB-76-09-AD

ARP(address resolution protocol)

  • IP 주소를 MAC주소에 매핑하기 위해 ARP table를 사용하는데, 이를 만들기 위한 작업이 ARP
  • LAN의 모든 노드들은 ARP table 를 갖고 있는데, 여기에는 IP/MAC 매핑 정보와 TTL 정보가 담겨있음. TTL 시간(보통 20분)이 지나면 IP/MAC 매핑 정보는 삭제된다.(-> 이를 soft state 라고 함)
  • ARP table은 사실상 매핑 정보를 캐싱하고 있는 것임
  • ARP table은 LAN 관리자의 수동적인 개입없이 어떤 노드가 통신이 필요할 때만 ARP를 통해 만들어짐

ARP 흐름

node A가 node B와 통신하기를 원하지만, A의 ARP table에는 B의 MAC 주소가 없는 상황임

  1. A가 B의 IP주소가 담긴 ARP query packet을 broadcasting 함 (-> packet의 dest MAC address는 FF-FF-FF-FF-FF-FF) 이를 LAN의 모든 노드가 받게 됨
  2. B는 A에게 자신의 MAC 주소를 담아서 응답함, 이 때는 B가 A에게 unicast 함

routing to another LAN

서로 다른 subnet 통신을 위한 IP routing과 LAN 에서의 통신을 위한 MAC 를 이용해 서로 다른 LAN 에서 호스트들이 어떻게 통신하는지를 정리해보자.

  • A가 router R를 통해 B에게 보내고자 하는 상황이다.
    1. A가 B의 IP를 알고 있다고 가정한다.
    • B의 IP주소는 DNS를 통해 알아낸다
    1. A가 first hop router인 R의 IP 주소를 알고 있다고 가정한다.
    • R의 IP주소는 DHCP를 통해 알아낸다
    1. A가 R의 MAC 주소를 알고 있다고 가정한다.
    • R의 MAC주소는 ARP를 통해 알아낸다

통신 흐름

  • 알아낸 B의 IP주소가 LAN에 존재하는 IP가 아니라면(prefix를 통해 판단), A는 first hop router에게 보낸다.


1. A의 Network Layer에서 IP datagram(src: A, dest: B)을 만든다.
2. A의 Link Layer에서 헤더에 MAC address(src: A, dest: R)를 넣어 캡슐화해서 frame을 만든다

3. R에 도착한 frame은 R에 의해서 decapsulate 되고, R의 Link Layer에서 자신의 MAC address(src: R, dest:B)를 이용해 캡슐화를 해서 새로운 frame을 만들어낸다.

4. B에 도착한 frame은 decapsulate 되고, Network Layer에서 자신이 dest IP면 위로 올려보낸다.

정리

  1. IP는 목적지 host로 가기 위해 다음 hop을 결정하기 위해서 사용된다
  2. MAC은 다음 hop으로의 physical link를 타기 위해서 사용된다

www.google.com 입력 시 일어나는 일


school network에 laptop을 연결해서 www.google.com을 입력한다고 가정하자.


1. laptop은 통신을 위해서 자신의 IP, first-hop router의 IP, DNS server의 IP가 필요하다

  • DHCP를 사용해서 자신의 IP, router의 IP, DNS server의 IP를 받아온다.


2. 구글의 IP를 알기 위해서 DNS server에 접근을 해야 하기 위해 first-hop router을 거쳐야 하는데 MAC address를 알지 못한다.

  • ARP를 사용해서 first-hop router의 MAC address를 받아온다.


3. DNS server로 DNS query메세지를 first-hop router로 보내고, first-hop router는 OSPF, RIP, IS-IS, BGP 등을 통해 만들어진 routing protocol을 통해 DNS server가 있는 AS로 routing을 하게 된다.

  • first-hop router가 DNS server의 AS로 가는 과정에서 지나는 router마다 ARP를 통해서 MAC address를 받아오는 과정을 거친다.


4. DNS server는 구글의 IP 주소를 담아서 응답한다.


5. HTTP 메세지를 보내기 전 HTTP는 TCP를 사용하기 때문에 connection을 맺기 위해 3-way handshaking을 한다.

  • laptop은 TCP socket을 열고, SYN segment 를 보낸다.
  • 구글은 ACK 메세지를 보내고, SYN 메세지를 보낸다.
  • laptop은 이에 대한 응답으로 ACK 메세지를 보내면서 connection이 수립된다.
  • laptop->first-hop router로 보낼 때 ARP가 생략되는 이유는 이 전의 과정에서 ARP table이 만들어졌고, 이 매핑 정보는 20분간 캐싱되어 있는 상태가 유지되기 때문이다.


6. laptop은 HTTP request를 보내고, 구글은 이에 응답하면서 laptop의 화면에 page가 display된다.


출처: http://www.kocw.net/home/search/kemView.do?kemId=1046412

profile
내 머릿속 지우개
post-custom-banner

0개의 댓글