16 Eylül 2010 Perşembe

What really happens when you navigate to a URL

As a software developer, you certainly have a high-level picture of how web apps work and what kinds of technologies are involved: the browser, HTTP, HTML, web server, request handlers, and so on.

In this article, we will take a deeper look at the sequence of events that take place when you visit a URL.

1. You enter a URL into the browser

It all starts here:

image

2. The browser looks up the IP address for the domain name

image

The first step in the navigation is to figure out the IP address for the visited domain. The DNS lookup proceeds as follows:

  • Browser cache – The browser caches DNS records for some time. Interestingly, the OS does not tell the browser the time-to-live for each DNS record, and so the browser caches them for a fixed duration (varies between browsers, 2 – 30 minutes).
  • OS cache – If the browser cache does not contain the desired record, the browser makes a system call (gethostbyname in Windows). The OS has its own cache.
  • Router cache – The request continues on to your router, which typically has its own DNS cache.
  • ISP DNS cache – The next place checked is the cache ISP’s DNS server. With a cache, naturally.
  • Recursive search – Your ISP’s DNS server begins a recursive search, from the root nameserver, through the .com top-level nameserver, to Facebook’s nameserver. Normally, the DNS server will have names of the .com nameservers in cache, and so a hit to the root nameserver will not be necessary.

Here is a diagram of what a recursive DNS search looks like:

500px-An_example_of_theoretical_DNS_recursion_svg

One worrying thing about DNS is that the entire domain like wikipedia.org or facebook.com seems to map to a single IP address. Fortunately, there are ways of mitigating the bottleneck:

  • Round-robin DNS is a solution where the DNS lookup returns multiple IP addresses, rather than just one. For example, facebook.com actually maps to four IP addresses.
  • Load-balancer is the piece of hardware that listens on a particular IP address and forwards the requests to other servers. Major sites will typically use expensive high-performance load balancers.
  • Geographic DNS improves scalability by mapping a domain name to different IP addresses, depending on the client’s geographic location. This is great for hosting static content so that different servers don’t have to update shared state.
  • Anycast is a routing technique where a single IP address maps to multiple physical servers. Unfortunately, anycast does not fit well with TCP and is rarely used in that scenario.

Most of the DNS servers themselves use anycast to achieve high availability and low latency of the DNS lookups.

3. The browser sends a HTTP request to the web server

image

You can be pretty sure that Facebook’s homepage will not be served from the browser cache because dynamic pages expire either very quickly or immediately (expiry date set to past).

So, the browser will send this request to the Facebook server:

GET http://facebook.com/ HTTP/1.1

Accept: application/x-ms-application, image/jpeg, application/xaml+xml, [...]
User-Agent: Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; WOW64; [...]
Accept-Encoding: gzip, deflate
Connection: Keep-Alive
Host: facebook.com
Cookie: datr=1265876274-[...]; locale=en_US; lsd=WW[...]; c_user=2101[...]

The GET request names the URL to fetch: “http://facebook.com/”. The browser identifies itself (User-Agent header), and states what types of responses it will accept (Accept and Accept-Encoding headers). The Connection header asks the server to keep the TCP connection open for further requests.

The request also contains the cookies that the browser has for this domain. As you probably already know, cookies are key-value pairs that track the state of a web site in between different page requests. And so the cookies store the name of the logged-in user, a secret number that was assigned to the user by the server, some of user’s settings, etc. The cookies will be stored in a text file on the client, and sent to the server with every request.

There is a variety of tools that let you view the raw HTTP requests and corresponding responses. My favorite tool for viewing the raw HTTP traffic is fiddler, but there are many other tools (e.g., FireBug) These tools are a great help when optimizing a site.

In addition to GET requests, another type of requests that you may be familiar with is a POST request, typically used to submit forms. A GET request sends its parameters via the URL (e.g.: http://robozzle.com/puzzle.aspx?id=85). A POST request sends its parameters in the request body, just under the headers.

The trailing slash in the URL “http://facebook.com/” is important. In this case, the browser can safely add the slash. For URLs of the form http://example.com/folderOrFile, the browser cannot automatically add a slash, because it is not clear whether folderOrFile is a folder or a file. In such cases, the browser will visit the URL without the slash, and the server will respond with a redirect, resulting in an unnecessary roundtrip.

4. The facebook server responds with a permanent redirect

image

This is the response that the Facebook server sent back to the browser request:

HTTP/1.1 301 Moved Permanently

Cache-Control: private, no-store, no-cache, must-revalidate, post-check=0,
pre-check=0
Expires: Sat, 01 Jan 2000 00:00:00 GMT
Location: http://www.facebook.com/
P3P: CP="DSP LAW"
Pragma: no-cache
Set-Cookie: made_write_conn=deleted; expires=Thu, 12-Feb-2009 05:09:50 GMT;
path=/; domain=.facebook.com; httponly
Content-Type: text/html; charset=utf-8
X-Cnection: close
Date: Fri, 12 Feb 2010 05:09:51 GMT
Content-Length: 0

The server responded with a 301 Moved Permanently response to tell the browser to go to “http://www.facebook.com/” instead of “http://facebook.com/”.

There are interesting reasons why the server insists on the redirect instead of immediately responding with the web page that the user wants to see.

One reason has to do with search engine rankings. See, if there are two URLs for the same page, say http://www.igoro.com/ and http://igoro.com/, search engine may consider them to be two different sites, each with fewer incoming links and thus a lower ranking. Search engines understand permanent redirects (301), and will combine the incoming links from both sources into a single ranking.

Also, multiple URLs for the same content are not cache-friendly. When a piece of content has multiple names, it will potentially appear multiple times in caches.

5. The browser follows the redirect

image

The browser now knows that “http://www.facebook.com/” is the correct URL to go to, and so it sends out another GET request:

GET http://www.facebook.com/ HTTP/1.1

Accept: application/x-ms-application, image/jpeg, application/xaml+xml, [...]
Accept-Language: en-US
User-Agent: Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; WOW64; [...]
Accept-Encoding: gzip, deflate
Connection: Keep-Alive
Cookie: lsd=XW[...]; c_user=21[...]; x-referer=[...]
Host: www.facebook.com

The meaning of the headers is the same as for the first request.

6. The server ‘handles’ the request

image

The server will receive the GET request, process it, and send back a response.

This may seem like a straightforward task, but in fact there is a lot of interesting stuff that happens here – even on a simple site like my blog, let alone on a massively scalable site like facebook.

  • Web server software
    The web server software (e.g., IIS or Apache) receives the HTTP request and decides which request handler should be executed to handle this request. A request handler is a program (in ASP.NET, PHP, Ruby, …) that reads the request and generates the HTML for the response.

    In the simplest case, the request handlers can be stored in a file hierarchy whose structure mirrors the URL structure, and so for example http://example.com/folder1/page1.aspx URL will map to file /httpdocs/folder1/page1.aspx. The web server software can also be configured so that URLs are manually mapped to request handlers, and so the public URL of page1.aspx could be http://example.com/folder1/page1.

  • Request handler
    The request handler reads the request, its parameters, and cookies. It will read and possibly update some data stored on the server. Then, the request handler will generate a HTML response.

One interesting difficulty that every dynamic website faces is how to store data. Smaller sites will often have a single SQL database to store their data, but sites that store a large amount of data and/or have many visitors have to find a way to split the database across multiple machines. Solutions include sharding (splitting up a table across multiple databases based on the primary key), replication, and usage of simplified databases with weakened consistency semantics.

One technique to keep data updates cheap is to defer some of the work to a batch job. For example, Facebook has to update the newsfeed in a timely fashion, but the data backing the “People you may know” feature may only need to be updated nightly (my guess, I don’t actually know how they implement this feature). Batch job updates result in staleness of some less important data, but can make data updates much faster and simpler.

7. The server sends back a HTML response

image

Here is the response that the server generated and sent back:

HTTP/1.1 200 OK

Cache-Control: private, no-store, no-cache, must-revalidate, post-check=0,
pre-check=0
Expires: Sat, 01 Jan 2000 00:00:00 GMT
P3P: CP="DSP LAW"
Pragma: no-cache
Content-Encoding: gzip
Content-Type: text/html; charset=utf-8
X-Cnection: close
Transfer-Encoding: chunked
Date: Fri, 12 Feb 2010 09:05:55 GMT

2b3��������T�n�@����[...]

The entire response is 36 kB, the bulk of them in the byte blob at the end that I trimmed.

The Content-Encoding header tells the browser that the response body is compressed using the gzip algorithm. After decompressing the blob, you’ll see the HTML you’d expect:






...

In addition to compression, headers specify whether and how to cache the page, any cookies to set (none in this response), privacy information, etc.

Notice the header that sets Content-Type to text/html. The header instructs the browser to render the response content as HTML, instead of say downloading it as a file. The browser will use the header to decide how to interpret the response, but will consider other factors as well, such as the extension of the URL.

8. The browser begins rendering the HTML

Even before the browser has received the entire HTML document, it begins rendering the website:

image

9. The browser sends requests for objects embedded in HTML

image

As the browser renders the HTML, it will notice tags that require fetching of other URLs. The browser will send a GET request to retrieve each of these files.

Here are a few URLs that my visit to facebook.com retrieved:

  • Images
    http://static.ak.fbcdn.net/rsrc.php/z12E0/hash/8q2anwu7.gif
    http://static.ak.fbcdn.net/rsrc.php/zBS5C/hash/7hwy7at6.gif
    …
  • CSS style sheets
    http://static.ak.fbcdn.net/rsrc.php/z448Z/hash/2plh8s4n.css
    http://static.ak.fbcdn.net/rsrc.php/zANE1/hash/cvtutcee.css
    …
  • JavaScript files
    http://static.ak.fbcdn.net/rsrc.php/zEMOA/hash/c8yzb6ub.js
    http://static.ak.fbcdn.net/rsrc.php/z6R9L/hash/cq2lgbs8.js
    …

Each of these URLs will go through process a similar to what the HTML page went through. So, the browser will look up the domain name in DNS, send a request to the URL, follow redirects, etc.

However, static files – unlike dynamic pages – allow the browser to cache them. Some of the files may be served up from cache, without contacting the server at all. The browser knows how long to cache a particular file because the response that returned the file contained an Expires header. Additionally, each response may also contain an ETag header that works like a version number – if the browser sees an ETag for a version of the file it already has, it can stop the transfer immediately.

Can you guess what “fbcdn.net” in the URLs stands for? A safe bet is that it means “Facebook content delivery network”. Facebook uses a content delivery network (CDN) to distribute static content – images, style sheets, and JavaScript files. So, the files will be copied to many machines across the globe.

Static content often represents the bulk of the bandwidth of a site, and can be easily replicated across a CDN. Often, sites will use a third-party CDN provider, instead of operating a CND themselves. For example, Facebook’s static files are hosted by Akamai, the largest CDN provider.

As a demonstration, when you try to ping static.ak.fbcdn.net, you will get a response from an akamai.net server. Also, interestingly, if you ping the URL a couple of times, may get responses from different servers, which demonstrates the load-balancing that happens behind the scenes.

10. The browser sends further asynchronous (AJAX) requests

image

In the spirit of Web 2.0, the client continues to communicate with the server even after the page is rendered.

For example, Facebook chat will continue to update the list of your logged in friends as they come and go. To update the list of your logged-in friends, the JavaScript executing in your browser has to send an asynchronous request to the server. The asynchronous request is a programmatically constructed GET or POST request that goes to a special URL. In the Facebook example, the client sends a POST request to http://www.facebook.com/ajax/chat/buddy_list.php to fetch the list of your friends who are online.

This pattern is sometimes referred to as “AJAX”, which stands for “Asynchronous JavaScript And XML”, even though there is no particular reason why the server has to format the response as XML. For example, Facebook returns snippets of JavaScript code in response to asynchronous requests.

Among other things, the fiddler tool lets you view the asynchronous requests sent by your browser. In fact, not only you can observe the requests passively, but you can also modify and resend them. The fact that it is this easy to “spoof” AJAX requests causes a lot of grief to developers of online games with scoreboards. (Obviously, please don’t cheat that way.)

Facebook chat provides an example of an interesting problem with AJAX: pushing data from server to client. Since HTTP is a request-response protocol, the chat server cannot push new messages to the client. Instead, the client has to poll the server every few seconds to see if any new messages arrived.

Long polling is an interesting technique to decrease the load on the server in these types of scenarios. If the server does not have any new messages when polled, it simply does not send a response back. And, if a message for this client is received within the timeout period, the server will find the outstanding request and return the message with the response.

Conclusion

Hopefully this gives you a better idea of how the different web pieces work together.

26 Mayıs 2008 Pazartesi

SQL sorgusuyla doğum günü bulma

Merhaba Arkaşlar,

Bu yazıda SQL sorgusu ile doğum günü bugün olanları bulduracağız.

Örnek tablomuzun adı MUSTERI olsun ve tabloda müşterinin Ad soyad ve doğum tarihi bilgilerini tutan şu alanlar
[ADSOYAD varchar(50)]
[DT (datetime)]
olsun.

Sorguyu Access için yaparsak bugünün tarihini döndüren NOW fonskiyonunu,
SQL Server için yaparsak GETDATE() fonksiyonunu kullanacağız.

Access Sorgusu:

select ADSOYAD,DT from MUSTERI where DAY(DT)=DAY(NOW) and MONTH(DT)=MONTH(NOW)

SQL SERVER(T-SQL) sorgusu:

select ADSOYAD,DT from MUSTERI where DAY(DT)=DAY(GETDATE()) and MONTH(DT)=MONTH(GETDATE())

24 Mayıs 2008 Cumartesi

Parmakizi ve Güvenlik 1

Parmak izi tanıma teknolojisinin iki temel dayanağı vardır:
(i) Süreklilik;parmak izinin temel karakteristiği zamanla değişmez; ve
(ii) kişisellik:parmak izi her bireye ait benzersiz bir özelliktir.İlk öncülün geçerliliği parmak derisinin anatomik ve morfolojik özelliğine dayanır.

İkinci öncülün noktası ise deneysel sonuçlara göre doğru olduğu kabul edilmiştir;fakat bilimsel gerçeklikte kesin kanıtlanmamıştır.Sonuç olarak parmak izinin kanıt olmasının yasallığı zamanında bir çok mahkemede sorgulanmıştır.Parmak izinin kişiselliğinin bilimsel temelde kanıtlanması sadece parmak izinin mahkemelerde akla uygunluğunun kabul edilebilirliğini değil,aynı zamanda otomatik parmak izi doğrulama sistemlerinin üstünlüğünü kanıtlayacaktır.

Parmak üzerinde ki küçük noktalara (“Minutiae”) ait özelliklerinden bir miktar uygun bilgi ölçerek elde edilen iki parmakizi imajın karşılaştırılıp doğruluğunun kanıtlanmasın da parmak izinde ki kişiselliğinde ki problemleri gün yüzüne çıkarır.Ölçülen minutiae temellip parmak izi temsillerinin arasında ki birbirine benzerlikten bir ifade elde edilir.Örneğin bir parmak izinde ki 36 minutiae noktası ,rastgele seçilmiş başka bir parmak izine ait 36 minutiae noktası ile 12 noktayı paylaşırsa iki parmak izinin aynı olabilirliği (6.10 x 10^2) dir. Bu olasılık tahmini tipik bir parmakizi kıyaslamasının doğruluk sonucudur.

Parmak izinde çok büyük ayırıcı bilgiler olmasına rağmen algılanan parmak elde edilen değerlerden çıkan sonuç bilinen inanışın aksine, parmak izi kıyaslaması hatasız değildir ve hatalar olabilir.Şu an da kullanılan parmak izi okuyucular bile teorik doğruluk limitine çok uzaktır.

Parmakizinin Özellikleri

Parmak izi, parmak ucu derisinde, göz ile görülebilen çıkıntıların meydana getirdiği şekillerdir. Dış deriye ait bu çıkıntılara, papilla veya hat denir. Parmaklarımızı dikkatlice incelersek, parmak izlerinin, birçok hattın farklı biçimlerde bir araya getirilmesiyle yapıldığını görürüz.

Tek yumurta ikizleri de dahil olmak üzere herkes, eşsiz parmak izlerine sahiptir. Bir başka deyişle, insanların kimlikleri parmak uçlarında kodlanır. Bu kodlama sistemi,günümüzde kullanılan barkod sistemine benzetilebilir.

Derin kesik ve yaralar olmadığı sürece, parmak izlerindeki bu hatlar, insan hayatı boyunca değişmez. Parmak izlerinin bu değişmez ve herkes için farklı özellikleri (tek yumurta ikizlerinde bile bu farklılık mevcuttur), onları kimlik tespiti konusunda çok kullanılan bir özellik haline getirmiştir.

Yaratıcı, parmak izlerine o kadar fazla eşsiz bilgiyi sıkıştırmış ki ,doğru tanımlama için parmak izinin küçük bir parçası bile yeterli olmaktadır.

Parmak izlerinin ferdi tanıma gayesiyle kullanılması fikri, 1890´lı yıllarda, Hindistan´da
görev yapan İngiliz polis şefi Sir Edward Henry tarafından ortaya atılmıştır. Bu teknik
günümüzde en yaygın kullanılan biometridir.

Parmak izleri, tanımlama doğruluğu konusunda güçlü bir şablon sağlamak için yeterince karmaşıktır. Daha sağlıklı bir güvenlik isteniyorsa, birden çok parmağın izi kullanılabilir. Çünkü her parmağın izi farklı yaratılmıştır. Parmak izinin taranması, hızlıdır ve kişilere herhangi bir rahatsızlık vermez. Parmak izi tarayıcıları, kolaylıkla küçültülebilir vedüşük maliyetle çok sayıda üretilebilir. Bugün bazı ülkelerde sadece sol ve sağ işaret parmakları bile yeterli görülmektedir. Bununla beraber bazı insanların parmak izlerinin görüntülenmesi güçtür. Yeni teknolojilerle, parmak izlerinin görüntü olarak değil, kodlanarak saklanması da tercih edilebilmektedir.

Bilim ilerledikçe, biyometrik olarak kullanılabilecek insana has hususiyetler daha da artacaktır. Bu sebeple insan biyometrisi; çağın gerisinde kalmak istemeyen toplumların,araştırma ve geliştirme çalışmalarında ihmal etmemeleri gereken bir çalışma sahasıdır.

İnsanlar parmak izinin özelliklerini uzun yıllardan beri bilmektedir.Daha önceleri siyah mürekkeple kriminoloji de kullanılan parmak izleri gelişen teknoloji ile dijital hale getirilmiştir.Kişiyi tanımlayan ayırıcı bir özellik olmasından dolayı son yıllarda özellikle güvenlik sistemlerinde kullanılmaya başlanmıştır.

Parmak izinin fizyolojik ve morfolojik yapısına dönersek parmak izi parmak derisinde ki tepelerden(ridge) ve çukurlardan oluşur.Tepeler parmak boyunca uzanan yükseltili çizgilerdir.Bu tepeler arasında ki kısım ise çukurları oluşturur.Parmak izi tanıma teknolojisinde bu çukurlar ve tepeler arasında oluşan noktalar(minutiae) dan faydalanılmaktadır.Bunun yanında parmak izlerinde çekirdek ve delta adı verilen iki özellik daha vardır.Çekirdek küçük noktaların kodlanmasında kullanılırlar.Deltalar ise parmak izlerinin oluşturduğu deltalardır.












Not:Bu yazı üniversite bitirme tezimden özetlenerek yapılmış alıntıdır.

23 Mayıs 2008 Cuma

Biyometrik Sistemler üzerine...

Ünlü eğitim bilimci Maslov’un gereksinimler hiyerarşisinin ikinci basamağını güvenlik kavramı oluşturmaktadır.Eski insanlar için güvenlik vahşi hayvanlardan korunmak ve yaşamını çeşitli tehditlerden korumak iken,modern insan için güvenlik tanımı değişmiştir.

Yaşadığımız çağ bilişim çağı olduğu için bilgi kavramının önemi artmıştır.Bilgi değer anlamına geldiği için bu değeri muhafaza etmek de önem kazanmıştır.İnternet’in de yaşamımıza girmesiyle bilgiye ulaşmak kolaylaşmıştır.Bilgiye olan gereksinim arttıkça bilgi güvenliği de aynı doğrultuda artmıştır.Her bilginin herkese açık olmasının bazı sakıncaları vardır.Özellikler iş,finans ve e-ticaret ortamlarında bilgi güvenliği son derece önemlidir.

Bu yüzden bilgi güvenliği için günümüzde bir çok çalışma yapılmaktadır.Bu konuda ki en son yaklaşım ise biometrik tanımaya dayalı güvenlik sistemleridir.Çünkü biometrik yaklaşım insanoğlunun doğasında ki benzersizlik prensibine dayanır.İnsanlar diğer insanlardan parmak izleri,yüz ve el geometrileri,irisleri,ses tonları ile birbirlerinden farklılık gösterirler.Bu farklılık üzerine yapılan bir güvenlik sistemi kuşkusuz diğer sistemlere göre üstünlükler taşıyacaktır.

Ülkemiz için biometrik uygulamalar son derece sınırlı iken Amerika Birleşik Devletlerinin başını bir çok ülkede bu temelde bir çok uygulama geliştirilmektedir.ABD pasaportu bile biyometrik hale getirilmiş özellikle ülkeye giriş çıkışlar parmak izi tanısına dayanmıştır.Bunun yanında bir çok banka pilot bölgeler seçerek müşterilerine parmak izi sensörlerü dağıtmış ve e-ticaret ortamnı güvenli hale getirmeyi amaçlamıştır.Sadece ABD’de e-ticaret ortamında dolaşımda ki para bir trilyon dolar civarında tahmin edilmektedir.Bu da bilgi güvenliğin önemini göstermektedir.

YAZININ AMACI


Dijital bilgi güvenliği için bir çok yöntem geliştirilmiştir.Bu yöntemler kriptoloji
algoritmaları,güvenlik protokol ve servisleri (SSL,Kerberos– X.509 kimlik kanıtlama),dijital
imzalama(DDS,RSA),özel kodlar (hash, digest, MAC) şeklinde özetlenebilir.
Bu yazının amacı , biometrik sistemlerin özellikleri anlatmak ve parmakizi tanımaya
dayalı biometrik bir sistemin ERP gibi bir uygulamaya nasıl entegre edileceği hakkında fikir
verecek bir uygulamayı tanımamaktır.


İş ortamında kullanılacak bir ERP yazılımında erişim kontrollerini ve haklarını klasik şifre korumalı yöntemler yerine biometrik parmak izi ile sağlayarak klasik sistemlere güvenli bir alternatif olacak bir bilgisayar programının tanımlanmasından oluşmaktadır.

BİYOMETRİK SİSTEMLER

Biometrik, bir kişinin fizyolojik veya davranışsal karakteristiğini temel alan ve
kişilerin tanınması işleminin otomatikleştirilmesidir.Biometrik tanımlamada kişilerin ölçüt
özellikleri kişinin; parmak izi, el veya yüz geometrisi , el yazısı, irisi, retinası ve damarı
olarak sayılabilir. Biometrik teknolojiler yüksek güvenlikli tanımlama uygulamalarında ve
kişi doğrulama çözümlerinde temel olmaya başlamaktadır.Güvenlik basamağı oyukları ve
sahtekarlığın arttığı günümüzde yüksek güvenlikli tanımlama ve kişi doğrulama teknoloji olan
biometrik sistemlere ihtiyaç artmaktadır.

Biometrik sistemleri temel alan çözümler gizli mali işlemler ve kişisel veri gizliliğini
sağlayabilecek yapıdadırlar.Biometrik sistemlere devlet daireleri,askeri kurumlar,finansal ve
ticari uygulamalarda ihtiyaç vardır.Kurumsal ağ güvenlik yapıları,güvenli elektronik
bankacılık,mali işlemler,parekende satış,hukuki yürütme,sağlık ve sosyal servislerde daha
şimdiden biometrik teknolojilerden faydalanmaktadırlar.
Biometrik temelli yetkilendirme ve tanıma uygulamalarına istasyonları,ağ ve domain
erişimi,uygulama logon,kaynaklara uzak erişim,WEB ve işlem güvenliği dahil edilebilir.

Bu elektronik işlemlerde güven(trust) küresel ekonominin sağlıklı büyüyebilmesi için
zorunluluktur.Tek başına kullanılan ya da akıllı kart,şifrelenmiş anahtarlar ve sayısal
imzalama gibi diğer teknolojilerle entegre edilmiş biometrik sistemler günlük yaşamımızı
kaplamaya başlayacaktır.Kişi tanıma ve yetkilendirme için biometrik sistemlerin kullanımı şu
an güncel metotlar olan şifre ya da PIN kullanımdan daha güvenli ve kullanılışlıdır.Bundan
dolayı biometrik sistemler bireye özgü eylemlere işaret eder.Çünkü güncel sistemlerde şifre
ya da kart başkası tarafından kullanılabilir veya şifre hatırlamak veya kart taşımak
gerekebilir.Biometrik sistemlerde ise kişi dışında başka yollarla sisteme erişmek mümkün
değildir.Ayrıca şifre hatırlamaya da gerek yoktur.Bu da biometrik sistemleri sosyal yönden
daha kabul edilebilir kılmaktadır.

Biometrik Sistemlerin Çalışması

Biyometrik sistemler tarayacı gibi sensörlerden elde edilen bilginin dijital hale getiren
yazılımlardan ve analiz gerektiğinde karşılaştırma yapabilmek için eski kayıtların tutulduğu
bir veri tabanından oluşur.Biometrik sistemlerde iki önemli unsur bulunur.Bunlar
kayıt tanımlamadır ve onaylamadır.

Dış dünyadan sensörlerle alınan biometrik bilgi sayısal olarak işaretlenir ve bu bilgi
küçük ama anlamlı sayısal ifadeler olarak bir şablona dönüştürülür.Uygulama çeşidine göre
bu şablon veri tabanı(Access,MySql,Oracle) olabileceği gibi kullanıcıya verilen bir kart da
olabilir.Tanımla bölümünde ise aynı kayıt işleminde olduğu gibi dış dünyadan alınan
örneklenmiş ve sayısal hale getirilmiş şablon daha önce veri tabanına kaydedilmiş şablonda
aranır ve kıyaslama yapılarak tanımlama yapılır.

Tanımlama ve Onaylama

Biometrik bir sistemde iki farklı modda işlem yapılır.İlk basamakta
“Ben kimim?” sorusuna cevap aranır.Kullanıcı kendine ait biyometrik bir özelliği sisteme
tanıttıktan sonra , bu özellikten bir Şablon çıkartılır.Bu Şablonin doğru elde edilmesi
önemlidir.Bu Şabloni elde etmek için doğruluk kontrolü yapılır ve bu Şablonin mevcut
veritabanında olup olmadığı araştırılır.(Matching)Bu araştırma/arama esnasında yeni
oluşturulan Şablonin veri tabanında ki mevcut Şablonlere benzerlik derecesi belirtilen eşik
değerinin üstünde ise kullanıcının veritabanında olduğunu , elde edilen Şablon eşik değerinin
altında ise kullanıcının veri tabanında kayıtlı olmadığını gösterir.

Onaylama ya da doğrulama ( authentication ) işleminde ise “ben gerçekten iddia
ettiğim kişi miyim?” sorusuna cevap aranır.Tanımlamanın aksine kullanıcı kendine ait bir
parola ya da tanmlı kart ile sisteme kendi özelliklerinin olduğu bir yer belirtir.Bu işlemin
ardından kullanıcının biometrik özellikleri sistem tarafından alınır.Elde edilen Şablon , daha
önce kayıtarda ki Şablonle kıyaslanır ve boolean mantığının doğru(True) ya da yanlış(False)
sonucu üretilir.

Şablon Yönetimi

Biyometrik bir Şablon bireyin biyometrik özelliklerinin sayısal ifadesidir.Farklı
algoritmalar ve farklı metotlar Şablonlerin farklı boyutlarda olmasını sağlar.Ayrıca Şablonin
sistemde nasıl temsil edileceği ,nasıl temsil edileceği ve nasıl saklandığı da şablon
yönetiminde dikkat edilmesi gereken bir diğer unsurdur.Genelde daha küçük boyutlu şablonlar
oluşturabilen sistemler kapasiteye ve performansa olan pozitif etkilerinden dolayı daha
avantanlıdırlar.Örneğin elde edilen bir parmak izi , 150 Kb lık bir resim dosyası halinde
saklandığını ve karşılaştırıldığını düşünelim.Bu durumda büyüyen veri tabanı binlerce
kullanıcının kayıtlı olduğu bir sistemi büyük ölçüde yavaşlatacak;sisteme kayıt ve doğrulama
işlemi büyük ölçüde artarak hem zaman kaybına hem de performans kaybına sebep olacaktır.

Bu sebepten dolayı şu dört sistemden en uygun olanı tercih edilir.

  • Şablon sistemin kendi içinde saklanır.
  • Kapalı bir ağda şablonlar dağıtık veri tabanları üzerinde saklanır.
  • Şablonlar tek ve merkezi bir veritabanında saklanır gerektiğinde biometrik cihazın
  • hafızasına indirgenebilir.
  • Şablon akıllı kart (match on card ) veya jeton (token) gibi taşınabilir bir araç üzerinde
  • saklanır.

İlk yöntemde şablonlar cihaz üzerinde ki hafızada tutulur.Hafıza kapasitesinin
kullanıcı sayısını karşıladığı sistemler için çok uygundurlar.Bu tür sistemlerde şablon ve işlem
bilgilerinin yedeklenebileceği bir ünite ve bir iletişim portu bulunmalıdır.Haberleşme popüler
haberleşme standartları ile yapılır(RS 232 gibi) Yedekleme yapılarak sistemin kriz anında
korunması amaçlanır.

İkinci yöntemde ise bir ağda bulunan her bir biometrik ünitenin üzerinde bulunan veri
tabanlarının ağda paylaşımı ile oluşan bir yapı vardır.Örneğin her biri 500 şablon saklayabilen
5 adet ünitenin bulunduğu biometrik sistemde veri tabanının toplam büyüklüğü 2500
şablondur.Kullanıcı 2 numaralı okuyucu ünitesinden PIN numarası ya da ID kartını tanıtıp
sisteme girmek istediğinde ilk olarak 2 nolu ünite kendi veri tabanında arama yapar.Eğer
kullanıcının veritabanında olmadığı anlaşılırsa diğer ünitelere bu kullanıcının veritabanlarında
olup olmadığına bakmaları için bir mesaj gönderilir.Diğer birimlerden olumlu cevap gelirse
kullanıcı tanımlanmış olur.Bu tür birimlerden biri ağ yönetiminden ve veritabanı
yedeklemesinden sorumludur.Genellikle bu işlemler bilgisayarlar tarafından yapılır.

Üçüncü yöntemde ise biometrik Şablonlar merkezi bir veritabanı tarafından tutulur ve
tanımlama isteği geldiğinde kullanıcı ünitesine aktarılır.Bu yöntem seçilen biometrik ünitenin
yapısından bağımsız geniş ölçekli bir veritabanının kullanımına imkan verir.Bu yapıya bağlı
birimlerden birine tanımlama isteği geldiğine,bu birim merkezi veri tabanına bu isteği
ulaştırır.Merkezi ünite ise gelen çağrının ve Şablonun türüne göre veritabanında arama ve
kıyaslama işlemi yapıp sonucu istemci birime gönderir.


Dördüncü ve son yöntemde ise biometrik şablon taşınabilir bir saklama aracında taşınır
ve sorumluk kullanıcıya bırakılır.Taşınabilir araç basit bir manyetik kart,temaslı yapıda
üzerinde chip olan bir kart ya da temasın olmadığı RF (Radio Frequency) kart olabilir.Bu
yöntemde kullanıcı kendi Şablonini yanında taşır ve gerektiğinde biometrik üniteye
yükledikten sonra makineden karşılaştırma yapmasını bekler.Bu sistemde ağa bağlılık
azaldığı için kullanıcı ağ trafinden etkilenmeyecektir.Bunun yanında ağla bağlantı az olduğu
için güvenlik de artar.

Biometrik Sistemlerin Performans Standartları

Biometrik endüstri tarafından geniş bir biçimde kullanılan performans standartları
çeşitli biyometrik sistemlerin etkinliğini ölçmek için kullanılır.Bu standartlar her hangi bir
biometrik sisteme özgü değildir.Bütün biometrik teknolojilere uygulanabilirler.Bu standartlar,

• The False Acceptance Rate(FAR); yanlış kabul oranı,
• The False Rejection Rate(FRR); yanlış olanı red etme,
• The Equal Error Rate(EER) ; eşit olan hata,
• The Failure To Enroll Rate; sisteme giriş başarısızlık oranı,
• The Ability To Verify Rate ;doğrulama kabiliyeti oranından

meydana gelir.

Şu an biometrik ürün imalatçıları tarafından açıklanan performans performans standartlarını
düzenleyen ve gözlemleyen herhangi bir yönetim birimi yoktur.Buna bağlı olarak biometrik
endüstrisinde imalatçıları arasında ürünlerin performansı hakkında bir tartışma
vardır.Örneğin imalatçı performans standartlarının sonuçlarını abartılı
gösterebilirlerdi.Biometrik üreticiler gerçek nesneleri kullanarak ürünlerini geliştirmelerine
rağmen test ortamı gerçek hayatta ki gerçekçiliğe ulaşamadı.Bu yüzden bu sistemlerin
standartlarını tanımlamak ve gözlemek için Uluslar arası Biometrik Endüstri Birliği ve
BioAPI Konsorsiyumunun kurulmasına gidecek yol açılmış oldu.

Biometrik bir sisteme geçmeden ve sistemi tanımlamadan(implementation) önce üreticiler
tarafından tanımlanmış performans standartlarına bakmak gereklidir.
Şimdi biometrik sistem performans standartlarını inceleyelim;

Hata Kabul Oranı (The False Acceptance Rate (FAR)) :Tip II Hataları da denebilir. Bu
performans standardı biometrik sistemin bir sahtekarı sisteme kayıtlı biri olarak yanlışlıkla
tanıma ihtimalini ve sisteme erişimini ifade eder.

Hata Reddetme Oranı (The False Rejection Rate (FRR)) :Tip I hataları da denebilir. Doğru
kişinin biometrik sisteme girişinin reddedilme ihtimalini ifade eder.

Eşit Hata Oranı (The Equal Error Rate): FAR ve FRR oranlarının aynı ya da eşit olması
ihtimalini ifade eder.Eşit hata oranı aynı zamanda Çaprazlama oranı olarak da bilinir.FAR ve
FRR değerinin eşit olması istenen çok az uygulama vardır.Aşağıda ki grafikte Eşit Hata Oranı
(EER) nin nerde olduğu gösterilmiştir.

Sisteme Giriş Başarısızlık Oranı (The Failure To Enroll Rate(FTE)) ,kısaca kişinin
biometrik sisteme giriş yapamama olasılığının oranıdır.Bunun sebebi kişinin biometrik
sistemin yakalayacağı ayırt edici bir özelliğe sahip olmaması olabilir.Örneğin işimizde
çalışan bir işçi biometrik sisteme kendini kaydedemeyebilir.Bunun sebebi kişinin benzersiz
bir parmak izi ya da el geometrisine sahip olmamasından kaynaklanabilir.Gerçi Sisteme Giriş
Başarısızlık Oranı genellikle çok düşük oranlarda olmasına rağmen,herhangi bir kullanıcımız
sisteme bu yüzden giremez ve kullanamazsa sistemin back up unu almak doğru davranış
olacaktır.

Doğrulama Yeteneği Oranı(The Ability To Verify Rate – ATV). Bu performans standardı
biometrik sistem tarafından doğrulan yüzdesini gösterir . Örneğin biometrik sistem tarafından
başarılı bir şekilde tanınarak doğrulanan işçilerimizin oranın yüzdesi Doğrulama Yeteneği
Oranıdır(ATV).Bu değer aynı zamanda FTE ve FRR nin kombinasyonu şeklinde de olabilir.

Not:Bu bilgiler bitirme tezimden özetlenmiştir.
İkinci yazımda parmakizi eşleşme hakkında bilgiler olacak.

22 Mayıs 2008 Perşembe

SQL ISNULL ve COALESCE komutu

SQL ISNULL

Bazı Sql sorgularında kimi alanların null değer döndürürdüğünü biliyoruz.Örneğin
select urunid,urun_adi,fiyat from STOK sorgusunda fiyat alanı null değer almışsa yukarıda ki sorguda null döndürecektir.

Sorgu sonucunda null değerlerle karşılaşmamak istemiyorsak sorguyu ;

select UrunId,UrunAdi,ISNULL(Fiyat,0) from STOK olarak değiştirebiliriz.

ISNULL komutunun yazımı :

ISNULL ( kontrol_edilecek_ifade , null_yerine_konacak değer)

Örnek : select ISNULL(Sum(Fiyat),0) from STOK => Fiyat sutununda null olarak dönen değerleri 0 ile değiştirir.


SQL COALESCE
Kullanım amacı ISNULL komutu ile hemen hemen aynıdır.Yalnız ISNULL komutu ANSI standart komutu değildir.Ben genelde Access veya SQL Server üzerinde sorgularda ISNULL komutunu kullanıyorum.

COALESCE kullanıma gelince yukardaki aynı sorgu cümleciğini kullanarak;

select UrunId,UrunAdi,COALESCE(Fiyat,0) olarak kullanabiliriz.

COALESCE fonksiyonuna parametre olarak verdiğiniz ifadeleri birbiriyle kıyaslar,hangisi null değilse onu döndürür.

COALESCE komutunun yazımı : COALESCE(parametre1,parametre2,.....parametre[n])


Gelelim aralarındaki farklara:
  • COALESCE komutunun yazması,hatırlaması ve telafuzu çok zor.ISNULL komutu ise bu konuda epey avantajlı.
  • COALESCE ANSI-SQL uyumludur.Hemen hemen tüm veritabanlarında sorgulama yaptırabilirsiniz.ISNULL komutu ise T-SQL uyumlu.Yani Microsoft orijinli (Access,SQL Server) veritablarında kullanabilirsiniz ama örneğin Firebird 'de denenerseniz bu komut tanınamaz.
  • ISNULL mutlaka iki parametre ile kullanılır.Birden fazla parametre ile kullanmak isterseniz iç içe(nested) kullanmak durumundayız.COALESCE bu yönden epey işe yarar.İkiden fazla parametreyi kullanabiliriz.Bu söylediklerimizi komut dökersek;

SELECT COALESCE(NULL, NULL, 'fe')==> fe değerini döndürür.(İkiden fazla parametre)

SELECT ISNULL(NULL, NULL, 'fe') ==>hata meydana gelir.Çünkü mutlaka iki parametre kullanmak durumundayız.

Bu hatayla karşılaşmamak için komutu iç içe (nested) kullanacağız;

SELECT ISNULL(NULL, ISNULL(NULL, 'fe')) ==>fe değeri döner.

21 Mayıs 2008 Çarşamba

Merhaba Dünya

Merhaba Arkadaşlar,
Blog ortamına girip bir şeyler yapmaya uzun zamandır niyetleniyordum ama bir türlü fırsat bulamıyordum.
Artık üretkenliğin bir ölçüsü de bildiklerini paylaşmak olarak görülüyorsa,biz de üzerimize düşen görevimizi yapacağız.
Selamlar.