이 글은 이화여자대학교 이미정 교수님의 2014년 2학기 컴퓨터 네트워크 강의를 기반으로 재구성한 것입니다. 삽화는 링크를 출처로, 저작권은 J.F Kurose and K.W. Ross에게 있다는 것을 밝힙니다.
link layer에서는 다음과 같은 내용들을 살펴본다.
- MAC addressing
- ARP
- web request senario
MAC address
network layer에 있는 IP까지는 32bit의 IP address를 사용해 destination을 표현했고, 이 정보를 사용해 forwarding table에 정보를 작성했다.
network layer 아래에 있는 link layer는 datagram을 frame으로 encapsulate한다. internet의 경우 MAC layer가 encapsulate하므로, frame header의 source/destination address는 MAC address가 들어간다.
MAC address는 link layer에서 hop to hop로 packet을 보낼 때 사용하는 주소로, 총 48bit로 를 8byte씩 나눠 :나 -를 사용해 분리한다. 예시로 1A-2B-3C-4D-5E-6F가 있다.
각 host는 network adapter를 가지고, network adapter에는 MAC address가 할당되어 있다.
ARP : Address Resolution Protocol
router에서 router로 packet을 보내기 위해서는 link에 실어 보내야 하는데, 이를 위해 frame header에 MAC address를 기재한다. 따라서 IP address와 MAC address의 mapping이 필요한데, 이 mapping 정보가 있는 ARP table을 살핀다.
ARP Table
ARP table은 IP address와 MAC address의 mapping, 그리고 TTL(유효기간)이 있는 table이다. (유효기간은 보통 20분이다.) 때문에 IP address와 MAC address의 cache라고 생각하면 된다.
ARP 과정
link layer에서 packet을 발송할 때 ARP table을 살핀다. 만약 ARP table에 해당하는 entry가 없다면 ARP를 실행한다. 과정은 아래와 같다.
- ARP를 실행한다는 것은 sender node가 receiver node에게 frame을 보낼 때, receiver router의 MAC address를 모른다는 것이다. (ARP table에 receiver router의 IP address에 해당하는 entry가 없음)
- receiver node의 IP address를 포함시킨 query를 LAN에 broadcast로 날린다.
- broadcast 하는 이유는, destination MAC address를 모르기 때문이다. broadcast할 때 MAC address는 FF:FF:FF:FF:FF:FF이며, 이는 LAN에 broadcast를 의미한다.
- 그러면 LAN에 있는 모든 node가 해당 frame을 수신하고, link layer에서는 frame header를 떼고 network layer(IP)로 올린다. 이 때 IP header의 IP address와 자신의 IP address를 비교한다.
- 다르면 버린다.
- 같으면 자신에게 온 것이므로, 자신의 MAC address를 frame header에 작성해 unicast로 응답한다.
- unicast로 응답할 수 있는 이유는, sender node MAC address는 frame header에 기재되어 있기 때문이다.
그 결과로 LAN에서 IP address에 해당하는 node의 MAC address를 얻을 수 있다.
예시: 다른 LAN으로 보내기
딱 2가지만 명심하면 된다.
- IP는 destination host로 가기 위해 다음 hop을 결정한다.
- link layer(ethernet)은 frame을 만들어 다음 hop으로 보낸다. link로 정보를 옮기기 위해 frame header에는 MAC address가 들어간다.
A가 B에게 보낸다고 할 때, 먼저 3가지를 가정하자.
- A는 B의 first hop router R의 IP address를 알고 있다. (DHCP 결과)
- A는 B의 IP address를 알고 있다. (DNS name resolution 결과)
- A는 R의 MAC address를 알고 있다. (ARP 결과)
그러면 무슨 일이 일어나는지 보자.
- IP는 destination IP address를 보고, LAN에 해당하는 subnet의 IP와 다르다면 일단 internet으로 보낸다. A의 IP는 internet으로 보내기 위해서는 R로 가야 한다는 것을 알고 있다. (R의 MAC address는 ARP로 받아온 상태이다.)
- 그러면 A의 link layer에서 frame header를 작성하는데, 이 때 destination MAC header는 R의 MAC header이다.
- R이 frame을 받으면 frame의 source MAC address, destination MAC address를 보고 자신에게 온 것인지 판단한다.
- 이후 R의 IP가 destination IP address를 보고 다음 node를 결정해 frame을 만든다.
- datagram을 건드는 것이 아니기 때문에 source IP address, destination IP address가 들어있는 IP header는 변하지 않는다.
- frame을 만들 때는 destination MAC address에 다음 router의 MAC address를 작성한다. 만약 모른다면 ARP를 수행한다.
- 이 과정을 반복해 B로 frame이 도착한다
- B의 link layer는 frame을 decapsulate해서 destination MAC address를 확인해 자신에게 온 것인지 확인한다. 자신에게 온 것이라면 network layer(IP)로 올린다.
- B의 IP는 IP header를 보고 자신의 IP address와 비교한다. 같으면 transport layer로 올린다.
Web Request Senario
노트북에 랜선을 꽂고, web browser에 domain을 입력했을 때 무슨 일이 일어나는지 보자.
이 부분은 1%의 네트워크 - 6. 마무리 : Web Server Response 포스팅과 비슷한 부분이 많다. 같이 읽으면 좋을 것 같다.
DHCP
network에 처음 접속하면 IP address를 할당받고, first hop router address, local DNS server address를 받기 위해 DHCP가 실행된다. DHCP는 application layer에 있으므로, network에 연결되면 application layer message를 만든다.
- DHCP를 호출한 시점에는 IP address를 할당받지 못한 상태이기 때문에 subnet에 broadcast를 보낸다.
- 보낼 때는 DHCP - UDP - IP - ethernet - PHy를 거쳐 link에 data를 발송한다. MAC address는 broadcast를 의미하는 FF:FF:FF:FF:FF:FF로 쓴다.
- DHCP server에 있는 link layer는 이 message가 자신에게 온 것을 알고 받는다. 그러면 DHCP ack message를 만들어 역순으로 전달한다.
- 이 때도 아직 sender는 MAC address가 없기 때문에 broadcast로 보낸다.
- client link layer가 broadcast로 온 message가 자신에게 온 것을 확인하고 DHCP ack message를 application layer까지 올린다. 그러면 IP address, first hop router address, local DNS server address를 받는다.
DHCP에 관한 내용은 하향식 접근 네트워크 - 4. Network Layer - (3) Internet Protocol 포스팅에 작성했다.
ARP
이후에는 domain name에 해당하는 IP address를 알아와야 한다. 때문에 DNS query를 작성하고 internet으로 보내야 한다. 보내려고 하니 link layer에서 first hop router의 MAC address를 모른다는 것을 알려줬다. 그러면 DNS에 앞서 ARP부터 진행한다.
- first hop router의 IP address를 아므로, LAN에 broadcast한다.
- first hop router가 해당 frame을 수신하고, 자신에게 온 것임을 확인한 후 broadcast로 MAC address를 보낸다.
- client link layer가 broadcast frame이 자신에게 온 것을 확인하고 first hop router의 MAC address를 ARP table에 넣는다.
DNS name resolve
ARP를 실행한 후에는 first hop router의 MAC address를 알게 되었다. 그러면 DNS name resolve를 실행한다. DNS는 application layer에 있으므로, 만든 message가 [DNS - UDP - IP - ethernet - Phy]를 거쳐 local DNS server로 전송된다.
이 때 다음과 같은 과정이 일어난다.
- DNS query frame이 first hop router에 도착한다.
- first hop router는 MAC header를 떼고, IP로 올려보낸다.
- router의 IP는 다음으로 어떤 hop에 가야하는지 routing table을 보고 결정한다.
- routing table은 OSPF 등의 intra AS routing과 BGP 등의 inter AS routing의 결과로 생성된다.
- router가 다음 hop으로 정보를 보낸다. 보내고, 보내고, 보내고... intra AS routing protocol을 거쳐 마침내 local DNS server에 도착한다.
- local DNS server에선s name resolution을 거치고, 응답한다. 응답할 때 packet이 router를 거치는 과정은 동일하다.
DNS에 관한 내용은 하향식 접근 네트워크 - 2. Application Layer - (4) DNS 포스팅에 작성했다.
inter AS routing, intra AS routing은 하향식 접근 네트워크 - 4. Network Layer - (5) Routing in the Internet 포스팅에 작성했다.
TCP Handshake
DNS name resolution의 결과로 domain name에 해당하는 IP address를 알게 되었다. HTTP는 TCP 위에서 돌고 있기 때문에 HTTP request message를 적기 이전에 TCP session을 먼저 생성해야 한다. TCP는 transport layer에 있으므로, [TCP - IP - ethernet - Phy]를 거쳐 server의 TCP에 도착한다.
- client가 SYN bit를 1로 설정하고 server에게 packet을 보낸다.
- server가 SYN bit와 ACK bit를 1로 설정하고 client에게 응답한다.
- client가 ACK bit를 1로 설정하고 server에게 응답한다.
packet이 internet 내부에서 움직이는 과정은 생략했다.
TCP handshake에 관한 내용은 하향식 접근 네트워크 - 3. Transport Layer - (2) TCP 포스팅에 작성했다.
HTTP request, response
TCP 3 way handshake를 거쳐 TCP session이 생성되었다. 이후 web browser가 HTTP request message를 만든다. web browser는 application layer에 있기 때문에 [HTTP - TCP - IP - ethernet - Phy]를 거쳐 internet으로 packet을 발송한다.
- frame이 first hop router에 도착한다. first hop router는 MAC header를 떼고 IP로 올려보낸다.
- router의 IP는 다음으로 어떤 hop에 가야하는지 routing table을 보고 결정한다.
- 필요시 ARP를 사용해 다음 router의 MAC address를 받는다.
- web server가 받으면 IP가 본인인 것을 확인하고 위로 올려보낸다.
- web server의 TCP는 socket으로 정보를 보낸다.
- web server application이 socket에 있는 정보를 꺼내고, 해석하고, HTTP response message를 만들어 응답한다.
- 오는 순서는 역순으로 온다.
잘못된 내용이나 오탈자에 대한 지적, 질문 등은 언제나 환영합니다.
'CS > Network' 카테고리의 다른 글
[Network] 하향식 접근 네트워크 - 6. Mobile Networks (0) | 2023.07.31 |
---|---|
[Network] 하향식 접근 네트워크 - 4. Network Layer - (6) Broadcast, Multicast (0) | 2023.07.30 |
[Network] 하향식 접근 네트워크 - 4. Network Layer - (5) Routing in the Internet (0) | 2023.07.30 |
[Network] 하향식 접근 네트워크 - 4. Network Layer - (4) Routing Protocol (0) | 2023.07.30 |
[Network] 하향식 접근 네트워크 - 4. Network Layer - (3) Internet Protocol (0) | 2023.07.30 |