IPv4 vs IPv6
- v4와 호환성을 위해 version bit는 그대로
- 어떤 header가 v6에서 사라졌나
Classful Routing
- a,b,c,d,e 5개의 클래스로 서로 다른 주소 구분
- 네트워크 주소와 호스트 주소로 나뉨
- 클래스 D는 멀티캐스트용, 클래스 E는 reserved
Subnet
- 네트워크의 논리적인 분할
- 클래스풀 라우팅에서는 net id, host id 구분 방식
- 서브넷팅에서는 network, subnet, host의 3단계로 네트워크 세분화
- 서브 네트워크를 만들기 위해 AND 비트 연산에 의해 씌우는 마스크
- 브로드캐스팅 영역을 작게 하고, 주소를 절약할 수 있다
- 로컬 네트워크에서만 사용
- 외부로 나가는 것에는 사용 x
Variable Length Subnet Mask (VLSM)
- 각 라우터(로컬 네트워크)에서 서로 다른 길이의 서브넷 마스크를 갖더라도 정상적으로 동작하도록 서브넷 마스크를 적용하는 기법
- 호스트가 적으면 긴 서브넷 마스크, 호스트가 많으면 짧은 서브넷 마스크 적용
- IP 주소 낭비 방지
Classless Inter-Domain Routing (CIDR)
- IP 주소를 class a,b,c 같이 규격화된 구분 없이 비트 단위의 서브넷 마스크 정보도 네트워크 정보로써 함께 라우팅 하는 기법
- Subnet mask의 기술적 확장
- IPv4의 IP 주소 고갈에 대한 해소책
Special Purpose Addresses
- 0.0.0.0
- 소스 주소에서만 등장 가능, 호스트가 자기 주소를 모를 경우 사용.
- 255.255.255.255
- Limited broadcast.
- 같은 서브넷에 있는 모든 호스트에게 전달.
- 127.x.y.z
- Loopback 주소.
- 같은 컴퓨터 안에서만 통신할 때 사용.
- x.y.z.255
- Directed broadcast.
- 특정 서브넷의 모든 호스트에게 전달 가능.
Router 구조
- Routing processor
- ms 단위, 라우팅, Control Plane.
- High speed switching fabric
- ns 단위로 패킷 포워딩, Data Plane.
- 두 개로 분리됨.
- Input port function
- lookup, forwarding, queuing
- 헤더 필드를 봐서 어느 포트로 나가야 하는지 결정.
- Switch fabric에 들어가기 전에 다 결정되어야 함.
- Queuing은 switching fabric이 막힐 때 패킷이 대기하는 것.
Longest Prefix Matching
- Destination address range를 더 적은 공간을 써서 저장할 수 있고, prefix matching을 더 빠르게 할 수 있음.
11001000 00010111 00010...
Switching Fabric
- 예전에는 CPU로 한 포트에서 다른 포트로 직접 패킷을 복사했지만, DMA 버스를 써서 CPU 개입 없이 패킷을 복사할 수 있다.
- 혹은 Interconnection network 사용 가능.
- Switching rate: 스위칭 속도.
- Bus contention: 스위칭 속도가 버스 대역폭(bus bandwidth)에 의해 제한됨.
- Crossbar: 여러 포트에서 들어온 패킷을 한 번에 동시 전송 가능 (parallelism).
- Head of the Line (HOL) blocking: 큐의 맨 앞 패킷이 막히면 뒤따르는 다른 목적지의 패킷들도 함께 대기하는 현상.
NAT (Network Address Translation)
- 라우터에서 포트 번호를 적절하게 바꾸어 내보낸다.
- 외부에서 로컬 네트워크의 특정 포트를 쓰는 서버에 접속하려고 할 때, 라우터가 이 포트를 마음대로 바꾸어 버리면 그 서버에 접속할 수 없게 된다.
- 포트 포워딩으로 해결 가능.
- 문제점
- 포트 번호는 4계층(전송 계층), 3계층 장비인 라우터가 4계층 데이터를 건드리는 것은 네트워크 레이어링을 무너뜨리는 행위.
- IPv6를 쓰면 주소 부족을 해결할 수 있지만, NAT가 있어서 굳이 IPv6를 쓸 필요를 못 느끼게 함.
- End-to-end argument를 깨게 됨 (중간 장비인 라우터가 포트를 조작).
- NAT traversal: NAT 환경을 통과하기 위한 기술들.
MiddleBox
- 일반적인 라우터가 하지 않는 추가적인 일을 하는 장비를 지칭.
- 방화벽, 셀룰러망 장비, 로드 밸런서, IDS(침입 탐지 시스템), 캐시 등.
- 처음에는 폐쇄적인 Blackbox였지만, 나중에 다른 회사들도 만들게 되면서 표준화되어 Whitebox화 된다.
ARP (Address Resolution Protocol)
- IP 주소를 MAC 주소로 변환해주는 프로토콜.
- 링크 계층에 의존적인 작업을 할 때 IP를 MAC 주소로 바꾸어 준다.
- 상대의 IP 주소는 아는데 MAC 주소를 모를 때, ARP Request를 브로드캐스트로 보낸다.
- Direct delivery: 라우터를 거치지 않고 같은 네트워크 내에서 전송.
- Indirect delivery: 라우터를 거쳐 다른 네트워크로 전송.
- ARP cache: 최근에 사용한 IP-MAC 주소 매핑 정보를 유지.
- ARP packet:
- Destination MAC 주소가
FF:FF:FF:FF:FF:FF (브로드캐스트)로 되어있다.
- 이더넷 헤더의 Length/Type 필드에 ARP를 나타내는 값이 적힘.
arp -a: ARP cache 내용을 출력.
- Nonexistent host: 존재하지 않는 호스트에 ARP 요청 시 응답이 없으며,
arp -a 출력 시 incomplete로 표시됨.
Gratuitous ARP
- 호스트가 자기 자신의 IP 주소를 찾는 ARP 요청을 보내는 경우.
- 목적:
- IP 주소 중복을 확인하기 위해.
- 다른 호스트들의 ARP cache를 자신의 새 정보로 업데이트하기 위해.
DHCP (Dynamic Host Configuration Protocol)
- 호스트가 네트워크에 접속할 때 IP 주소를 동적으로 받아오는 과정.
- DHCP 동작 순서 (D-O-R-A):
- Discover: 호스트가 DHCP 서버를 찾기 위해 브로드캐스트 메시지를 보냄.
- Offer: DHCP 서버가 사용 가능한 IP 주소를 제안.
- Request: 호스트가 제안받은 주소를 사용하겠다고 요청.
- Acknowledge: DHCP 서버가 IP 주소 할당을 최종 확인.
- IP 주소 외에도 서브넷 마스크, 게이트웨이 주소, DNS 서버 주소 등을 함께 제공.
- UDP를 이용.
ICMP (Internet Control Message Protocol)
- 인터넷에서 예외적인 상황(오류, 제어 메시지)을 알리기 위해 라우터와 호스트가 정보를 교환할 때 사용하는 프로토콜.
- IP 데이터그램에 실려 전송된다 (IP 위의 네트워크 계층에서 작동).
- 주요 메시지 종류:
- Echo Request/Reply:
ping에서 사용.
- Destination Unreachable: 네트워크, 호스트, 프로토콜, 포트에 도달 불가.
- Redirect: 호스트에게 더 효율적인 라우팅 경로를 알려줌.
- Time Exceeded: TTL(Time To Live)이 0이 되어 패킷이 폐기되었음을 알림.
traceroute에서 사용.
IGMP (Internet Group Management Protocol)
MPLS (Multiprotocol Label Switching)
- 빠른 IP 포워딩을 위해, IP 주소 대신 고정 길이의 ‘레이블(Label)‘을 보고 패킷을 스위칭하는 기술.
- 경로를 미리 정하고 자원을 예약할 수 있어 QoS(서비스 품질) 향상에 기여.
DNS (Domain Name System)