Address-dependent filtering
여기서 Address는 externel endpopint의 주소를 의미함
Address-Dependent filtering은 inbound 패킷의 DSP IP, DST port, SRC IP을 확인 함 (SRC Port 노상관)
1. Rescrited Cone NAT
Filter rule: accept if inbound packet is {1.1.1.1: any port } to {5.5.5.1 : 1000}
만약 src가 1.1.1.1이고 도착지가 5.5.5.1:1000 인 경우에만 accpet함
2.Port restricted conte NAT
3. Address, Port dependent (Symmetric NAT)
Address and port dependent filtering은 DST IP, DST PORT, SRC IP, SRC PORT를 확인함
Hairpinning behaviour
hairpinning은 nat를 통해 같은 nat의 두 internel endpoint가 통신하는 것
Host A IP주소 10.1.1.1이지만 밖에서는 5.5.5.1로 보이고,
Host B IP주소 10.1.1.2이지만 밖에서는 5.5.5.2로 보이고,
Host A,B는 같은 private 네트워크에 있어도 A가 B와 통신할떄 public 네트워크 주소밖에 몰라 nat를 통해 전달됨
A | 10.1.1.1:5000 | 5.5.5.1|1000
B | 10.1.1.2:5000 | 5.5.5.2|1000
라고 할때
A가
SRC PORT | SRC IP | DST PORT | DST IP |
5000 | 10.1.1.1 | 1001 | 5.5.5.2 |
로 내부 SRC, 외부 DST가 담긴 패킷을 NAT에 보내면
SRC PORT | SRC IP | DST PORT | DST IP |
5000 | 10.1.1.1 | 5001 | 10.1.1.2 |
NAT는 SRC, DST를 모두 변환하여 SRC는 외부 형태로, DST는 내부형태로 변환함
Internel Source IP Address and Port
요약
Externel
NAT로부터 보내지는 SRC PORT, SRC IP가 외부 주소
Internel
NAT에서 보내지는 SRC PORT, SRC IP가 내부 주소
RIP
Routing
Routing은 여러 네트워크를 지나서, 혹은 사이에 네트워크의 트래픽 경로를 고르는 과정이다.
특정 패킷 포워딩 메커니즘을 통해 중간 노드들의 방향을 정하는 고차원 결정
패킷 포워딩은 하나의 인터페이스에서 다른 쪽으로 logically addressed된 네트워크 패킷을 이동하는 것
라우팅 프로세스는 주로 라우팅 테이블을 통해서 함
Hop by hop routing
패킷의 목적지를 기준으로 다음 경로를 라우터가 정하는 것
Policy based Routing
네트워크 관리자에 의해 정해진 정책을 기반으로 라우팅 경로를 정하는 것
1. DV
벨만포드
2.Link state Routing
다익스트라
SPF
벨만포드
function bellman(){
const nodeLen = 10;
vertical = [{src:1, dst:2, cost:3},{src:4, dst:5, cost:3},{src:2, dst:4, cost:3},{src:3, dst:6, cost:3},{src:1, dst:2, cost:3}];
let dist = new Array(nodeLen).fill(Infinity);
dist[0] = 0;
for(let i = 1 ; i < nodeLen; i++){
for(let {src,dst, cost} of vertical){
if(dist[src]==Infinity){
continue;
}
if(dist[dst]>dist[src]+cost){
dist[dst] = dist[src]+cost;
}
}
}
for(let {src,dst,cost} of vertical){
if(dist[dst]>dist[src]+cost){
console.log('Negative Cycle');
}
}
}
임의로 자바스크립트로 짜본 벨만포드 알고리즘이다.(간선 부분은 막 함)
만약 시작 부분을 0으로 초기화해주어야한다.
dist[src]가 무한대라면 아직 계산된 적이 없는 정점이기에 넘어가고, 그렇지 않다면 dist[src]+cost가 dist[dst]보다 작다는 건 더 작은 비용으로 dst에 도달할 수 있다는 것이므로 업데이트해준다.
이를 N-1번 반복해주면 된다.
이후에는 마지막으로 간선을 돌면서 dist[dst]가 dist[src]+cost보다 큰 경우가 있는지 확인한다. 이런 경우에는 음의 사이클이 형성되어 계속해서 값이 줄어들기 떄문에 이런 결과가 발생하는 것이다.
근데 네트워크의 경우 음의 비용이 드는 일은 없지 않을까?
'TIL' 카테고리의 다른 글
TIL 2021-12-03 OSPFv2, (0) | 2021.12.03 |
---|---|
TIL 2021-12-02 RIPv2, OSPF (0) | 2021.12.02 |
TIL 2021-11-29 NAT2 (0) | 2021.11.29 |
TIL 2021-11-27 Deep Learning, Local Model (0) | 2021.11.27 |
TIL 2021-11-25 Multilayer Perceptron, git cherrypick, rebase, react-query invalidateQueries (0) | 2021.11.25 |