Search Problems
consist
- A state space
- A succeossor function
problem
- Initial state
Search Strategies
- Completeness
- Solution을 찾을 수 있는가
- Optimality
- 최소 코스트가 항상 나오는가
Time complexity
Space complexity
Uninformed Search Strategies
- DFS
- BFS
- UNIFORM
정의: promising
되추적?
Let:
단위당 가치가 높은 순으로 sort
bound와 totweight를 profit과 weight값으로 초기화
탐욕적으로 아이템 취하기
toweight이 W초과할때까지
남은부분에 마지막일부취하고 profit을 bound에 더함
점검하는 마디의 수: O(2^n)
DP보다 좋은가? 확실하지 않음
–
backtracking과 비슷
Backtracking과 차이점
외판원의 집이 위치하고 있는 도시에서 출발,
다른 도시들을 각각 한번씩만 방문하고, 다시 집으로 돌아오는
가장 짧은 일주여행경로(tour)을 결정하는 문제
여러개의 징루 여행경로 중에서 길이가 최소가 되는 경로가 최적일주여행경로(optimal tour)가 된다.
부르트포스 알고리즘:
V: 모든 정점의 집합
A: V의 부분집합
D[vi][A]: A에 속한 각 정점을 한번씩만 거쳐서 vi에서 v1로 가는 최단경로 길이
D[vi][V-{v1}] = min(W[1][j] + D[vj][V-{v1, vj}])
n=40일때 DP로 6년…. O(n^2*s2^n)
각 마디는 출발마디로부터 일주여행경로
리프노드에있는 일주여행경로를 찾음
lowerbound 가져오기
Actual tree searches…
장단점
최적의 해를 찾는 보장은?
Complexities & 구현방법(data structures?)
염색체의 길이가 n일 때 k점 교차로 자르는 방법의 총 수는 n-1Ck가지
일점교차보다 교란의 정도가 커서 보다 넓은 탐색 공간을 탐색할 수 있음
교란이 강하면 수렴성이 떨어져 주어진 시간 예산내에 제대로 수렴하지 않을 가능성
TSP를 위해 개발된 교차연산
부모해의 특성을 보존, 변이가 적으면 교란이 너무 적음
인접도시목록을 이용하여 TRACKING
장단점?
해집단 내에서 염색체가 대부분(전체) 대치되므로 대치 연산이 비교전 간단
convergence(수렴)이 일어나기 어려움
안정 상태 유전 알고리즘은 한 개 또는 소수의 해가 생기는 즉시 해집단 내의 해들과 대치하게 되므로 대치될 대상을 고르는 작업이 매우 중요한 영향을 미침
-> 부분적인 최적화가 어렵다
결정론적 알고리즘(deterministic algorithm)으로 쉽게 풀리는 문제
결정론적 알고리즘(deterministic algorithm)으로 쉽게 풀리지 않으나 크기가 너무 작은 문제
Solution Space가 가늠할 수 없는 근사치 최대값을 찾기 유용한 알고리즘이다.
N+1개의 꼭짓점 갖는 구조
하나 이상의 테스트 포인트 유지
Cryptographic hash functions
one-way function: 한방향으로만 입출력(출력값을가지고 입력값을 구하기 어려움)
해쉬 함수 특징
Avalanche effect
사용 예: 파일 이미지 확인, 패스워드 생성기
평문 (Planetext): 암호화 되기 전 메시지
암호문 (Ciphertext): 암호화된 메시지
구성요소
대칭키 암호 (Symmetric key encryption)
MAC(Message authentication code)
MAC 구성요소
MAC을 만드는 방법
공개키 암호(Public key system or Asymmetric key system)
공개키 암호는 한쌍의 키를 가지고 있음
공개키: 외부로 공개하는 키 값
개인키: 자신만 가지고 있는 키 값
수학적 난제를 통해 키를 생성
전자서명 시스템에 자주 사용
Link encryption
End-to-End encryption
헤더부분(e.g., IP address)은 암호화 되지 않음
그래서 End-to-End와 Link 암호화 동시에 사용되기도 함
둘다 대부분 대칭키 암호 사용 (e.g., AES)
SSL/TLS 프로토콜은 클라이언트와 서버의 통신에 메시지 인증, 기밀성, 가용성 제공
암호화 되지 않은 패킷 (e.g., HTTP)는 SSL패킷으로 인코딩 되면서 암호화 진행 (HTTP SSL)
Handshake protocol
ChangeCipherSpec protocol
Alert protocol
Record portocol
IPSec(Internet Protocol Security): SSL과 달리 네트워크 계층에서 보안을 제공하기 위해 IETF(Internet Engineering Task Force)에 의해 표준화된 프로토콜
왜사용?
SSL/TLS
IPSec
네트워크 트래픽 분석을 통해 악성코드의 정확한 행위를 파악 가능
네트워크 트래픽을 통한 악성코드 통신 차단 기능
L2와 가장 관계가 깊은 보안 시스템은 방화벽
일반적으로 방화벽의 경우 최소 2개 이상의 NIC 필요
장점
단점
네트워크 계층으로 IP 주소와 연관 있음
하나의 네트워크 장비(e.g., 방화벽)를 통해 여러개의 네트워크 망을 구성
장점
단점
패킷 필터링 기반의 1세대 방화벽
src IP | dst IP | src Port | dst Port | Control |
---|---|---|---|---|
any | 1.1.1.1 | any | 80 | permit |
80포트 listen
80포트에 대한 접근 허용(HTTP 포트)
무수히 많은 룰을 셋팅해야함
80번 포트를 열때 나가는 포트에 대해 많은 포트를 열어줘야함
Stateful Inspection: TCP 접속 시 방화벽에서 패킷의 payload를 보면서 3way handshake의 state 추적, rule을 자동으로 추가
장점:
L7 방화멱 또는 애플리케이션 방화벽
실제 패킷 내용 검사, 단순한 포트/IP 조사뿐만 아니라 어떤 애플리케이션과 통신하고있는지 파악
L2, L3, L4 모두 커버 가능하지만 성능 이슈로 L7에 집중하기도 함
High Availability: 2대의 방화벽을 통해, 1개의 방화벽에 장애가 생길경우를 대비
한대는 온라인 상태, 한대는 대기/레디 상태 (Active-Standby)
두개가 항상 온라인 상태 (Active-Active)
Signature 기반 공격 탐지
Anomaly 기반 공격 탐지
1 | Alert tcp any any -> any any (msg: "LoCAL-RULE Test for TestMyIDS"; |
NIDS (Network-based IDS)
HIDS (Host-based IDS)
장점
단점
탐지 위주 정책, 인라인으로 들어가지 않음(따로 삐져나와있음)
NIDS에 필요한것: 전체 네트워크 패킷
HIDS의 경우 호스트 네트워크 패킷, 시스템 로그 필요
스위치 환경에서 포트 미러링을 통해 스니핑(패킷 엿듣기) 제공
스위치가 포트미러링을 지원, 스니퍼를 연결하기 위한 포트가 있어야함
HIDS 필요한것: 호스트 네트워크 데이터 + 시스템 로그 데이터
utmp(x) 로그
wtmp(x) 로그
su(switch user) 로그
pacct 로그
lastcomm명령: 실행된 날짜 출력
syslog
authlog/loginlog
Intrusion Detection System
Intrusion Prevention System
IDS는 공격에 대한 블록기능 X, 탐지만 하는경우가 많음
IPS | IDS | |
---|---|---|
시스템 타입 | 액티브(모니터링, 차단까지) | 패시브(모니터링, 경고) |
매커니즘 | Anomaly based detection\nSigniture detection | Anomaly based detection\nSigniture detection |
위치 | Inline형태로 설치 | Out of band |
대응방법 | 경고를 주거나 패킷을 Drop | 알람 보냄 |
퍼포먼스 영향 | 패킷속도에 저하가 생길 수 있음 | 복사해서 분석하기 때문에 퍼포먼스적 영향 X |
benefits | 자동화되고, 방지도 되기 때문에 회사에서 선호 | IPS가 차단할 합법적인 traffic을 차단하지 않음 |
data-link layer: datagram을 서로 인접한 노드간에 전달해주는 책임을 가지고 있는 레이어
Links: 인접한 노드들을 따라서 communication channels를 연결
Layer-2 packet: frame
Framing: datagram을 frame로 만들고, header와 trailer를 붙임
Link access: share해서 사용할때 어떻게 나눠쓸건지 결정
인접한 노드 사이에 신뢰성있는 데이터 전송
Error detection: 신호 감소, 노이즈에 의한 에러 감지
Error correction: receiver는 retransmisson에 의존하지 않고 비트오류를 식별한후 수정함
sending side: datagram 캡슐화, frameing
error checking bits, rdt등등 추가
receiving side: 에러, rdt등등 확인
문제가 없으면 datagram를 추출해서 위로 보냄
EDC = Error Detection and Correction bits
Error detection 100% 신뢰되진 않음
하지만 거의 놓치지 않는다
EDC가 커질수록 detection과 correction이 쉬워짐
single bit parity: detect single bit errors
two-dimensional bit parity: detect and correct single bit errors
Row와 column에서 짝수 개수 확인, 에러 correction 가능
Cyclic redundancy check (CRC)
error-detection coding으로 더 powerful
d bits(Data bits) + r bits(CRC bits)
CRC bits: D*2^r % G
single shared broadcast channel
노드들에 의해서 동시에 데이터를 보낼 수 있어야함: interference
Multiple access protocol
Given: broadcast channel of rate R bps
원하는 특성
node가 패킷을 보낼 때
두개 이상의 노드가 동시에 사용하면 -> collision
Random access MAC protocol 특징:
Examples of random access MAC protocols:
가정
작업
Pros:
Cons
CSMA (carrier sense multiple access): transmit 하기 전 누가 사용하는지 확인
대화하는데 끼어들지 않기
Collision이 발생할 수 있음
Collision
CDMA/CD (collision detection)
collsition detection:
예의 바른사람(끼어들어도 봐줌)
구성
master node에서 slave nodes에게 순서대로 transmit을 invites해줌
concerns(우려사항):
토큰 메시지가 한 노드에서 다음 노드로 순서대로 전달됨
concerns(우려사항):
32-bit ip address:
MAC(or LAN or physical or Ethernet) address:
데이터를 보낼 때 보내고자하는 Destination MAC 주소를 사용
Broadcast address (FF:FF:FF:FF:FF:FF)
MAC address는 IEEE에서 관리
비유:
MAC flat address -> 휴대성
IP hierarchical address not protable
wired Lan technology의 표준:
bus: 90년도까지 사용
star: 오늘날 사용
Sending adapter는 Ethernet frame에 IP datagram을 캡슐화
Preamble (8bytes)
Addresses (6bytes)
Type (2bytes)
Data field (46 to 1,500 bytes)
CRC (4bytes)
Connectionless (연결없음)
Unreliable (신뢰하지 않는)
initial sender가 higher layer rdt(e.g., TCP)를 사용하는 경우에만 dropped된 frames를 recovered해주고, 그외에는 데이터를 버림
Ethernet’s MAC protocol
Link-layer device: takes an active role
transparent(투명함)
plug-and-play, self-learning
frame을 가져오면, 스위치는 sender의 주소를 “학습”: 들어오는 LAN segment
sender/location pair 을 switch table에 기록
frame destination을 모르면, broadcast
reply 받으면 기록
둘 다 store and forward:
둘 다 forwarding table 존재:
하지만 최근엔 L3 switches 사용
single broadcast domain:
Virtual Local Area Network: broadcast domain을 나누어주는 역할
1개의 switch를 가상으로 2개의 switch가 있다고 생각할 수 있도록 만들어줌
라우터를 이용하여 VLAN끼리 통신
trunk port: 여러개의 물리적인 스위치에 정의된 VLAN간에 프레임 전달
Forwarding: 여러개의 패킷을 매칭되는 output 포트로 연결시켜주는 역할
Routing: 포워딩한 패킷들이 정해진 목적지까지 가는것
예시: 여행
datagram이 왔을때 어떤경로로 routing 해줄지 결정
2가지 control-plane approaches:
ip address: 32-bit
interface: host/router와 physical link 사이의 connection
router: multiple interface
높은 주소 비트: subnet part
낮은 주소 비트: host part
ex: 233.1.1.0/24 (subnet mask: /24): 총 24비트(233.1.1)이 서브넷
CIDR: Classless Inter Domain Routing
서브넷 임의의 길이
address format: a.b.c.d/x, x는 서브넷을 의미하는 비트의 길이
Broadcasting address: 255.255.255.255
Q: ISP는 어떻게 address를 가져오나?
A: ICANN: Internet Corportaion for Assigned Names and Numbers
공인 IP 주소 (public IP address)
사설 IP 주소 (private IP address)
공인 IP와 사설 IP를 변환해주는것: NAT
모든 라우터가 동시에 업그레이드 할 수 없음
tunneling: IPv4 dataram payload에 IPv6 datagram을 담는다.
two network layer functions:
Data Plane
Control Plane
two approaches to structuring network control plane:
라우터마다 컨트롤(traditional)
중앙기관에서 컨트롤(Software defined networking)
Graph: G = (N,E)
N = set of routers = {u,v,w,x,y,z}
E = set of links = {(u,v), (u,x), (v,x) …}
c(x, x’) = cost of link(x, x’)
cost of path(x1, x2, x3, …, xp)
Key question: u에서 z까지 얼마나 적은 코스트를 사용하여 이동할 수 있는가?
Routing alogrithm: source에서 destination까지 얼마나 효율적으로 보낼 수 있는가
Global or Decentralized information
Global:
Decentralized:
static or dynamic
Algorithm complexity: n nodes
Oscillations possible:
dx(y) := cost of least-cost path from x to y
then dx(y) = minv{c(x,v) + dv(y)}
결국 이웃노드를 계속 탐색하면서 최소 경로를 찾아감
Dx(y) = x에서 y까지 가는 최소 코스트로 추정되는 값
node x:
loop
“good news travels fast”
t0: y가 link-cost 변경된걸 확인, Dv 업데이트, 이웃에게 알림
t1: z는 그값을 y로부터 받음, 테비을 업데이트, z to x로 가는 최소값을 변경, 이웃에게 Dv 전달
t2: y는 z의 업데이트값 전달받음, distance table 수정, 변경되는점은 없음
link cost가 업데이트된걸 다른 노드들은 모르고 있기 때문에 생김
결국 -> 많이 반복해야함 -> inf problem
Message complexity
Speed of convergence(수렴 속도)
Roubustness(견고성)
Scale: 많은 destinations
지구상의 모든 destination을 가지고 routing table을 만들 수 없음
communication cost도 무한 함
Administrative autonomy (관리 자동화)
gateway router에서 Inter-AS 업무 수행
AS2와 AS3를 어떤 데스크로 연결할 수 있는지
어디로 가야하는지 AS1의 모든 라우터에 전달
interior gateway protocols (IGP)
주로 사용되는 intea-AS routing protocols:
표준: publicly available
OSPF를 돌리는 라우터들은 항상 AS의 모든 라우터들에게 link-state를 광고해야함
IS-IS routing protocol: 다익스트라기반, OSPF랑 유사
two-level hierarchy: local area, backbone
Area border routers: 자신의 area에 있는 네트워크들의 정보를 취합해서 다른 area border routers에게 advertise해줌
Backbone routers: Backbone router들 끼리 OSPF 라우팅을 할 수 있음
Boundary routers: 다른 AS 시스템이랑 연결
BGP (Border Gateway Protocol): inter-domain routing에서 사용하는 표준과 같은 형태
BGT는 AS에게 2가지 규격 제안:
BGP는 특정 subnet에 자신의 존재를 알려주는 protocol
어떤식으로 BGP가 자신을 홍보할까
prefix + attributes = “route”
prefix: CIDRized prefixes(subnet)
two important attributes:
Policy-based routing:
Policy:
Scale:
Performance:
Congestion: 너무 많은 소스에서 너무 많은 데이터를 빠르게 네트워크로 보낼 경우 네트워크가 처리할 수 있는 허용 용량(band width)을 넘어 혼잡 발생
Flow control과 다름
선제 조건:
two sender, two reiciver
one router, inf buffer
output link capacity: R (출력 링크 용량)
패킷이 유실되도 no retransmisson
람다in R/2씩 보내도 람다out R/2
딜레이관점에선 람다in이 증가할수록 딜레이는 기하급수적으로 증가
queueing delay 때문에 timeout 발생후 재전송
최악의 경우 람다’in/2 = 람다out
costs of congestion: network congestion이 많아지면 필요하지 않는 재전송이 많아짐
sender에서는 window 2개 (cwnd, rwnd(recived window))
LastByteSent-LastByteAcked<=min(cwnd, rwnd)
TCP sending rate: cwnd/RTT bytes/sec