host와 라우터: node
communication path를 통해 node들을 연결하는 채널 통신: links
data link 레이어는 datagram을 한 노드에서 물리적으로 인접한 다른 노드로 link를 통해 전달해야 하는 의무를 가지고 있다.
framing:datagram을 frame으로 포장. mac 주소 관련 헤더 추가.
link access: shared medium 있으면 channel access
reliable delivery
모든 호스트의 adaptor(=nw interface card, NIC)혹은 chip (Ethernet card)에 구현된다.
※ L2 스위치와 hub의 차이는?
L2 스위치는 버퍼가 있어서 생각하고 보내기 가능 → 링크들의 스피드가 서로 달라도 됨!
허브는 버퍼가 없어서 들어오는 족족 다 보냄(flooding) → 링크들의 스피드(bw)다 똑같아야 함
※single shared broadcast channel에서...2개 이상 노드의 동시 전송 발생하면?
→ interference(전파 간섭)! 노드가 2개 이상의 시그널을 동시에 받으면 collision이 발생한다.
determine when node can transmit. 충돌 피하기 위해...
1. channel partitioning
LAN addr, physical addr이라고도 부름
48 bit mac addr: NIC Rom에 넣거나, sw적으로 세팅. 계층 구조가 아님(컴퓨터가 어디에 있는 같은 mac 주소를 사용할 수 있다.)
ip addr: postal addr (내가 세팅한 주소)
mac addr: social security number(공장에서 찍혀나온 주소. 안바뀜)
next hop ip 알고 있고, 이제 L2의 mac addr을 알고 싶다면 ARP를 사용해야 함! 각 노드들은 ARP table 가지고 있다.
ARP table?
ip/mac addr mapping.
시나리오: a가 b에게 datagram보내고 싶은데, a의 ARP table에 b의 mac 주소가 없는 상황.
a는 b의 ip 주소 포함한 ARP 쿼리 패킷을 브로드케스트함. (이 ip 가진 애의 mac을 알려줘!)
b가 해당 패킷 받으면, a에게 자기 mac 주소를 알려줌
a는 자신의 ARP table에 b의 ip-mac 주소 쌍 넣고 TTL 시간동안 보관.
a가 라우터 R을 거쳐 b에게 datagram 보내려고 할때, a는 DNS에 의해 b의 ip알고, DHCP에 의해 R의 ip도 알고, ARP에 의해 R의 mac도 안다고 가정.
a의 datagram에서 ip src와 ip dst는 고정! mac src와 mac dst는 계속 바뀌게 된다.
DHCP → ARP → DNS → HTTP의 통합적인 과정을 이해해 보자!
자신의 ip 주소, DNS 서버의 ip 주소, first hop 라우터의 ip 주소를 알기 위해 DHCP 사용! DHCP는 사용자가 세팅 안해도 위 3가지 ip 주소를 알아서 세팅. 어떻게? DHCP 서버 돌리는 라우터에 요청해서 알아옴.
DNS 쿼리 날리려면 first hop 라우터의 mac 주소가 필요함! ARP 쿼리를 브로드케스트해서 mac 주소를 알아낸다.
DNS 쿼리 이용해서 최종 목적지로의 ip 주소 알아낸다.
TCP 세션을 맺는다.
TCP 소켓으로 HTTP request가 날아간다. 이 HTTP request는 www.example.com 으로 가고 웹서버의 HTTP reply가 다시 클라에게 돌아온다. → 사용자의 컴퓨터에 화면 띄우기 성공!
진짜 토나오게 양 많았던 수업... 이었는데 이렇게 정리해놓고 보니 얼마 안되는것 같기도 하고😅
네트워크에 대해 잘 배울 수 있어서 좋았고 학점도 만족스럽다. 하지만 종이노트에 정리한걸 백업하는 짓은 앞으론 하지 않을 것이다...