네트워크 계층의 목적은 transport segment를 수신자에게 보내는 것이다.
network layer 에는 크게 두 가지 기능이 있다.
network layer에는 라우터 간에 통신 방법에는 크게 connection-oriented
인 virtual circuit network
방식과, connection-less
인 datagram network
방식으로 나뉜다.
VC number
라는 다른 라우터와 식별될 수 있는 값을 사용하라는 내용이 담겨 있다.VC number
는 매 링크마다 변경될 수 있다.VC number
에 따라 output link가 결정된다.VC number
를 사용하게 되면 수 많은 경로들이 섞여서 엄청나게 많은 VC number
가 필요하고, VC number
를 결정하기 위해서 모든 router들이 통신을 해야한다는 overhead가 발생하기 때문에 더 작은 단위로 나눈 결과다.forwarding table
은 address range를 기준으로 output link를 결정한다VC
처럼 공통적인 format을 보장할 수 없다. MTU
와 type을 가지고 있다.MTU
가 크다고 해서 reassembled하지 않는다)transport segment
를 복구해서 목적지에서 그대로 메세지를 받아볼 수 있도록 한다.length
: 3개의 fragment로 나뉘어 지면서, 앞 두개의 fragment는 (data)1480 bytes+(header)20bytes = 1500bytes가 되고, 마지막 fragment는 1000bytes(남은 data) + 40bytes(추가로 발생한 bytes) = 1040bytes가 된다.ID
: 같은 datagram에서 생긴 fragment임을 구분하기 위해 사용한다fragflag
: 마지막 fragment를 0으로 표시한다.offset
: fragment의 offset를 표시하는데, 8bytes
당 1로 표현을 한다. 따라서, data의 길이 1480bytes/8 = 185, 2960bytes/8 = 370이 된다subnet
은 router의 개입없이 서로 연결할 수 있는 IP address를 말한다. 상위 비트를 subnet part
, 하위 비트를 host part
로 구분한다. 이 때 subnet의 비트 수를 명시하기 위해 subnet mask
를 이용한다.
e.g) 223.1.3.1
/ 223.1.3.2
/ 223.1.3.3
라는 3개의 host가 있다면 subnet은 223.1.3.0/24
가 되고, 이들은 router의 개입없이 서로 통신할 수 있다. subnet mask
는 /24
이다.
예전에는 IP를 할당할 때 subnet bit수를 고정시키고 이들을 class로 나눠서 IP를 할당했었다.
e.g) Class A = 8bit, Class B = 16bit, Class C = 24bit
DHCP discover
메세지를 broadcast함 (optional)DHCP offer
메세지를 응답함 (optional)DHCP request
메세지를 보냄DHCP ACK
msglogest prefix matching
가 적용되기 때문이다.NAT(network address translation)
는 local IP를 public IP로, public IP를 local IP로 변환해주는 역할을 하는 router
이다.NAT translation table
에서는 port 번호를 기준으로 내부의 host들을 구분한다
1. datagram이 local network의 host에서 128.119.40.186, 80
으로 출발한다.
2. NAT
router는 host에서 출발한 datagram의 source address를 NAT
router의 주소인 138.76.29.7, 5001
로 변경한다. 이 때 port번호 5001
은 출발한 host를 구분할 수 있는 번호를 사용한 결과다. (=> 만약 해당 host가 NAT translation table
entry에 없으면 추가한다.)
3. destination에서 138.76.29.7, 5001
를 destination address로 들어온다.
4. NAT
router는 datagram의 destination address를 출발했던 host address인 10.0.0.1, 3345
로 변경한다.
NAT
는 IP주소를 절감하는 등의 단점이 있지만, 다음과 같은 단점이 존재한다.
NAT translation table
에 등록이 되려면 local network에서 한번 밖으로 나가야 등록이 되는데, client to server는 client가 먼저 request를 보내기 때문에 문제가 생기는 것이다.ICMP
는 host-host, host-router, router-router 간에 통신 시 발생하는 에러를 알려주기 위해서 사용하는 message protocol이다.
ICMP
를 IP
로 encapsulate한다. (=> source IP, dest IP를 가지고 있어야 하기 때문)type
,code
,error host IP 상위 8비트
로 message를 구성하고 있다.type
,code
는 다음과 같다.4,0
의 congestion control는 사실 사용되지 않는다. => host에서 따로 체크를 하기 때문ICMP
로 만들어진 network application 를 살펴보자.
UDP 세그먼트
를 연속적으로 전송한다TTL
을 1로 설정한다.(=> 1번째 router에 도달한 후 버려지고, reporting message가 해당 router에서 ICMP
message를 (TTL expired
으로 설정 후) source host로 전송함)TTL
을 2로 설정한다.TTL
을 n로 설정한다.ICMP
메세지들을 보고 각 router마다 RTT time
을 알 수 있다.TTL
이 충분히 커져 dest host에 도착할 수 있는 경우 dest host가 port unreachable
메세지를 보내면 source host는 dest에 도착했음을 인지하고 세그먼트를 그만 보내게 된다)기존의 IPv4
는 32bit를 사용하기 때문에 증가하는 IP를 수용하기 위해 DHCP
, CIDR
, NAT
들을 사용했지만 그래도 한계가 존재함. IPv6
는 이를 위해서 128bit를 사용함.
packet을 전송하는데 발생하는 overhead의 큰 문제는 주로 link의 transmission delay
였지만, 기술적으로 성장하면서 transmission delay
는 줄어들고, router에서의 processing delay
가 문제가 됨. 근데 processing delay
를 해결할 수 있는 가장 좋은 방법은 H/W적인 방법이고 이를 위해서는 header의 길이가 고정적이어야 함. 이를 위해 IPv6
는 다음과 같은 format을 제공함.
IPv4
는 가변 길이의 optional header
가 존재했고 이는 trasnmission delay
감소를 H/W적으로 처리하기 위해 방해가 됨. 이를 위해 IPv6
는 고정적인 header를 제공함IPv6
는 가변 길이의 optional header
를 나타내기 위해 Next Header
라는 필드를 추가해서 optional header
가 있는 경우 이를 나타내고, 없으면 해당 필드에서 다음 필드가 TCP/UDP segment
임을 알려줌IPv4
는 datagram의 길이가 큰 경우 이를 조각으로 나눠서 보냈었음.IPv6
는 fragmentation 하면서 지연되는 시간을 줄이기 위해서 datagram의 길이가 크면 그냥 버려버리고, ICMPv6
메세지를 통해 이 사실을 source host로 전달해줌priority
,flow label
를 이용해 QoS지원checksum
field가 사라졌음(=> bandwidth가 증가하며 datagram이 손실됐을 가능성이 없다고 판단하고 손실을 check하는 overhead제거)fragment
관련, options
field 사라짐IPv4
를 IPv6
로 전환할 수 없기 때문에 IPv4
와 IPv6
가 서로의 packet을 알아볼 수 있게하기 위해 tunneling
을 사용IPv6
를 IPv4
datagram으로 encapsulate 함A->B
: IPv6
datagram을 만들어서 router B
로 보냄B->E
: router B
는 다음 router가 IPv4
임을 인지하고 있어서, router A
에게 받은 IPv6 datagram
을 IPv4 datagram
으로 encapsulate 하게 됨. 이렇게 만들어진 IPv4 datagram
은 IPv4
를 통과할때까지 사용하게 됨E->F
: router E
는 router D
에게 받은 IPv4 datagram
을 decapsulate해서 IPv6 datagram
으로 만들어서 router F
에게 전달routing algorithm은 정보의 양에 따라서 global or decentralized
냐, link cost의 성질에 따라서 static or dynamic
이냐로 구분할 수 있음.
link state algorithm
이라고도 불림(e.g, 다익스트라 알고리즘)distance vector algorithm
이라고도 불림(e.g, 벨만포드 방정식)poison reverse
)위의 Routing algorhtims 들은 이상적인 환경(동일한 라우터 사용, network가 동일하다는 전제)에서의 이상적인 공식이고, 실제에서는 조금 다름.
위와 같은 이유들로 라우터들을 autonomous systems(AS)
로 나눔. 이는 한 지역(기관 sk, kt, ...)에 속해있는 라우터들의 집합을 의미함. 하나의 AS
에서 사용되는 라우팅 알고리즘을 Intra-AS routing protocol
이라고 하고, 서로 다른 AS
들을 연결하는 router를 gateway router
라고 함.
Inter-AS routing algorithm
은 서로 다른 AS
각각의 Intra-AS routing algorithm
협력으로 만들어진다.
예를 들어 AS1
의 host a이 AS2
와 연결되어 있는 (x) subnet으로 가려고 한다면, AS2
에서의 Intra-AS routing algorithm
을 통해서 만들어진 결과를 통해 AS2에서 (x) subnet으로의 경로를 알아내야 하고, AS1
에서의 Intra-AS routing algorithm
을 통해 b 라우터와 link cost가 가장 적은 AS1의 게이트웨이 라우터(c)와 host a 의 경로를 알아내야 한다.
이후, c와 b가 통신을 거쳐 host a에서 (x) subnet으로 가는 경로를 알아내게 된다.
interior gateway protocols(IGP)
라고도 불리는데, 서로 다른 AS
를 연결하는 gateway router
간의 라우팅을 말한다. IGP
에는 크게 RIP
,OSPF
,IGRP
가 있다.
-RIP
:Routing Information Protocol,가장 오래된 프로토콜
-OSPF
:Open Shortest Path First,현재 가장 많이 사용
-IGRP
:Interior Gateway Routing Protocol
distance vector algorithm
에 속한다고 할 수 있음poisin reverse
사용AS
에서만 사용할 수 있음link state algorithm
을 사용함area border router
를 통해 주고 받고, area border router
는 자기가 받은걸 같은 area의 라우터들에게 advertisement하는 방식boundary routers
는 AS 전체를 다른 AS와 연결해주고 backbone routers
는 서로 다른 area들을 연결해줌Intra-AS Routing Protocol
과는 다르게 Inter-AS Routing Protocol
은 모두 동일한 프로토콜을 사용해야 한다. 실제로 Internet에서는 BGP(Border Gateway Protocol)
이라는 동일한 프로토콜을 사용중임AS-PATH
, NEXT-HOP
, ...이라는 경로에 대한 정보가 들어있음import policy
를 기준으로 경로를 선택하게 됨BGP
는 크게 두 가지로 나뉨eBGP
: 이웃 AS
들로부터 접근 가능한 subnet들의 정보를 알아오는 프로토콜iBGP
: eBGP
를 통해 파악한 정보를 AS
내에서 전파할 때 사용하는 프로토콜AS
간의 통신에는 가장 중요한 기준은 bandwidth 같은 것이 아닌정책
임 (=> AS의 갯수가 적어도 보안상의 이유, 비용의 이유로 AS의 갯수가 더 많은 경로를 선택)BGP
메세지를 받는 다는 것은 메세지를 보낸 AS
가 해당 destination까지 forward를 약속한다는 것과 같은 의미AS-PATH
를 통해 더 짧은 경로 선택NEXT-HOP
를 통해 가장 가까운 hop의 경로 선택 (-> OSPF를 사용해서 구함)OPEN
: peer간의 TCP 연결을 하기 위한 메세지UPDATE
: 새로운 경로가 생기거나 오래된 경로들을 advertiseKEEPALIVE
: connection을 유지하기 위한 메세지, 정기적으로 주고받으며 TCP connection을 유지함(OPEN
메세지 뒤에 전송)NOTIFICATION
: 이전에 보냈던 메세지에 error가 발생했거나, connection을 끊기 위해서 사용출처: http://www.kocw.net/home/search/kemView.do?kemId=1046412