Dijkstra Algorithm
·
CS/Algorithm
BFSFrom BFS에서 시작하여 다익스트라를 증명할 수 있다.모든 엣지의 weight가 1이라고 할 때 shortest path를 찾을 수 있다.  queue를 사용함src에서 시작을 해서 src를 0으로 하고, 거리를 아는 것을 다 queue에 넣음.이후, 또 인접하는걸 모두 넣는다.거리가 1인 얘들이 전부 queue에 들어가야 거리가 2인 애들이 전부 queue에 들어갈 수 있다. 1이 전부 나와야 2가 전부 들어갈 수 있다. 2,3,4도 모두 같은 방식으로 queue에 들어왔다가 나옴  찾을 수 있지만 굉장히 느리다. edge weight를 1로 만들기 위해서 dummy node를 중간 중간에 넣어 모든 edge의 weight가 1이 되도록 한다.> 그래프가 매우 커지고 느려진다.  S에 가까운 ..
[Greedy Algorithm] Shortest Path
·
CS/Algorithm
Dijkstra AlgorithmVersion of DijkstraOnly Shortest Path Length for each Node 경로를 구하는 것이 아니라 길이를 구하는 것Actual Path for each Node also 패스 노드까지 구함All possible Shortest Paths for each Node 모든 shortest path를 구함 - compact하게 표현하는 방법이 필요함Alternate ExplanationsAs a Variation of BFSSelect from Nearest to Furthest계속 짧은 길을 붙여나가는 방식은 shortest path를 찾을 것 같지만, 그렇지 않다. Shortest Path기 때문에 prim 처럼 풀 수 없다.  Shortes..
Prim Algorithm Coding
·
CS/Algorithm
Prim을 위해 만들어야할 것priority queue노드 Marking 배열그래프#include #include using namespace std;//TRI를 만들 것 노드, 노드 , wight 형태로 저장되는 것class TRI {public: int a, b, w;};//priority queueclass PQ {public: int n; TRI Arr[1000]; PQ(); //생성자 TRI Delete(); //삭제 void Insert(TRI x); //삽입 int isEmpty(); //비어있는지 확인};PQ::PQ(){ n = 0;}int PQ::isEmpty(){ return n == 0; //n에 들어있는게 없다면 0을 리턴}//prio..
[Greedy Algorithms] Minimum Spanning Tree
·
CS/Algorithm
Greedy Alogrithms답을 찾기 위해 선택을 반복하는 알고리즘비교적 간단한 방법으로 선택선택한 후 바꾸지 않는 알고리즘ex) selection sort -> greedy 전체에서 가장 작은걸 찾아서 새 배열의 첫번째 배열로 "선택"하여 옮김 선택하는 것은 가장 작은것을 고름 (선택을 한 쪽의 배열에서는 없어졌다고 생각)남은곳에서 또 제일 작은 것을 고르는 과정을 반복 Shortest path ideaS에서 B까지 가는 가장 짧은 길을 찾는다고 하자* S에서 A까지 가는 가장 짧은 길 등등을 찾는것과 같다. 해당 짧은 길을 찾으려면 많은 가장 짧은 길을 찾아야한다. S에서 나가는 것 중에 제일 작은 것은 5이고 C에 도착C까지 가는 5보다 짧은 길이 있는가? -> 없음 : 다른 길을 가는 순간 이..
[Network Layer] IP addressing
·
CS/Computer Network
인터넷 : TCP / IP를 사용하는데 이는 transport layer / network layer이다.IP addressing32-bit identifier for host and router interface8bit.8bit.8bit.8bit로 나타내며 .을 통해 구분됨router의 각 port들의 ip address들을 표현했고, 그 밖은 host들의 ip address이다. 왼쪽 세개의 호스트와 라우터 인터페이스는 233.1.1.xxx 형식의 IP 주소를 가진다.4개의 인터페이스가 중계하는 라우터 없이, 하나의 네트워크에 연결되어있는 것이다. (LAN or AP로 연결)세 호스트들의 인터페이스와 하나의 라우터 인터페이스가 subnet을 구성하는 것이다.따라서 233.1.1은 subnet 구분을 ..
[Network Layer] Routing
·
CS/Computer Network
Network layer : 어떤 router을 거쳐서 client2로 패킷을 전송할지 결정하는 역할Two types of servicesConnectionless : 목적지만 지정되어 있음Connection-oriendted : 중간에 어떤 라우터를 거쳐 도착할 지 헤더에 저장되어 있다.Forwarding : Move pkt from router's input to appropriate router output (라우터로 들어와서 어디 subnet으로 보낼지 결정하는 것)Routing : Determine route token by pkt from source to dst (Fowarding 보다 큰 개념)Routing algorithm은 Fowarding table을 만들어준다.  Implementa..
[Transport Layer] TCP
·
CS/Computer Network
Data Transfer간단한 버전으로 TCP에 대해 설명하겠다. * TCP는 비교적 간단한 protocol이다. (GBN과 SN의 결합형태)Data received from Application Layer → encapsulate : in a segment, allocate SN, start timer, pass to the network layer▷ 데이터 수신 (응용계층 → 전송계층) : 애플리케이션 계층에서 데이터를 수신하여 TCP 세그먼트로 캡슐화한다. 이 과정에서 각 세그먼트에 SN을 할당하고, 타이머를 설정한다. 이후, 캡슐화된 세그먼트를 네트워크 계층으로 전달한다.Timer time-out : restransmit the segment, restart timer▷ 세그먼트가 전송된 후 일정..
[Transport Layer] 신뢰적인 데이터 전송의 원리
·
CS/Computer Network
신뢰적인 데이터 전송을 구현하는 문제는 전송 계층 뿐만 아니라, 링크 계층과 애플리케이션 계층에서도 발생하는 문제이다. Some limitations of the channel채널이 불안정한 상황들drop msgsreorder msgs deliver duplicate copies of a given msgACK가 와야 도착했다고 생각 → 늦어지면 재전송 (delay가 길었을 경우)limit msgs to finite sizedeliver msgs often an arbitary long delay 신뢰적 데이터 전송Frame FormatReciver pkt number▷ piggy-backing : for reverse direction of data flow ARQ ProtocolAutomatic Re..
[Transport Layer] UDP (User Datagram Protocol)
·
CS/Computer Network
* Demultiplexing : extend the host-to-host delivery service to a process-to-process service 호스트에서 호스트로 전송하는 것을 넘어서, 프로세스에서 프로세스로 전송하게 해주는 서비스 세그먼트 구조port # : 포트 번호 목적지 호스트가 목적지 종단 시스템에서 동작하는 (역다중화 기능을 수행하는) 정확한 프로세스에게 애플리케이션 데이터를 넘기게 해줌 * 전송 계층에서는 헤더에 포트 번호 (프로세스의 위치)를 헤더에 붙여준다. 각 port 번호를 지칭하는 길이는 16bit 이므로 \(2^{16} = 64K = 65536\) 개의 포트가 사용 가능하다. Length : 길이헤더를 포함하는 UDP 세그먼트의 길이를 바이트 단위로 나타낸다...
SQL Injection
·
Hacking/Web Hacking
웹 사이트들은 사용자의 입력 값을 이용해 데이터베이스 접근을 위한 SQL Query를 생성한다.공격비정상적인 SQL Query를 이용한 공격사용자 인증을 비정상적으로 통과데이터베이스에 저장된 데이터를 임의로 열람데이터베이스의 시스템 명령을 이용하여 시스템 조작 웹 로그인 시 SQL문웹에서 사용자가 ID와 패스워드 입력창에 자신의 ID와 패스워드를 입력하면, 다음과 같은 SQL문이 작성되어, 데이터베이스에 전송 예시로 member라는 데이터 베이스가 있다고 가정하자.즉, 입력한 로그인과 비밀번호를 찾아서 데이터베이스에 정보가 존재하면 비교하는 코드가 필요하다SELECT user_idFROM memberWHERE user_id='입력된 아이디' AND user_pw='입력된 패스워드'형식으로 비교한다.  이..