본문 바로가기
Computer Science/network

4. Network layer 3계층

by yongmin.Lee 2020. 7. 18.

1. network layer intro 

network layer

송수신 호스트간의 패킷을 전달하는 서비스 제공

주요기능

forwarding : 라우터의 입력링크로 들어온 패킷의 올바른 출력링크 결정

routing : 라우팅 알고리즘으로 출발end-도착 end 까지의 경로 결정

 

network service model

송수신 호스트 간의 패킷 전송 특정 정의

종류

- datagram network (-> connectionless service )

: 패캣과 수신자 ip를 가지고 어떤 경로로 가던지 간에 특정시간에 패킷이 도착할 수 있음을 보장

- virtual circuite nework (-> connection service)

: 경로를 설정하고 패킷을 스트림 형식으로 보내어 순서대로 패킷전달

 

2. virtual circuite network ,datagram network 

virtual circuite network

경로를 설정하고 패킷을 스트림 형식으로 보내어 순서대로 패킷전달

 

VC의 3요소 : path, vc number, forwarding테이블

 

datagram network

목적지 주소를 가지고 각각의 패킷에 대한 경로가 설정되므로, 결로가 라우터 상황에 따라 바뀐다

 

3. Inside Router 

router 구조

input port

output port

routing processor : 라우팅알고리즘으로 forwarding talbe 업데이트

switching fabric

 

종류

swtiching via memory

switching via a bus

switching via interconnection network

 

4. IP : Internet Protocol 

network layer의 주요 프로토콜

routing protocol : end-to-end경로설정, forwarding table 업데이트

IP, internet protocol
: 네트워크 계층의 데이터 전송 프로토콜

ICMP
: 오규가 발생한 ip 패킷에 대해 원인을 송신 호스트에게 전달할 수 있는 기능을 지원하는 프로토콜

 

ip fragmentation/reassembly

- link type 마다 다른 MTU를 가지고 있으므로 large ip 패킷은 여러 small ip packet으로 분할
=> identifier(데이터그램식별), flags(1=다음패킷존재, 0=마지막패킷), offset(순서) 정보를 이용하여 분할
=> 호스트에서 위의 3가지 정보를 이용하여 reassembly

 

IPv4

ipv4 32비트 주소로 host, router interface(host router간의 connection)의 식별자 역할

ipv4 address network prefix host number로 구성
=> nerwork prefix : nerwork 식별
=> host number : host식별

 

classful ip

class A : ip 0으로 시작(0~127), prefix 8비트. 2^24-1개의 호스트를 가지는 네트워크

class B : ip 10으로 시작(128~191). prefix 16비트. 2^16-1개의 호스트를 가지는 네트워크

class C : ip 110으로 시작(192~223). prefix 24비트. 2^8-1개의 호스트를 가지는 네트워크

class D : ip 1110으로 시작 (224~239). multicast를 위한 ip

 

classful ip address의 문제점

1. large network ( class A, B)를 위한 network address가 너무 적음 -> A:128, B:64

2. network prefix, host number two-layer 계층구조는 large network에 부적합 -> host를 낭비문제 발생
-> 해결법 : subnetting

3. inflexbible -> 해결법 : CIDR

 

subnet

정의 : ip subnet part가 같은 디바이스들이 구성하는 네트워크 -> subnet에 속한 디바이스들은 라우터를 거치지 않고 브로드캐스팅 가능

 

subnetting

hostnumber subnet number host number로 나눔으로써 ip network prefix, subnet number, host number 3계층으로 구성

 

subnetting 장점

subnet을 자유롭게 구성 가능

네트워크 내부적으로는 subbet을 구분된 network로 인식

외부에서는 subnet 구조를 파악할 수 없음 -> 보안

 

subnet mask

ip address and연산으로 network prefix + subnet number (= extended network prefix)를 구할수 있다. 이를 이용해 host number도 구할수 있다

 

CIDR, classless interdomain routing

network id의 길이가 고정되어 있지 않고 가변적인 ip주소 -> network id의 길이(network prefix)를 따로 명시

 

address assignment
: ISP가 클라이언트가 요구하는 만큼의 ip address block을 할당 -> 클라이언틑 이를 가지고 host ip에 할당 -> DHCP기법 이용

 

DHCP, dynamic host configuration protocol

host network join하면 network server로부터 host에게 ip address를 동적할당 받는다
=> ip address는 빌리고 반납하는 형식이므로 address는 재사용 가능

 

할당과정

1. DHCP discover : host가 브로드캐스팅으로 dhcp discover msg전송
src : 0.0.0.0
dest : 255.255.255.255
yiaddr : 0.0.0.0

2. DHCP offer : DHCP server가 브로그캐스팅으로 dhcp offer msg 전송하여 ip주소 할당
src : 223.1.2.5 // 서버의 ip주소
dest : 255.255.255.255
yiaddr : 223.1.2.4 // 할당할 주소

3. DHCP request : host는 브로드캐스팅으로 수신받은 해당주소를 사용하겠다는 dhcp request msg 전송
src : 0.0.0.0 // 아직 사용x
dest : 255.255.255.255
yiaddr: 223.1.2.4

4. DHCP ACK : 서버는 브로드캐스팅으로 해당 ip 사용 확인하는 dcp ack msg 전송
src : 223.1.2.5 //서버의 ip
dest : 255.255.255.255
yiaddr : 223.1.2.4

 

DHCP가 포함하고 있는 정보

1. yiaddr

2. address of first-hop router

3. dns server 이름,주소

4. network mask

 

NAT, network address translation

2^32개의 ip주소가 부족해지자 이를 해결하기 위한 임시방편으로 외부에서 통용되는 하나의 public ip local network에서 통용되는 여러 private ip를 라우터가 NAT translation table을 가지고 변환

 

NAT 특징

local network는 외부에서 통용되는하나의 ip만 사용

local network의 내부는 외부와 분리됨

local network의 디바이스들의 ip를 마음대로 설정가능

외부의 isp가 바뀌어도 local network에는 영향x

외부에서는 local network ip를 볼 수 없음 ->보안

 

구현조건

-NAT router local network안에서 밖으로 나가는 모든 datagram의 출발지 ip와 포트번호를 NAT ip와 포트번호로 변환

-변환정보를 NAT router 내부의 NAT translation table에 저장

-밖에서 들어오는 datagram NAT ip와 포트번호를 NAT router table을 보고 local network ip와 포트번호로 변환

 

NAT 약점
: 라우터는 3계층까지만 관여하는 장비인데 4계층에 해당하는 ip정보를 핸들링 -> 3계층 장비가 4계층에 침범하는 것은 네트워크의 계층화 원칭 위반

 

NAT 문제점
: 외부의 client local network 내부의 서버에 연결하고 싶은데 내부는 unvisible하므로 연결 불가능
=> 해결방안1 : NAT table을 외부에 공개 -> NAT translation table의 정보가 변경되는데 변경전 정보를 이용하면 연결 불가능
=> 해결방안2 : UPnp 프로토콜 사용 -> 자동으로 public IP privite ip로 맵핑하는 서비스제공
=> 해결방안3 : relay NAT client와 외부 client에 각각 연결되어 두 연결사이의 패킷 중계

 

ICMP

에러발생시 라우터가 host에게 보고할 수 있도록 ip대신 사용되는 프로토콜

icmp msg : type + code + description

traceroute : 경로추적 과정

TTL 값을 1부터 하나씩 증가시키면서 udp 세그먼트를 목적지로 전송

n번째 datagram n번째 라우터까지 도달하면 n번째 라우터는 (type:11, code:0 -> TTL expired) 메시지 전송

목적지는 (type3,code3->destination unreachable) 메시지 전송 -> traceroute stop

=> 목적지까지 구간의 정보기록가능
=> n 구간의 딜레이 계산가능

 

IPv6

32비트인 ipv4가 부족하므로 128비트 주소인 ipv6 개발

ipv6 format -> 강의자료 p82

ipv4 -> ipv6 translation

모든 라우터가 ipv6를 지원하지 않음

해결방안 : tunneling 기법
=> ipv4안에 ipv6를 넣으면 ipv4라우터가 ipv6운반가능

 

5. routing algorithm 

graph abstraction

네트워크를 graph, router node, link edge로 표현

routing algorithm으로 최저비용경로 탐색

 

Link state routing algorithm

-node global inforamtion(전체 link state)을 알고 있는 경우, 한 노드에서 다른 모든 노드로 까지의 경로비용을 계산 할 수있다

-다익스트라 알고리즘 사용 : d(s,z) = min( d(s,y) + w(yz) )

 

distance vector algorithm

-node가 주변노드까지의 비용정보만 알고있는 경우, 나의 정보와 주변노드가 주는 정보를 가지고 비용 계산

-bellman ford algorithm 사용 : dx(y) = min( cost(x,y) + dv(y) )
=> 인접노드로부터 새 정보가 올때마다 나의 table업데이트
=> 계속 반복하여 업데이트하면 실제비용에 수렴

 

link cost change

good new : link cost가 줄어드는 경우 -> 짧은 iteration으로 update 가능

bad news : link cost가 늘어나는 경우 -> update를 위해 많은 iteration 필요 : “count-to-infinity problem”
-> 
해결법 : poisoned reverse : 방문했었던 노드를 다시 돌아가는 경우 cost를 무한대로 설정

 

link state algorithm vs distance vector

1. message complextiy
LS : O(nE) : n 노드갯수, E edge갯수
VS : 이웃과 주고받는 것이 전부

2. speed of convergence
LS : O(n^2)
DV : 매우다양, count-to-infinity problem 가능

3. robustness
LS : 각각의 노드는 자신만의 table만을 계산
DV : 이웃 노드가 전달한 잘못된 path cost는 네트워크 전체로 전파됨

 

Hierachical Routing

- AS, Autonomous System : 공통의 routing protocol을 사용하는 라우터 집합

- intra-AS routing protocol : AS에서 통용되는 routing protocol

- inter-AS routing protocol : 서로다른 intra-AS routing protocol을 사용하는 AS간의 연동을 위한 routing protocol

- gateway router : 서로다른 AS들을 연결하는 라우터

 

6. Routing in the internet 

intra-AS routing protocol
: AS에서 통용되는 routing protocol
ex) RIP, OSPF

 

inter-AS routing protocol
: 서로다른 intra-AS routing protocol을 사용하는 AS간의 연동을 위한 routing protocol / ex) BGP

 

RIP

-distance vector algorithm 사용

-30초마다 이웃들과 정보교환 (advertisement UDP)

-link failure : 180초동안 advertisement 없으면 해당링크는 버림

 

OSPF

link state algorithm 사용

OSPF advertisement AS전체로 전파

 

BGP

inter-AS routing protocol

eBGP : 이웃 AS들끼리 subnet reachability 정보제공

iBGP : AS 내부의 router들에게 reachability 정보 전파

 

intra-AS vs inter-AS

1. policy

intra-AS : 단일 admin이므로 policy decision 필요x

inter-AS : admin은 트래픽경로 어떻게 설정될지 control

2. performance

intra-AS : 성능이 중요

inter-AS : 성능보다 policy가 더 중요

 

7. Boradcast and Multicast routiong

broadcast routing

패킷을 다른 모든 노드들에게 전달

방법1 : flooding : broadcast packet을 받은 노드는 인접노드에게 복사하여 전송 -> cycle&broadcast storm문제

방법2 : controlled flooding : 내가 이전에 받았었던 패킷이면 broadcast x

방법3 : spanning tree : cycle이 없고 모둔 노드를 포함하는 spanning tree를 만들어 노들의 경로를 따라서 패킷을 forwarding -> kruskal, prim

 

multicast rouiting

특정 다수 node에게 동일한 패킷을 전달하기 위해 multicast tree를 구성하는 routing protocol



'Computer Science > network' 카테고리의 다른 글

6. Web request senario  (0) 2020.07.26
5. link layer 2계층  (0) 2020.07.18
3. Transport layer 4계층  (0) 2020.07.18
2. Application layer 5계층  (0) 2020.07.18
1. 컴퓨터 네트워크와 인터넷  (0) 2020.07.18