4. 네트워크 계층
Router
- forwarding: 들어온 패킷의 목적지 주소와 포워딩 테이블의 엔트리를 매칭시켜서 그 엔트리에 해당하는 링크로 전달
- routing: 포워딩 테이블을 만들어주는 역할을 담당
라우터는 오직 들어온 패킷을 라우팅 알고리즘에 따라 다음 라우터로 전달하는 역할만을 담당
- ver: IP 프로토콜의 버전, 현재는 IPv4 사용
- length: 패킷의 총 길이
- source IP address, destination IP address: 메시지를 생성해서 보내는 사람의 IP 주소, 받는 사람의 IP 주소
- time to live: 처음에 값을 주고 하나의 라우터를 지날 때마다 -1, 0이 되면 해당 패킷 사라짐
- upper layer: TCP인지 UDP인지(상위 레이어의 정보)
- data 부분에는 TCP 혹은 UDP 세그먼트가 들어감
IP 헤더 - 20바이트, TCP 헤더 - 20바이트 → 총 40바이트의 오버헤드 발생
IPv4 Addressing
NIC(Network Interface)를 지칭하는 주소
32비트 주소체계, 계층화
네트워크 아이디(prefix, 서브넷 아이디)와 호스트 아이디로 나뉨
Subnet Mask: 어디까지가 네트워크 ID인지, 어디까지가 Host ID인지 나타냄
ex) 255.255.255.0에서 앞의 3개가 네트워크 아이디, 뒤의 1개가 호스트
Subnets
network id = prefix = IP address = subnet
같은 subnet ID(prefix)를 가진 디바이스의 집합
같은 서브넷에서는 라우터를 거치지 않고 직접적으로 접근이 가능
라우터는 여러 개의 서브넷에 속함
NAT (Network Address Translation)
IPv4 - 32bit 주소 체계, 40억개 사용 가능 - 점점 줄어들고 있음
IPv6 - 128bit 주소 체계
현재는 NAT 방식을 사용해서 연명
- 하나의 서브넷마다 사설 IP로 이용
- WAN/LAN 주소를 NAT translation table에 기록하고, 들어올 때 table을 보고 다시 매칭
- 해당 서브넷은 항상 같은 IP로 들어오고 port 번호로 식별
문제점
- 네트워크 계층까지만 담당하는 라우터가 TCP 계층의 port 번호를 변경하는 계층 바이로테이션 문제 발생
- port 번호는 프로세스를 찾아가는 역할을 담당하지만 서브넷 내의 IP주소를 찾아가는 역할로 변경됨 - 프로세스 찾아갈 방법 없음
DHCP (Dynamic Host Configuration Protocol)
네트워크 안의 컴퓨터에 자동으로 네임 서버 주소, IP 주소, 게이트웨이 주소를 할당
해당 클라이언트에게 일정 기간 임대하는 동적 주소 할당 프로토콜
- discover: 새 Client가 Server(port 67)로 IP 주소 요청
- offer: 여러 서버들이 client의 discover에 응답
- request: 여러 서버들 중 한 서버와 연결하고 나머지 offer 제공한 서버 release
- ACK: 연결되었다는 feedback 전달
서버를 따로 두지 않고 통상적으로 라우터가 모두 처리함
IP Fragment
MTU: 각 링크마다 보낼 수 있는 최대 패킷 크기
- fragmentation: packet size가 MTU size보다 큰 경우 packet을 분할
- reassembly: 도착지에서 분할된 packet을 이어붙임
- fragflag(fragmentation flag): 분할된 경우 중 뒤에 남은 packet이 있을 경우 1, 분할되지 않았거나 마지막 packet일 경우 0
- offset: 분할된 바이트의 첫 번째 위치 / 8
ICMP (Internet Control Message Protocol)
데이터 전송 시 네트워크 상의 환경을 알려주는 프로토콜
TTL이 0이 되어 drop될 경우 해당 라우터에서 IP packet을 통해 sender에게 알림
Routing Algorithm
forwarding table을 채우는 알고리즘
- link state algorithm: 모든 라우터의 정보를 알고 있음
- distance vector algorithm: 이웃한 라우터의 정보만 알고 있음
Link State Algorithm
각 링크가 broadcast를 통해 자신의 정보를 보냄
Dijkstra’s algorithm
각각의 라우터는 각각의 포워딩 테이블을 가지고 있음
Distance Vector Algorithm
이웃과의 자료교환만으로 계산
cost가 변경될 때 자신을 거쳐가는 경로가 있으면 count-to-infinity가 발생할 수 있음
poisoned reverse: 이미 지나온 길은 ∞로 설정하여 역류 방지
Hierarchial Routing
계층화로 규모 문제 해결
- Autonomous Systems: 나누어진 각각의 네트워크는 자치권을 가지고 내부 알고리즘을 결정
- OSPF 프로토콜: Link state algorithm으로 구현한 프로토콜
- RIP 프로토콜: Distance vector algorithm으로 구현한 프로토콜
- Inter-AS: 더 큰 범위의 네트워크 사이의 알고리즘
AS(Autonomous Systems) = ISP(Intenet Service Provider)
peering 관계에서는 자유롭게 트래픽을 제공받음
provider/customer 관계에서는 계약으로 트래픽을 제공받음