Address Resolution Protocol(ARP)
- 논리적 주소: IP 주소(통신용 주소)
- Network층에서 사용한다.
- "호스트가 인터넷에 연결되었을 때" 부여된다.
- 물리적 주소: Ethernet MAC 주소
- DataLink층에서 사용된다
- hardware가 제조사에서 나왔을 때 부여된다.
ARP 사용하는 이유?
- frame: header + payload(IPheader + data)이므로, datalink 층에서는 IP 주소를 알 수 없다.
- 대신, frame 전송할 때에는 MAC 주소를 이용한다.
- 라우팅할 때 des IP 주소 안다. 해당 IP 주소를 가진 MAC 주소를 알아야한다.
- ARP가 "이 IP 주소 가진 사람 누구니? MAC 주소 알려줘"
ARP 어떻게 하는거니?
- 송신자는 네트워크 내의 모든 장치에게 ARP 요청 (broadcast)
- ARP 응답: 송신자에게 자신의 MAC 주소 보낸다. (unicast)
- 나머지 호스트들은 받은 패킷 버린다.
- 송신자의 mac 주소 알기 때문에
- 자신의 ARP table에 저장한다.
- 동일한 장치에 데이터를 다시 보낼 때 마다 MAC 주소를 물어볼 필요가 없어집니다.
- datalink protocol로 여긴다.
- Hardware type: network type (Ethernet)
- Protocoal type: ARP를 사용하는 protocol (IP)
- Hardware length: physical address length
e.g Ethernet = 6
- Protocol length: logical address length
e.g.: IP = 4
- Operation: ARP request or reply
Encapsulation of ARP packet
- data link frame의 data 부분에 캡슐화 된다.

ex)

Dynamic Host Configuration Protocol
- Ethernet(physical) 주소: 제조업자가 만듦
- IP(logical)주소:
- 인터넷워크의 구조를 반영해야 하며, 장치가 위치한 네트워크에 따라 달라진다.
- 장치가 이동할 때마다 IP 주소가 변경되어야 한다.
- 이는 수동으로 IP 주소를 설정하는 것이 번거롭고 오류가 발생하기 쉽다는 것을 의미합니다.
- DHCP 서버가 자동으로 IP 할당한다.
- 호스트에게 일정 시간 동안 IP 주소를 대여(lease)하고, 호스트가 계속해서 해당 주소를 사용하고자 할 경우, 주소 재배정을 허용한다.
- 응용계층에 속한다.
- 새로 부팅되거나 네트워크에 연결된 호스트는 DHCPDISCOVER 메시지를 특별한 IP 주소(255.255.255.255)로 보낸다. 이것은 네트워크 상의 모든 장치에 메시지를 브로드캐스트하는 방식입니다.
- DHCP realy agent는 이 메시지를 DHCP 서버로 유니캐스트하여 전송하고, 서버로부터의 응답을 기다립니다.
ICMP(Internet Control Message Pool
IP(NETOWRK layer) 는 손실 발생 시 error을 알려주는 매커니즘을 가지고 있지 않는다.
-> ICMP(NETWORK layer): source destination에게 error 알려주기
하는 일: error reporting & Query(network 상태정보 알기)

Error reporting
- ICMP는 아래 상황에서 source IP address로 error reporting을 한다.(오류 수정X)
- destination unreachable(routing table에서 prefix 매칭이 안된경우)
- source quench(근원지 억제)
- 라우터 혹은 host의 queue가 꽉 찬 경우(data drop된다)
- Time exceeded
- TTL이 0이 되고, 목적지가 아닌 경우, packet이 버려진다
- Parameter Problems
- header을 보니 이상한 점 발견(ex IPV7이라고 쓰인 경우)
- redirection(재지정)
- multiple gateway routers가 있을 때
- host가 default gateway로 보냈는데,
- router가 보기에, 더 좋은 길을 찾으면, source node에게 gateway router를 재할당하라는 report를 보낸다.
- ICMP packet이 ICMP packet을 만들어 내지 않는다.(위의 상황이 나타나더라도)
- 절단된 패킷들의 ICMP 패킷이 발생하면, ICMP 패킷은 첫번째 fragment에 대해서만 발생한다.
- ICMP 는 multicast packets 들을 위해서는 안마들어진다.(unicast만!)
- ICMP는 special destination address를 가지고서는 안만들어진다.
Query
- Echo request & reply
- 다른 라우터나 호스트가 활성화 되었는지?
- ping, tracerroute와 같은 디버깅 도구에서 확인 가능
- 왕복시간 체크도 가능
- Time stamp request & reply
- Address mask request & reply
- IP address를 알고, mask를 모를때 address mask request를 broadcast,
- any address mask를 가진 node가 reply
- router solicitation and advertisement
Ping
- [query]echo request & reply message 사용
traceroute(tracert) operation (중요)
- source와 destination 호스트 사이 router들 trace
- [error reporting] time exceeded 와 unreachable message 이용

- 첫번째 traceroute message: TTL = 1 -> 첫번쨰 라우터 IP 주소 얻음
- 두번쩨 : TTL = 2 -> 두번째 라우터
- n 번째 : TTL = n+1 -> unreachable destination
(port번호를 찾을 수 없어) -> 목적지 도착 의미
Network Address Translation

: 네트워크 주소 변환
[문제] IP 주소 부족해 -> 사설 IP
- 사설 주소와 범용 주소 mapping
- 사설 네트워크 생성, 외부 네트워크는 볼 수 없고, 범용 주소만 보임
- NAT 라우터만 알고있다.
주소 변환
- 라우터에서 나갈 때 (src 사설주소->범용주소)
- 라우터로 들어올 때 (des 범용주소->사설주소)
사설 주소
- LAN에서 사용된다.
- 범용 주소로 사용되지 않는다.
- unique한 IP가 아니다
Port Forwarding
- client안에 server가 있을 때, client는 서버에 address 할 수 없다.
-> 내가 어떤 destination port에서 기다리고 있는지 local IP address에게 알려주기