AW01 Linux E-zine jasht.

Pershendetje, u be kohe qe nuk po shkruaj dhe realisht nuk kam pasur aspak kohe per shkak te punes dhe impenjimeve te tjera.

Kam kenaqesine te ndaj me ju versionin e pare te E-zine-s AW (AlbanianWizard) ku do te gjeni nje cheat-sheet per perdorimin e perditshem Linux gjithmon per perdoruesa te nje niveli fillestar\mesatar, meqenese jemi ne shqiperi po e çojm mesatar :(

SQARIM: AlbanianWizard nuk jam une siç mund te jene keqkuptuar disa, un jam Arditi dhe jam thjesht nje i apasionuar mbas Informatikes ne pergjithesi, qellimi per te cilin kjo faqe eshte quajtur AlbanianWizard eshte per shkak te nje grupi te vjeter qe nuk eshte as koha e as vendi te flitet.
PS – kam pare shume postime te cilat kane qene spam, te cilat jane fshire.
Qe postimi juaj te pranohet ketu duhet qe :
Te perdorni nje email real
Te perdorni emrin tuaj real (ose te pakten nje serioz)
Te mos beni spam
Te mos flisni budallalliqe/genjeshtra.

Uroj qe tju pelqej, ose me sakt jam i sigurt qe do u pelqej.
Eshte goxha teknike keshtu qe ecni disi me intuit 😉

http://albanianwizard.org/3z1n3s/aw01.txt

Conficker Worm

A keni degjuar ndonjeher per kete worm i cili vertitet neper internet kohet e fundit. Eshte nje nder me te rrezikshmit i cili ka bere te jene viktime miliona kompjutera qe nga viti 2003 me sisteme operimi windows.
Dhe e bukura eshte se ky worm u be i ditur vetem ne 2008. Ne 2009 u be e ditur qe ky worm kishte sulmuar mbi 15 milion kompjutera ne mbi 200 shtete te botes. Wormi fillimisht u perhap sipas LAN dhe me pas me ane te usb dhe network share. Ne janar wormi sulmoi Floten Detare Franceze e cila bllokoi dhe uljet e avioneve ne te pasi nuk arrinin dot te benin update planet e fluturimit. Ministria e mbrojtjes se Britanise se Madhe deklaroi qe shum nga kompjuterat desktop te saj ishin infektuar nga ky worm. Ne 2 shkurt 2009 Ministria e Mbrojtjes gjermane deklaroi gjithashtu qe qindra kompjutera te saj ishin infektuar nga Conficker.
Pra kemi te bejme me nje monster te vertete, prandaj une pata deshire te shkruaj kete teme per te palajmeruar te gjithe IT shqiptare per kete rrezik. Ketu do tju jap disa nga nga menyrat se si ky worm punon dhe si mund ta parandalojme dhe ta identifikojme.

Atehere wormi sulmos sic thame sistemet Windows dhe cili eshte nje nga pjeset me vulnerabel te ketyre sistemeve? NetBIOS pasi sic e dime ne kohe me ane te stack overflow dhe Buffer overflow qe ky ka mund te shtrytezojme menyra pa fund per te shperndare dicka nepermjet rrjetit.

-Ne nje rast worm ka shfrytezuar nje Remote Code Execution i cili ben te mundur ekzekutimin e nje komande apo aplikacioni per pa kerkuar te drejta autentikimi.
-Rasti II
Conficker B perdor te njejten gje por nese ky bug eshte mbyllur fillon me brute force pra provon pass dhe username me rradhe me ane te nje fjalori.

-Rasti III
Perdor usb apo krijon dll te cilat te ekzekutojne autorun.

-Rasti IV
Eshte nje menyre qe perdor Conficker D qe realisht akoma nuk eshte zbuluar.

P.S Nese dikush gjen source kodin ta postoj, po nuk besoj pasi ne keto momente ate vetem mund ta blesh pasi nuk e gjen gjekundi.

Per te vazhduar te infektoi Worm vazdhon keto procedura:
-Bllokon Dns LookUp
-C’aktivizon AutoUpdate
-C’aktivizon Safe Mode
-Dhe mbyll proceset e anti malwareve
-Me pas kontrollon qe keto jane mbyllur.
Worm synon proceset explorer.exe dhe services.exe dhe si perfundim eshte lidhet me ane te p2p te serverat .
Fale vegles me te mire per security nmap ne mund ta detektojme kete worm me ane te kesaj komande:

nmap -PN -T4 -p139,445 -n -v --script smb-check-vulns,smb-os-discovery --script-args safe=1 [targetnetworks]
Pas ekzekutimit aplikacioni ju informon me nje mesazh qe komjuteri eshte i infektuar apo jo.
Pra sic shohim te sulmuara jane portat 139 dhe 445.

Ndersa per nje analize me te detajuar te worm do ta gjeni ketu:
http://www.honeynet.org/files/KYE-Conficker.pdf
e shkruajtur nga gjenia Dan Kaminsky.

Linux Ubuntu komanda fsck

Pershendetje, kam kohe qe nuk kam shkruar ne blog pasi kam qene shum i zene. Sot do te trajtoj nje teme e cila mendoj se mund te jete e nevojshme per cdo perdorues jo ekspert te linux. Atehere para ca ditesh me doli nje problem me ubuntu me te cilin punoj ne pune pasi pati nje nderprerje dritash dhe une isha duke kryer nje proces kur e rinis sistemin perseri shoh qe sistemi nuk me hapej me. Sistemi me kerkonte nje check disk e lash dy here ta bente dhe sistemi perseri nuk startonte por me dilte nje console per recover e cila te jepte mundesine te veproje me komandat. Duke pare errorin qe me dilte “filesystem error” mendova te perdor nje komande qe quhet :

fsck – check and repair a Linux file system

sic tregon dhe vete emri kjo komande kontrollon filet e sistemit dhe nese gjen gabime i korigjon. Pasi e ekzekutova komanden:

sudo fsck

kontrolli i sistemit filloj dhe me pas gjeti gabime, me pas me kerkoi ti korigjonte mjaftoj qe une ti jepja nje yes dhe cdo error korigjohej. Me pas bera nje restart dhe sistemi u kthye si me pare. Per te pare te gjitha komandat e fsck mjafton te shkruani ne bash:

man fsck

ose per me shume informacion keni kete link:

http://manpages.ubuntu.com/manpages/hardy/man8/fsck.8.html

Ja nje nga pergjigjet e pyetjeve pse te pelqen linux. Nese do te kishim Windows do te duhej te vendosnim diskun dhe ta lenim repair dhe nese gjithmone e bente do te shihnim qe shume programe nuk do te punonin. Imagjinoni sikur sistemi te ishte nje web apo mail server dhe te ishte windows sa kohe te kerkone per riparim ndersa nje linux nuk do te kerkonte me shume se 1 minute.

Windows ne Linux me Virtualbox | Si te ndajm direktorit dhe Suporti 3D

Pershendetje, ky eshte nje minitutorial i radhes ku do te shohim se si te instalojm nje windows XP ne linux dhe gjithashtu do te shohim se si te ndajm direktorit (folders) nga linux ne windows ne menyre qe ti kemi te aksesueshem edhe nga Windows.
Fillojm,
Distribucione Linux ka shume, per ta instaluar ne:
Fedora : yum install virtualbox-ose
Debian : apt-get virtualbox-ose
Slackware : installpkg virtualbox-ose
openSuSE : yast2 –install virtualbox-ose
archlinux : pacman -S virtualbox-ose
E keshtu me radhe.
Mbasi  e instalojm, startojm virtualbox dhe mbasi regjistrohemi klikojm tek New , pastaj Next  dhe fusim emrin psh: Windows dhe Vazhdojm klikojm gjithmon NExt NeXt nExT deri sa te startoj ne ekran, mbas kesaj kemi 2 mundesi instalimi:
a) me ane te diskut ne CD-Drive te kompiuterit
b) me ane te nje imazhi ISO te diskut
Sido qe te jete, nese kemi diskun te masterizuar dhe gati vazhdojm me Next dhe do te instalohet, nese kemi failin ISO atehere i bejm browse, shkojm tek lokacioni ku gjendet psh windows_xp.iso dhe e instalojm.
Per te instaluar windows XP sbesoj se ka nevoj per ndonje tutorial.

Si te ndajm Direktorit ne Windows dhe Linux me ane te VirtualBox

Tani qe kemi dhe windows-in tone ne egzekutim me ane te VirtualBox shkojm tek Windows XP-ja yne, ne te majte te ekranit lart kemi : Machines    Devices    Help
Klikojm tek Devices dhe selektojm Install Guest Additions, do te na thote qe nuk gjenden ne kompiuter a ti shkarkoj? ne do i themi po, dhe do i shkarkojm nga interneti, do i instalojm me “next next” duke mos harruar te selektojm dhe suportin dhe pershpejtimin 3D e mbas kesaj do i bejm reboot.
Bukur, tani hapim virtualbox, pa ndezur windows shkojm tek Settings>Shared Folders dhe shtojm psh /home/qaniu dhe klikojm OK, mbas kesaj startojm Windows dhe shkojm tek Start>Run dhe japim cmd ose startojm promptin e komandave dhe japim:
net use x: //vboxsvr/qaniu (ose emri i direktoris qe keni shtuar tek Virtual box dhe do na thote qe komanda u egzekutua me sukses, shkojm tek My Computer dhe do te gjejm nje “qaniu on vboxsvr X:” te njohur si drive, ja ku mbaroi.

Suporti 3D dhe Pershpejtimi 3D
Siç e thame i instaluam Sun VirtualBox Guest Additions dhe Pershpejtimin 3D (3D Accelerations) edhe pse eshte ende ne “prove”, keshtu qe tani shkojm tek VirtualBox>Settings te Windows XP>Display dhe klikojm tek 3D Acceleration qe duhet te na dali Enambled me vone.
Startojm Windows,
Mbaroi.

Per te rregulluar maksimalisht pamjen (display) madhesin e ekranit te windowsit pra, nderkohe qe Windows eshte ne egzekutim klikojm siper tek Machine> Adjust Window Size dhe ne restartin tjeter pamja do te jete thjesht perfekte.

FUND.

Si te programojm ne Java – Shembull Input \ Output

http://albanianwizard.org/Postokodin/53
/*
http://albanianwizard.org
arditi*at*hush*pik*ai
Liçence GPLv3
——————————-
USHTRIM
——————————-
Shkruaj nje program i cili analizon nje txt file dhe numrat pozitiv i depoziton
ne nje file pozitive.txt, kurse ato negativet i depoziton ne nje file negative.txt
Pyete perdoruesin per ç’do emer faili.
*/

import java.util.*;
import java.io.*;
public class FiltroNumrat {
public static void main (String []args ) throws IOException
{
//Percaktojm Variabilat\\
int numri;
String origjina, destpozitiv, destnegativ;
//Krijoj Objektin per emrat e faileve\\
Scanner inPuti = new Scanner (System.in);

//Marrim te dhenat nga faili origjinar
System.out.println(“Emri i Failit Origjinar :”);
origjina = inPuti.nextLine().trim();
File origjinaf = new File (origjina);
Scanner ori = new Scanner (origjinaf);

//Marrim te dhenat nga faili i destinacionit te numrave pozitiv
System.out.println (“Emri i Failit ku do te depozitohen numrat pozitiv :”);
destpozitiv = inPuti.nextLine().trim();
File destinapoz = new File (destpozitiv);

//Marrim te dhenat nga faili i destinacionit te numrave negativ
System.out.println (“Emri i Failit ku do te depozitohen numrat negativ :”);
destnegativ = inPuti.nextLine().trim();
File destinaneg = new File (destnegativ);

//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\
//Krijojm objektet per te printuar tek failet e futura nga perdoruesi
PrintStream psp = new PrintStream(destinapoz);  //Pozitiv
PrintStream psn = new PrintStream (destinaneg);   //Negativ
numri = ori.nextInt(); //numri merr vleren e pare qe vjen nga faili origjinar
while (ori.hasNextInt()) //Nderkohe qe nga faili origjinar vijn numra te plote…
{
while (numri >= 0) //dhe ky numer eshte >= 0
{
psp.println(“Numri pozitiv eshte :” + numri); //printo numrin pozitiv tek faili
System.out.println(“Numri pozitiv eshte :” + numri); //printo numrin pozitive ne ekran
numri = ori.nextInt();//Jepi variabiles numri vleren e radhes qe vjen nga faili origjinar
/*Nese kjo nuk behet atehere programi do te printoj vazhdimisht numrin e pare dhe keshtu
do te kaloj ne infinit */
}
while (numri <= 0)
{
psn.println(“Numri negativ eshte :” + numri);//printo numrin negativ tek faili
System.out.println(“Numri negativ eshte :” + numri);//printo numrin negativ ne ekran
numri = ori.nextInt();//Jepi variabiles numri vleren e radhes qe vjen nga faili origjinar
}
}
psp.close();
psn.close();
/*Kjo pjese eshte pjesa qe me ka marre shume kohe sepse ndodh qe te behet nje gabim banal dhe te
* vendoset mbyllja e printimit ne brendesi te ciklit while gje qe do te sillte qe ne failet
* e outputit pozitive.txt dhe negative.txt do te gjenim vetem nje numer , numrin e fundit.. Kjo
* sepse sa here qe do printohej nje numer faili do te mbyllej dhe kur te printohej tjetri do te rihapej
* gje qe do te sillte ate qe tham me siper.. Ky Bug ka kete pamje:
* while (numri <= 0)
{
psn.println(“Numri negativ eshte :” + numri);
System.out.println(“Numri negativ eshte :” + numri);
numri = ori.nextInt();
psn.close();
}
* Pra siç e shohim psn.close(); do te mbyllte printimin ne ç’do cikel while.
*/
}
}

Cikli While – Te programojm ne Java

Cikli While eshte nje pjese e thjeshte e programimit ne pergjithesi, eshte gjeresisht e perdorur dhe mund te perfitojm shume nga perdorimi i tij. Mund te kisha marre shume shembuj per ta ilustruar por zgjodha shumezimin faktorial ne menyre qe te kuptohet me ne gjeresi.

import java.util.Scanner;    //Importojm klasen skaner pasi do marrim impute nga tastiera
public class Faktorial
{
public static void main (String [ ]args)
{
Scanner inPuti = new Scanner (System.in); //krijojm objektin inPuti
long N, fakt = 1; //Percaktojm 2 variabila 1 long N dhe tjetren 1 per faktorialin
System.out.println ("Fut nje numer :");
N = inPuti.nextLong();
if (N >= 0 && N < 20)
  {
	while (N > 1)  //Perderisa Numri > 1 vazhdo

  {
		fakt = fakt * N;  // 1 = 1 * Numrin
        N = N - 1;        //Numri = Numri - 1
  }  //Numri = Numrin - 1
  System.out.println ("Faktoriali eshte :" + fakt); //Printojm faktorialin e numrit.
  }
 else
          {
          System.out.println ("Numri duhet te jete 0 ose me i madh.");
          System.out.println ("SHENIM: Per numra me te medhenj se 20 perfundimi do jete i gabuar sepse variabila i tejkalon bitet qe mund te mbaj" +
           "dhe automatikisht bitet teper i kalon ne kosh, dhe si problem eshte i njohur me \"Overflow\" ne boten e informatikes");
           }
}
}

Bukur mbasi i hodhem nje sy ushtrimit shpjegojm se ç’fare ndodhi.

Shembull, po kryejm te gjitha operacionet qe do bej cikli yne while nese merr numrin 4 nga perdoruesi:
Fut nje numer: 4, ky numer shkon dhe depozitohet ne variabilen N
if kontrollon nese nje statement eshte i vertete, dhe meqenese 4 >= 0 dhe me i vogel
se 20 atehere e fut ne cikel while i cili nderkohe qe sheh se 4 > 1:
fakt = fakt * N                                        ==> 1 = 1 * 4                           ==> fakt = 4
N = N – 1                                                  ==> N = 4 – 1                          ==> N = 3
while ( N > 1 ) ==> 3 > 1
fakt = fakt * N                                         ==> 4 = 4 * 3                          ==> fakt = 12
N = N – 1                                                   ==> 3 = 3 – 1                          ==> N = 2
while ( N > 1 ) ==> 2 > 1
fakt = fakt * N                                         ==> 12 = 12 * 2                      ==> fakt = 24
N = N – 1                                                   ==> 2 = 2 – 1                           ==> N = 1
while ( N > 1 ) ==> Tani N = 1 dhe 1 nuk eshte me i madh se 1 keshtu qe cikli mbyllet
nderkohe qe variabila fakt ka vleren 24 ndersa variabila N ka vleren 1
Besoj se eshte e qarte, pra Cikli While ka kete forme, “nderkohe qe : kushti : veprime”

Ne kete ushtrim vihet re dhe nje overflow nese fusim numra me te medhenj se 20 , do te ishte interesante ta trajtonim dhe ne nivelin e sigurise kete problem te njohur por shpresojm se ne raste te tjera do te jete diskutim me i pershtatshem

OSI SHTRESA 7 – APLIKACIONI

Kjo eshte shtresa e fundit dhe me e larte e OSI-t, dhe emri eshte vertet i goditur sepse kjo eshte shtresa qe perdoret nga aplikacionet network te cilat jane pergjegjese per ti ofruar sherbime inputeve te drejtperdrejta te perdoruesit.
Gabimi qe bejn shumica kur flasin per kete shtrese eshte se i trajtojn aplikacionet si (ftp-clinet, web browser, Wireshark :D) e keshtu me radhe sikur ato “qendrojn ne shtresen e aplikacionit” pra ne shtresen 7 gje e cila nuk eshte aspak e vertet sepse ne realitet aplikacionet perdorin shtresen 7 kjo sepse kur kemi trajtuar temen “Te pathenat per OSI” thame se nuk duhet te egzagjerojm ne kuptimin e OSI-t dhe duhet ta mbajm ate ne nje nivel metodologjik.

Keshtu pra kjo eshte diçka qe duhet fiksuar edhe pse shume shpesh ndodh qe vet sistemi operativ te perdori shtresen 7 dhe jo vetem aplikacionet. Per te kuptuar me mire kete bejm krahasimin midis nje browseri (Firefox psh) dhe protokollit HTTP i cili percakton se si do te paraqitet nje dokument qe gjendet ne rrjet ne browser, pra browseri eshte tjeter dhe qendron ne kompiuterin tone si aplikativ kurse HTTP i cili eshte protokoll eshte tjeter dhe ky qendron si koncept ne shtresen Aplikative duke specifikuar menyren se si duhet te sillet kur ti marri apo kaloj informacion me browserin.
A ka shtrese tjeter (shtrese 8) siper kesaj? JO!
Shtresa Aplikacion eshte e vetmja shtrese qe nuk i sherben nivelit te mesiperm pasi nje nivel 8 nuk egziston por ne vend te kesaj u siguron sherbim aplikacioneve
qe jane te “ngjitura” me te. Kjo rrjedhimisht sjell edhe funksionin e saj i cili eshte te implementoj funksionet e nevoitura nga perdoruesi ne rrjet.
Dis protokolle te njohura qe operaojn ne kete shtrese jane:
HTTP, FTP, SMTP, DHCP, NFS, Telnet, SNMP, POP3, NNTP ,IRC etj etj…

OSI SHTRESA 6 – SHTRESA E PREZANTIMIT

Per mua personalisht kjo shtrese eshte nje lloj simotre e shtreses data link ne aspektin e “driverit” apo interfaces qe krijon midis shtreses qe ka poshte dhe asaj qe ka larte kete e them sepse:
1.Shtresa e prezantimit sherben per te prezantuar (duke formatuar etj) ^akoma me shume^ informacionin per tek shtresa 7 , ajo e aplikacionit.
2.Ka funksione goxha te limituara dhe specifike
3.Perdoret shume me pak se sa shtresat e tjera.
Funksionet e Shtreses se Prezantimi

  • Perkthimi – ne nje rrjet mund te kemi kompiutera Linux [:D], Windows [:'(], Macintosh, Solaris e keshtu me radhe dhe te gjitha keto jane shume te ndryshem nga njeri-tjetri por ne te njejten kohe ato mund te komunikojn me njeri-tjetrin, pergjegjes per te zhdukur diferencat eshte Shtresa 5.
  • Kompresimi – ne kete shtrese eshte e mundur te behet dhe kompresimi (gjithashtu dhe dekompresimi) i te dhenave duke rritur performancen e rrjetit.
  • Enkriptimi – siguria eshte nje faktor gjithnje e me ne rritje, askush nuk deshiron te dali defiçit, keshtu qe te dhenat ne network shpesh-here i gjejm te transmetohen ne forma te ~sigurta~ psh me ane te SSL, enkriptimi behet pikerisht ne Shtresen 5 ndersa decryptimi behet ne te njejten shtrese por tek hosti ku jane destinuar te dhenat.

Funksioni baze eshte ai i shafitjes se ndarjeve nga nje sistem ne nje tjeter, ose me sakt nga nje aplikativ ne nje tjeter, keshtu Linux mund te komunikoj lehte me Windows. :D1
Arsyeja se pse u tha se kjo shtrese nuk perdoret shume eshte sepse funksione si Enkriptimi, Kompresimi, “Perkthimi” konsiderohen si opcionale dhe realisht nuk jane nje fenomen ciklik ne rrjet.
“Protokollet” me te njohura ne kete shtrese jane RDP (Remote Desktop Protocol), SSL, TLS, MIME, NCP (NetWare Core Protocol) etj.

OSI SHTRESA 5 – SHTRESA E SESIONIT

Ja ku po hyjm tek “abstraktja” apo aty ku fillon aplikacioni dhe ndryshimi real i shtresave te OSI-t. Deri tani u mesuam me fragmentim, paketim , transport , adresim dhe preokupim me si te shkembejm te dhenat, ku ti transferojm , si ti transferojm , si te krijojm lidhjen midis dy hosteve e keshtu me radhe ndersa tani kemi hyre tek Shtresa 5 e cila eshte me e uleta e niveleve te larta dhe tashme nuk merret me me punet e “renda” por preokupohet me shume me lejimin e paisjeve qe te krijojn sesione. Ç’fare eshte nje sesion? Sesion eshte nje linkim persistent midis dy proçeseve aplikative per nje kohe te caktuar aq sa i nevoitet aplikacioneve per te shkembyer te dhenat.
API – Application Program Interface
Puna primare e shtreses se sesionit eshte qe te vendosi sesione midis aplikativeve dhe ne realitet programet e kesaj shtrese jane me shume aplikative se sa protokolle. Keto aplikative i sherbejn shtresave te siperme nepermjet komandave te caktuara qe zakonisht quhen appliaction program interface apo API.

API-t e zakonshme perfshijn NetBIOS, Remote Procedure Calls [RPC], TCP\IP Sockets te cilat e lejojn aplikacionin te kryej komunikime te nje niveli te lart nepermjet networkun thjesht duke perdorur keto ‘metoda komunikimi’ te standardizuara.
Keto (API-t) jane ne interes primar sidomos per programatoret te cilet shkruajn inteface komunikimi per programet e tyre , dhe ky interes deshmohet edhe ne C# (C sharp) e cila eshte nje gjuhe e ideuar pikerisht per nje API te programueshme me thjesht dhe per programe networku te kodueshme ne menyre te thjeshte dhe funksionale.

Socket Programming, eshte nje shkenc e zhvilluar plotesisht ne kete shtrese, pra ne shtresen Session (5), dhe perdoret zakonisht per te krijuar bashkbisedimin midis dy aplikacioneve ne rrjet ne nje sistem Unix, nderkohe qe NetBIOS perdoret gjeresisht ne sistemet windows. Keshtu qe nuk duhet te bejm gabim dhe te themi se “Socket eshte protokoll” sepse nuk kemi te bejm me me “si dhe qysh te transportohen te dhenat nga filan router, te kalojn ne kete linje, e te fragmentohen kaq here” por kemi te bejm me shtresen abstrakte dhe aplikative ku fuqia i qendron aplikacionit. E njejta gje ndodh dhe me NetBios meqe ra fjala, ai nuk eshte protokoll prandaj quhet NetBios – TCP\IP sepse ndertohet dhe nderverpon MBI Tcp\IP-n dhe nuk eshte protokoll me vete. QART 😉 !?
Kjo eshte dhe arsyeja se pse kur klikoni tek NETWORK ne windows u dalin kompiuterat me emra te caktuar qe i takojn nje domini (WORKGROUP, psh) dhe nuk u dalin adresat IP, te tyre apo adresat Hardware (kjo nuk do te thote qe nuk i disponojn, ndryshe nuk do te ishte e mundur lidhja).

OSI Shtresa 4 – Transporti

Shtresa 4 e OSI-t quhet Transport Layer (Shtresa e Transportit) dhe ne baze te protokolleve qe perdoren ne te, ajo kryen inkapsulimin e blloqet e te dhenave te krijuara nga aplikacionet ne segmente dhe datagrame (vini re, tani nuk quhen me paketa por segmete dhe datagrame) nga nje host ne nje destinacion tjeter.
Pse quhen segmente e datagrame e jo me paketa?
Sepse qe te kryhet transporti ne menyre te kuptueshme dhe pa gabime duhet qe mesazhet (po perdor kete si term te pergjithshem) te jene te kuptueshem edhe nga shtresa 4 e rrjetit ku gjendet destinacioni e per me teper keto mesazhe duhet te plotesojn disa kushte qe percaktohen nga protokolli qe jane duke perdorur (psh UDP) , ne munges te kesaj qe thash nuk do kishte sherbim TCP\IP, UDP e keshtu me rradhe.
Kjo shtrese (Transport) ben dhe te kunerten e proçesit te permendur me siper, merr datagrame – segmente dhe i kthen ato ne ngarkese te dhenash per aplikacionet. Kjo aftesi e dyte qe permenda i jep kesaj shtrese emrin Shtresa e Transportit sepse duke ndodhur kjo1 krijohet nje “bashkbisedim” i drejteperdrejt midis dy hosteve (bashkbisedimi per te qene korret quhet virtual sepse transporti ne realitet nuk ndodh drejtpersedrejti nga shtresa 4 ne shtresen 4 por kalon njehere ne shtresat me te uleta, kujto kounikimin virtual).
Ketu jemi ne mes :), shtresa e mesme dhe e katert e OSI eshte shtresa e Transportit. Kemi nje koncept kyç, sa me lart te ngjitemi ne hierarkine OSI aq me shume rritet dhe abstraksioni pasi i largohemi punes me “çekiç e gozhde” dhe i afrohemi abstraktes e ne kete rast shtresa e Transportit eshte ne njefare menyre me shume e ngjitur me nivelet e uleta pasi ka te beje me transportin (virtualisht dhe jo realisht) por nga ana tjeter ka dhe pika shume te ngjashme me shtresat 5 dhe 7.
Nuk duhet keqkuptuar qe ky nivel i OSI-t preokupohet me transportin real te mesazheve, dmth bazohet ne shtresat e meposhtme qe e bejn kete pune , pra (tranposrtimin fizik) nderkohe qe vet preokupohet me transportin por ne aspektin e protokollit, rregullave dhe aspketeve te tjera qe do i shohim me poshte. Komunikimi behet ne menyre horizontale por virtualisht pasi nuk komunikon ne menyre te drejtperdrejt me shtresen Network te destinacionit.
Ne kohen tone kompiuterat jane multitasking dhe ne te njejtin moment shume aplikacione mund te kerkojn qe te dergojn dhe marrin te dhena nga interneti. Shtresa e Transportit eshte pikerisht pergjegjese per kete pune. Kjo ndodh sepse ne momentin qe aplikacionet fillojn kerkesat e tyre , shtreses Network i vijn te dhena nga aplikacione te ndryshme dhe eshte detyre e kesaj shtrese qe te bashkoj keto rryma ne nje rryme te vetme (multiplexing sepse ndajn te njejten adrese IP) dhe te bej tranzmisionin per tek shtresa Network.
Ne kete shtrese (shtresa 4 e transportit), lidhjet mund te jene connection oriented (TCP) ose connectionless (UDP).
Asnjera nuk eshte me e mire se tjetra, te dyja perdoren ne menyre frekuente.
Protokolleve te kesaj shtrese u jepet “inteligjence” me ane te algoritmeve (ja ku eshte dhe lidhja me shtresat e mesiperme te bazuara ne aplikativin dhe abstrakten) dhe ne kete menyre keto protokolle sigurohen qe transporti i mesazheve midis paisjeve te jete i rregullt dhe efiçent.
Pse datagram dhe segment dhe jo vetem datagram ose vetem segment?
Sepse datagram zakonisht perdoret per protokollet e thjeshta qe nuk kane shume sherbime si psh UDP (nuk siguron ritransmetim ne rast gabimi, mund te humbasin te dhena gjate trasmetimit dhe nuk siguron kontroll fluksi – pra connectionles) kurse segment perdoret per Connection Oriented si psh TCP.
Opcionet specifike te shtreses 4 te OSI, Tranportit.

  • Adresimi i Proçeseve neper Porta te caktuara – thame se ne kete shtrese (4) behet kujdesja qe multitasking te jete dhe ne network, dhe lind pyetja si ka mundesi qe te perdorin 8 programe rrjetin ne te njejten kohe?
    Thame se Data Link jep adresat hardware, ndersa Network jep adresen IP, keshtu qe Transportit i ngelet te percaktoj adresimin ne menyre qe te ndahen programet nga programet dhe keshtu secili program ka hapesiren dhe destinacionin e tij, keshtu qe nuk hyjn ne konflikt dhe sherbimi nuk i mohoet asnje programi. Ky adresim eshte i paraqitur shume mire nga Portat UDP e TCP. Pra ne kete rast behet fjale kur psh ne nje Tcp header shkruhet dhe porta e destinacionit , psh 80 ne rastin kur perdoret si aplikativ HTTP (web server) dhe adresa eshte akoma me shume e specifikuar.
  • Multiplexing dhe Demultiplexing – ajo qe u tha me siper ka lidhje ne menyre te drejteperdrejt me kete qe po shkruhet, multiplexing eshte kur shume proçeseve (proçes ne rrjet eshte veprimi qe shkakton nje aplikacion duke komunikuar me rrjetin) u dedikohet nje adrese dhe u jepet sherbimi ne baze te nje adrese IP te vetme, ndersa Demultiplexing eshte e kunderta dhe ndodh kur vjen pergjigja dhe pergjigja qe kalon ne IP-n tone zberthehet dhe u jepte proçeseve qe kerkuan me pare komunikim, apo sherbim.2
  • Segmentimi , Paketimi dhe Riasemblimi – Shtresa e Tranportit segmenton grumbujt e medhenj te te dhenave qe dergon neper rrjet ne mesazhe te vogla te cilat ja kalon shtreses se Networkut, eshte proçesi i ngjashem qe u quajt Fragmentim kur Networku copetonte mesazhet dhe ja dergonte Data Layer, ndryshimi i vetem eshte se ne rastin e Transportit paketat copetohen qe te kenaqin shtresen e Networkut, kurse ne rastin e Networkut ato copetoheshin ne limitet e Data Link.
  • Menaxhimi, Hapja dhe mbyllja e lidhjeve – Protokollet connection oriented te shtreses se Transportit jane pergjegjese per hapjen, mbylljen dhe mbarvajtjen e lidhjeve.
  • Njohja (ACK) dhe ritransmetimi – Shtresa e Transportit per te realizuar transmetimin korrekt te te dhenave perdor nje teknik qe i ben te ditur derguesit se te dhenat erdhen, apo i kerkon ritransmetimin nese mbas 3 tentativave te dhenat nuk kane arritur ende.
    Kjo njihet dhe si 3 handshake.
  • Kontrolli i Fluksit – tek protokollet qe jane connection oriented ofrohet dhe mundesia per te kontrolluar fluksin e dergimit te mesazheve ne rrjet. Kjo specifik sepse kompiuterat kane nje memorje te limituar dhe nese memorja eshte duke u konsumuar i thuhet derguesit qe te uli pak fluksin e dergimit per te mos rezultuar ne nje sulm Fload.3

Relacioni midis shtreses Network dhe asaj te Transportit.
Panvaresisht se ne teori duken shume te ndare nga njeri-tjetri ne praktike jane shume te ngjashem dhe argument per kete eshte se mjafton qe te drejtohemi tek protokolli me i perdorur TCP/IP dhe vjen pergjigja. IP eshte protokoll i shtreses Network kurse TCP eshte protokoll i shtreses se Transportit, e njejta gje ndodh dhe me protokolle te tjera psh IPX/SPX ku IPX eshte i shtreses 3 dhe SPX eshte i shtreses 4. Pra , qendrojn vertet shume afer njeri-tjetrit ne praktik aq sa nuk mund te gjendet nje protokoll i TCP-s nen nje protokoll tjeter perveç se IP e keshtu me radhe.. Ne te njejten kohe shtresa e Transportit eshte pergjegjese per krijimin e komunikimit nga nje proçes aplikativ ne nje proçes tjeter aplikativ qe po perdor rrjetin.
Nje fenomen qe ndodh ne kete shtrese te rrjetit eshte dhe ai qe quhet Konxhestion rrjeti , ndodh kur rrjeti eshte i tejngarkuar dhe fillon ti bej DROP4 paketave. Ky fenomen mund te evitohet duke aplikuar kontrollin e fluksit duke perfshire nje nga opcionet qe quhet “slow-start” me ane te se cilit fillon rikuperimi i segmenteve (jo datagram sepse kur themi datagram nuk suportohet ky opcion) duke ruajtur dhe bandwithin.
Shembujt e protokolleve te shtreses se Transportit
TCP , UDP , DCCP , SCTP , RSVP , ECN etj.