KOCW | 컴퓨터네트워크 | 한양대학교 | 2015-2 | 이석복
KOCW | 컴퓨터네트워크 | 한양대학교 | 2018-2 | 이석복
위 강의를 수강하며 정리한 내용임을 밝힙니다.
네트워크 계층을 Top-Down 방식으로 위에서부터 한 겹씩 까보면서 디테일하게 알아보는 강의
이미지 출처
client - router - router - ... - router - server
client, server: Application / Transport / Network / Physical
router: Network / Physical
4.2 virtual circuit and dagagram networks
Two key network-layer functions
forwarding
- 포워딩은 라우터의 입력 포트에서 출력 포트로 패킷을 이동시킴(포워딩 테이블을 보고)
routing
- 라우팅은 경로를 결정(라우팅 알고리즘을 통해 포워딩 테이블을 관리)
Forwarding table
- 모든 주소를 적어놓을 수는 없기 때문에 범위로 표현함
longest prefix matching
- 범위로 적어놓다보니 여러 엔트리에 속하는 경우도 발생
=> 가장 길게 일치하는 prefix로 출력 포트를 배정
4.3 what's inside a router
- 입력포트, 출력 포트 모두 queue가 있어서 일을 순차적으로 처리함
4.4 IP: Internet Protocol
- packet의 최소 단위는 40byte: packet header(20byte) + segment header(20byte)
- time to live
: 각 router를 거칠 때마다 -1
.
: 네트워크 오류로 인해 router 내부를 무한히 돌 수 있기 때문에 수명을 정해놓음
- upper layer
: 상위 레이어의 정보를 기입(transport의 타입이 무엇인지 TCP or UDP + 이외 정보)
IPv4 addressing
- IP Address: host가 아니라, 머신의 interface를 지칭함.
ex) router의 경우 interface가 여러개 있기 때문에 IP Address도 다양한 것.
- hierarchical Addressing
: 한 곳에서 모든 IP를 관리하면 forwarding table이 엄청나게 커지고 느려질 것
: 서버에 문제가 발생 시, 모든 네트워크가 마비됨
계층화(hierarchical)
- 확장성이 좋고, 새로운 호스트가 들어와도 말단의 forward table에 간단하게 추가
Subnet Mask
(network id = prefix = IP address = subnet)
ex) 12.34.158.0/24 => 32자리 중에 앞 24자리가 IP 주소이고 그 값은 12.34.158 입니다.
ex) 255.255.255.0 => 32자리 중에 앞 24자리가 IP 주소입니다.
Classful Addressing
- 클래스를 정해서
/8
, 16
, /24
이런식으로 배정을 했는데 비효율적이라 개선함
Class Inter-Domain Routing(CIDR)
- 필요한 만큼 합리적으로 나눌 수 있게 됨.
ex) 12.4.0.0/15 ...
forwarding table은 prefix 단위로 엔트리가 나뉘어있음
Subnets
- network id = prefix = IP address = subnet
- subnet: 라우터를 거치지 않고 직접적으로 접근할 수 있는 집합
- 라우터는 여러개의 subnet에 속함
NAT
- Network Address Translation
- IPv4: 32bits = 2^32개, 약 40억 => 전 세계적으로 고유한 숫자가 이만큼 뿐
- 이를 보완하기 위해 IPv6를 고안해서 출시했지만 옮겨가지 못하고 있음
- 모든 router를 교체해야하는데 이게 쉽지 않음
- 그렇다면 왜 문제가 발생하지 않고 있는가? => NAT
- 나갈 때 WAN/LAN 주소를 NAT translation table에 기록하고, 들어올 때 table을 보고 다시 매칭함.
- IP 뿐만 아니라, Port번호도 바꿈. 이유는 내부에서는 IP주소가 고유하지, Port번호는 고유하지 않을 수 있기 때문
- 결국 들어올 때는 모두 같은 IP로 들어오기 때문에 내부에서는 port번호로 식별을 한다고 볼 수 있음
LAN/WAN
LAN: Local Area Network
WAN: Wide Area Network
부작용
- Server의 역할을 하기 힘들어짐
Client 역할일 때는 나갈 때 NAT table에 기록되기 때문에 문제가 없지만,
Server 역할일 때는 먼저 나가는 것이 아니라 요청을 기다리고 있는 입장이기 때문에 NAT table에 기록된 나의 고유한 주소가 없음.
- 계층화의 핵심이 무너짐.
Layer로 나뉘어 있는데, 다른 Layer의 정보를 열람해보고 심지어 수정을 가함.
ex) 네트워크 계층에서 packet header의 IP주소를 수정함
ex) 네트워크 계층에서 packet 내부의 segment 내부의 header의 port 번호를 열람함
=> port 번호는 전달 계층에서 애플리케이션 계층으로 올라갈 때 socket을 구분하는 용도인데, IP를 구분하는 용도로 변질됨.
DHCP
- Dynamic Host Configuration Protocol
- 네트워크 안의 컴퓨터에 자동으로 네임 서버 주소, IP주소, 게이트웨이 주소를 할당해주는 것을 의미하고, 해당 클라이언트에게 일정 기간 임대를 하는 동적 주소 할당 프로토콜입니다
- DHCP Server Default port: 67
- DHCP Client Default port: 68
- discover: 새로운 Client는 Server(67 port)로 IP 주소를 요청 함
- offer: 여러 서버들이 client의 discover에 응답함
- request: 여러 서버들 중에 한 서버와 연결을 함. 나머지 offer를 제공한 서버들은 release를 함
- ACK: 연결이 되었다는 feedback을 전달
DHCP애서 IP를 제공할 때
- IP address / Subnet mask
- Gateway router IP address
- DNS Server IP address
IP fragmentation, reassembly
- IP packet이 생성되어서 라우터를 통해서 최종 목적지까지 도달하는데,
- 라우터 사이의 link의 MTU(Maximum Transmission Unit)는 링크마다 다름
- fragmentation(단편화/조각): packet size가 MTU size보다 클 경우, 쪼개서 보냄
- reassembly(재조립): 쪼개진 packet을 이어붙임
- fragflag(fragmentation flag)쪼개졌을 경우 모두 fragflag가 1이 아니라, 뒤에 남은 쪼개진 조각이 있을 경우에만
1
즉, 쪼개지지 않았거나 쪼개진 조각 중 마지막 packet일 경우 0
- offset: 쪼개진 packet이 전체 packet에서 시작하는 포인트 나누기8(
/8
) 한 값(header 값 줄이기 위한 노력)
ICMP
- Internet Control Message Protocol
- 네트워크상에서 발생한 이벤트를 source에 알려주기 위한 프로토콜(네트워크 진단에 쓰일 수 있음)
IPv6
Tunneling
- 버전을 다르게 쓰는 라우터에 packet을 보낼 때, 알아볼 수 있는 header에 감싸서 보냄
4.5 routing algorithms
앞서 포워딩은 포워딩 테이블을 보고 라우터의 입력 포트에서 출력 포트로 패킷을 이동시키는 작업이라고 했는데, 그렇다면 포워딩 테이블을 어떻게 형성되는 것인가 => routing algorithms
Graph abstraction(그래프 추상화)
- node: router
- edge: link
- value: link cost(거리 혹은 트래픽 양)
=> 최소 비용을 구하는 문제와 동일
link state
- 모든 라우터의 정보를 알고 있을 경우
- Dijkstra's algorithm(다익스트라 | 최단경로)
- 이러한 정보들을 위에서 배운 ICMP로 뿌려줄 수 있음(broadcast)
distance vetor
- 이웃들과의 자료교환만으로 계산
- poisoned reverse: link cost가 변했을 때, 최소경로가 온 길을 되돌아가는 경로를 포함한 값일 경우 역류할 수 있으므로, 온 길은 무한대로 업데이트하여 역류를 방지함
hierarchical routing
- 규모의 문제는 계층화로 해결
- Autonomous Systems: 쪼개진 각각의 네트워크는 자치권을 가지고 내부 알고리즘을 결정
- AS(Autonomous Systems) = ISP(internet Service Provider)
- 관계 : Peer - Peer || Provider - customer
4.6 routing in the Internet
- RIP
- OSPF
- BGP
AS내에서는 최단 경로지만, AS간에는 수입 극대화되는 경로를 찾게됨.
4.7 broadcast and multicast routing
(현재 사용되지 않고 있기 때문에 생략)
📚 참고
KOCW | 컴퓨터네트워크 | 한양대학교 | 2015-2 | 이석복
KOCW | 컴퓨터네트워크 | 한양대학교 | 2018-2 | 이석복
Photo by Nastya Dulhiier on Unsplash