[ Welcome | Crossroad | Humanae | Computer stuff ]

My Computer world!

Document Contents:

Unix

DNS

sed

C / C++

Socket

Java

Oracle

My business


My work



How
java logo
Dilbert

Unix

.
[ Top ]

DNS

(From Tele2's homepage)

RFC 1912 - Vanliga fel vid DNS konfiguration.

Domain Name Service

Domain Name Service, eller DNS, är namnuppslagningsfunktionen på Internet. Funktionen och syftet är framförallt att konvertera mellan "Internet-namn" och IP adresser på datorer på Internet. Via DNS styr man också hur post och annan trafik på Internet ska färdas genom olika typer av sk. pekare.

Hur fungerar DNS?

DNS är en distribuerad databas med adressinformation, dvs. det fungerar som ett stort uppslagsverk av adresser, både numeriska och alfabetiska.

Hela DNS systemet är uppbyggit i ett hierarkaiskt system. En Internet-adress (domän adress) läses från höger till vänster när man går från rooten mot den mer specificerade delen av domänet.

Överst i hierarkin, som toppdomän, ligger oftast en landsdomän, t.ex .se. I själva verket finns det ett domän ovanför .se som endast heter '.'. Det är det världsomspännande toppdomänet. Under denna ligger alla vanliga toppdomäner, som .se, .dk, uk, .com, .net etc.

Varje domän har sin nameserver. För toppdomänen .se fungerar en dator på SUNET som nameserver. Den innehåller information om alla domän i Sverige - var de finns och vad de innehåller.

I de allra flesta fall är dock domänen i Sverige utdelegerade. Det vore väldigt resurskrävande om en enda dator i hela Sverige skulle innehålla all information om alla datorer kopplade till Internet i Sverige.

Under domänen .se ligger de övriga domänen, som swipnet.se, tele2.se, kth.se osv. Det är denna typ av domän man kan registrera i Sverige, dvs. en domän under toppdomänet .se.

För att kunna hantera domänet man registrerat, t.ex swipnet.se, måste information om domänet - eller snarare vad domänet innehåller, läggas upp på en nameserver. Denna information kan bestå i att man talar om vilken dator som kan svara på frågor om domänet - vilken dator som fungerar som nameserver för domänet. Man informerar också om vilken eller vilka datorer som tar hand om post till domänet (eller delar av domänet, subdomäner).

Annan information som kan ligga upplagd i en nameserver är olika typer av alias. En dator kan ju hantera flera saker, t.ex vara nameserver, WWW-server och ftp-server samtidigt. Oftast har datorn ett specifikt namn, men via olika typer av alias kan man knyta flera namn till samma dator.

När ett domän utdelegeras innebär det kort och gott att man i den centrala nameservern, t.ex nameservern för .se, talar om vilken dator som kan ge mer information - vilken dator man ska fråga om adresser etc., för ett specifikt domän. T.ex är domänet swipnet.se utdelegerat från SUNET till vår nameserver. Vår nameserver innehåller all information om alla våra datorer. I den centrala nameservern på SUNET finns bara ett fåtal rader som talar om att frågor om vårt domän, swipnet.se, ska ställas till just vår dator istället för till SUNET's.

Vill man sedan göra subdomäner med separata nameservers i en delegerad domän går det också bra. Man talar helt enkelt om i det delegerade domänets nameserver att information om det specifika subdomänet kan fås från just den dator som utsetts till nameserver för subdomänet.

Den del av ett domän som hanteras av en nameserver kallas för en zon. Dvs. den del av domänet swipnet.se som hanteras av vår centrala nameserver är en zon. Eventuella utdeligerade subdomäner av swipnet.se som hanteras av andra nameservers är andra zoner, som ligger i zonen för swipnet.se

Det finns två typer av nameservers, primära och sekundära. En primär nameserver är den nameserver där informationen om domänet läggs upp och uppdateras. En sekundär nameserver är en annan nameserver som innehåller en kopia av den primära nameserverns information.

Både en primär och en sekundär nameserver får svara på frågor om ett domän, och båda har lika stor vikt. Hanteringen av en sekundär nameserver är i stort sett automatisk. Man behöver i princip bara tala om för den nameserver som ska agera sekundär nameserver till ett domän att den ska vara sekundär nameserver, så kommer den automatiskt att uppdatera och kontrollera innehållet i det domän som den agerar sekundär nameserver till.

Den främsta orsaken till att man ställer upp en sekundär nameserver är att det alltid ska finnas någon som kan besvara frågor om domänet. Om något händer med den primära nameservern, eller med förbindelsen till den primära nameservern, skall man ändå kunna få information om domänet.

Normalt brukar den sekundära nameservern därför befinna sig på en helt annan plats, gärna i ett annat nätverk, än den primära nameservern. T.ex brukar många operatörer, t.ex Tele2, ställa upp som sekundär nameserver till kunddomäner.



Vad innehåller DNS?

Själva DNS databasen består oftast av ett antal olika filer med ett antal olika records och annan information inlagd. De vanligaste av dessa är:

SOA - Ansvarig för zonen
NS - Nameserver för domänet
A - Namn till adress
PTR - Adress till namn
CNAME - Namnalias
MX - Brevadresser


SOA record

SOA recorden talar om vem som är ansvarig för domänet, dvs. den innhåller information om vilken dator som är primär nameserver för domänet, vem som administrerar denna dator, hur aktuella uppgifter är osv. Ett SOA record kan se ut såhär:

swipnet.se. IN SOA nic.swip.net. hostmaster.nic.swip.net. (
1995040900 ; serial
28800 ; refresh (8 hours)
7200 ; retry (2 hours)
604800 ; expire (7 days)
86400 ) ; minimum (1 day)


De olika uppgifterna stom stå tolkas i tur och ordning:

swipnet.se. - Domänet som vi administrerar

IN SOA - Talar om att detta är en SOA record

nic.swip.net. - Datorn som administrerar domänet, dvs. nameservern för swipnet.se

hostmaster.nic.swip.net (- Personen (e-mail adressen) till den som ansvarar för nameservern, hostmaster@nic.swip.net. Observera börjanparentesen efter adressen. Den indikerar start på de övriga parametrarna som har med olika giltighetstider att göra.

1995040900 är serienummret, som skall räknas upp varje gång den minsta ändring görs i innehållet i databasen. Denna används framförallt av sekondära nameservers för att kontrollera om just deras innehåll är aktuellt eller om några ändringar gjorts. Om en sekundär nameserver upptäcker att serienummret på den information den sekundera nameservern har är lägre än det serienummer som den primära nameservern har, uppdaterar den sekundära nameservern automatiskt all information från den primära nameservern. En vanlig teknik att hålla reda på serienummret är att skriva in dagens datum med en sista versionräknare. Det serienummer som fanns i vår SOA-record ovan talar om att den senaste ändringen gjordes 1995-04-09. 00 på slutet är en indexräknare ifall vi skulle göra flera ändringar under samma dag.

28800, Refresh, talar om hur ofta sekundära nameservers till vårt domän ska jämföra serienummer mot varandra och göra eventuella uppdateringar. En sekundär nameserver innehåller normalt en exakt överförd kopia av den primära nameserverns databaser. Denna siffra anges i sekunder.

7200, Retry, är antalet sekunder den sekundära nameservern ska vänta innan den gör ett nytt försök att jämföra serienummer, om den första jämförelsen misslyckades.

604800, Expire, talar om när den sekundära nameservern ska sluta svara på frågor om domänet om den inte fått kontakt med den primära nameservern. Dvs. det är ett mått på hur gammal den sekundära nameserverns information maximalt får vara innan den upphör att besvara frågor.

86400 ), Time to live, anger hur länge man får behålla (cacha) svaret från just denna nameserver, dvs. eventuell information som fås från nameservern får bara behållas och användas i 1 dygn innan man måste fråga nameservern igen för att få ny aktuell information. Slutparentesen indikerar slutet på SOA recorden.

NS record NS pekaren talar om vilkend ator som är nameserver för ett domän, dvs. vilken nameserver som innehåller information om datorer och namn i ett domän. Man talar om primär och sekundär nameserver på samma sätt. Eftersom både primär och sekundär nameserver innehåller exakt samma information har de samma vikt och samma rätt att svara på frågor om domänet.

När man delegerar ett domän, sker detta genom att man talar om vilken dator som är nameserver för just det domänet. Man kan också delegera delar av domän - subdomän - på samma sätt. Här följer några exempel på NS records:

acme.se. IN NS server.acme.se.
IN NS nic.operator.net.
sales.acme.se. IN NS mrbean.sales.acme.se.


Den sista NS recorden, för sales.acme.se är en utdeligering av ett subdomän. Subdomänet sales i domänet acme.se hanteras av nameservern mrbean.sales.acme.se. Nameservern för acmse.se, server.acme.se vet ingenting om subdomänet och de datorer som finns där, annat än att mrbean.sales.acme.se kan svara på frågor om domänet.

Här ser vi också ett typiskt exempel på en sekundär nameserver. nic.operator.net fungerar antagligen som sekundär nameserver för domänet acme.se. Vi antar detta eftersom nic.operator.net tillhör ett annat domän än acme.se, nämligen ett domän i toppdomänet .net (vilket brukar indikera någon form av nätoperatör). Vi antar således att server.acme.se är primär nameserver för domänet acme.se och att nic.operator.net är acme.se's nätoperatörs nameserver som agerar som sekundär nameserver. Men det är egentligen ointressant att veta vilken dator som är primär och vilken som är sekunder. För oss som frågar om information om acme.se har båda datorerna lika stor vikt - det spelar ingen roll om vi frågar server.acme.se eller om vi frågar nic.operator.net.

A record

A record, eller A pekaren är till för att konvertera mellan namn och IP adresser på datorer kopplade mot Internet. Alla datorer som sitter fast kopplade mot Internet måste ha en egen unik IP adress. Det är denna adress som används i TCP/IP paketen för att skicka paketen till rätt dator. Men eftersom vi människor med vår begränsade förmåga kan ha lite problem att komma ihåg alla dessa nummer, och istället gärna vill sätta namn på allting, finns det en funktion i nameservern för att konvertera mellan nummer och namn.

coffee.acme.se. IN A 193.100.110.71
server.acme.se. IN A 192.100.110.2
mrbean.sales.acme.se. IN A 192.100.111.2


CNAME record

CNAME fungerar ungefär som ett alias, dvs. det är ett sätt att sätta flera namn på en och samma dator. CNAME ska inte peka mot andra CNAME och det får heller inte finnas någon annan typ av record, t.ex en A record, för ett CNAME. Dvs. definierar man upp ftp.swip.net som ett CNAME får det inte också finnas ett A record för ftp.swip.net. Däremot måste det naturligtvis finnas ett A record för den dator som ftp.swip.net är CNAME för.

ftp.acme.se. IN CNAME coffee.acme.se.
www.acme.se. IN CNAME coffee.acme.se.


I det här exemplet har datorn coffee.acme.se två CNAME, ett för ftp och ett för www. Man skulle således kunna tänka sig att coffee.acme.se fungerar som både ftp-server och www-server hos acme.se. Om den sen verkligen gör det beror på programvaran som körs i datorn, men nameservern innehåller iaf. lämpliga CNAME för just dessa funktioner.

Vi rekommenderar inte användandet av CNAME i nameservers

PTR record

En mycket viktig del av nameserverns funktion är baklängesuppslagningen, dvs. att kunna gå från en IP adress till ett namn. Det finns ett speciellt domän (världsdomän) som innehåller alla IP adresser. PTR fungerar på rakt motsatt sätt mot A record. Information om varje dator ska därför finnas som både A record och PTR record för att full baklänges och framlängesuppslagning ska kunna ske.

72.110.100.197.in-addr.arpa. IN PTR coffee.acme.se.
2.110.100.192.in-addr.arpa. IN PTR server.acme.se.


Här ser vi att datorn coffee.acme.se ligger i domänet acme.se men också i domänet in-addr.arpa (PTR recorden). Således kan man säga att en normal nameserver egentligen har hand om två domäner (zoner). Dels hanterar nameservern domänet man registrerat och använder sig av, t.ex acme.se, dels hanterar nameservern den del av domänet in-addr.arpa som innehåller PTR records för alla datorer i domänet acme.se.

MX record

Mx record, eller Mx pekaren talar om vart post till ett domän eller del av domän ska leveraras. Mx står för Mail exchange. Man kan ha flera Mx pekare för ett domän, men dessa anges då med olika vikt så att man på så sätt kan få en rangordning vilka datorer som ska ta hand om posten. Posten ska alltid leveras till den datorn som har den lägsta vikten, men om den av någon anledning inte svarar, är det bra om det finns en eller flera backupdatorer som kan ta hand om och lagra posten tillfälligt tills dess att den centrala maildatorn åter kommer igång. Sådana backupdatorer kallas ibland för relay-hosts.

acme.se. IN MX 10 server.acme.se.
IN MX 20 mail.operator.net.


I det här fallet är server.acme.se den centrala maildatorn för domänet acme.se. Men om den datorn av någon anledning inte svarar skall posten istället gå till datorn mail.operator.net, som i det här fallet fungerar som en relay-host (backupdator).

[ Top ]

sed

The editor ed

sed originates from the UNIX editor ed.
In ed you address a line by; a line number, a symbol, a position in the file or a regular expression.
For instance you can go to line 8 simply by entering:
8
This is line 8

Entering "8" makes line 8 the current line, and it will be displayed. In the above example line 8 contained the text "This is line 8".

If you enter the delete-command "d" the current line will be deleted. Even if line 8 is not the current line the command:
8d

will delete line 8.

Lets work with a file called "text" containing:
line 1
This is NOT line 8
line 3 and even more text
line 4 line 4 line 4
text row 5
This is row number 6
and this is number 7
This is line 8
End Of File

Regular expression

Instead of addressing a line with it's line number we can use a regular expression. If line 8 looks like:
This is line 8
and we enter the command
/line 8/d

that would delete the next line from current position containing the text "line 8". NOTE! Only one line is deleted even if there is a number of lines containing the same text ("line 8").
If we prefix the command with "g" (global):
g/line 8/d

Every line containing the text "line 8" would be deleted.

The substitution command in ed look like:
[address]s/pattern/replacement/flag
E.g:
s/line/row/

In ed the above command would replace only the first occurance of "line" with "row" on the current line. To replace all occurances on the line we would use:
s/line/row/g

If we want to go - from current position - to the line where the text "line 8" first occurs, and on that line replace the text "line" with "row":
/line 8/s/line/row/

First comes "/line 8/" telling ed to address a line containing that text. After that "s/" meaning "substitute" "line" with "row". Only the first line from current position is affected and only the first occurance of the text on that line will be replaced.

If we want all occurances of the text on the line to be replaced:
/line 8/s/line/row/g

If we want all occurances on all lines to be replaced:
g/line/s/line/row/g

The first "g" addresses all lines in the file containing the text "line". The last "g" will replace all occurances - on each line addressed by the previous "g/line" address - of the text "line" with "row".
If the [address] text and the pattern to be replaced is the same we can issue the command:
g/line/s//row/g

sed

sed is stream-oriented but not ed. So the command:
sed -e 's/line/row/' text
would replace the first occurance of the text "line" with "row" on all rows in the file.

And
sed -e 's/line/row/g' text
would replace all occurances of the text "line" with "row" on all rows in the file.

The command:
sed -e '/line/s/line/row/g' text
would do the same thing. Even if we have both "addressing" and "substitute" the result will be the same.

And also:
sed -e '/line/s//row/g' text
would do the same thing, since both "addressing" and "substitute" are the same (s//).

But:
sed -e '/line 8/s/line/row/g' text
would only look for lines with the text "line 8", address them, and then replace the text "line" on those lines.

In sed we use addressing to limit the number of lines to work with, but in ed it is used to extend the number of lines to work with.

In the above example it is possible to omitt the citation marks ('), but then we need something to hold the string "line 8" together.
sed -e /"line 8"/s/line/row/g text

or
sed -e /"line 8"/s/line/row/g text

To use shell or environment variables e.g. V1 and V2 in search and replacement strings:

sed "s/$V1/$V2/" file1 >file1.out

The same result from:
sed 's/'$V1'/'$V2'/' file1 >file1.out

The e option

-e option is only needed when more than one instructions are used.
sed -e 's/line/row/g' -e 's/row/LINE/g' -e 's/LINE/line/g' text

The same thing can be done using semicolon:
sed -e 's/line/row/g; s/row/LINE/g; s/LINE/line/g' text

Yet another way is to use multi-line:
sed -e 's/line/row/g
s/row/LINE/g
s/LINE/line/g' text

The n option

The -n option suppresses the default output.

The following command would give NO output at all:
# sed -n 's/line/row/g' text

Together with the p option this will output those lines that are modified:
# sed -n 's/line/row/gp' text

And here all the modified lins will be written to the file "out":
# sed -n 's/line/row/gw out' text



[ Top ]

C / C++

If you have an HP-UX 9000 machine you either have to buy the "real" C-compiler or install GNU C. GNU C is in many ways a better C-compiler than HP's, and it's free. I have installed GNU C the hard way by compiling the source code, and the easy way by installing a pre-compiled "depot" file.

At JAL's place you can find how to set up Gnu C on Solaris.
[ Top ]

BSD & Windows Sockets

Socket Source Code

You can download Source code to Steven's UNIX Network Programming from here (copressed tar file) or from ftp.uu.net
[ Top ]

Various related documents & links

(Some links may not work, sorry.) Programming the BSD Socket interface
Internet Programming - an interactive knowledgebase
/~maurer/r.g/client.pl
/~mansour/ATM/ref.html
Network Programming with Java
Unix-socket-FAQ for network programming
JAVA factory
Davin's collections of unix programming links
University of South Carolina, Windows NT Network Programming
University of South Carolina, Windows NT Network Programming
University of South Carolina, Windows NT Network Programming
University of South Carolina, Windows NT Network Programming
List of FreeHEP packages
Python Mailing List 1995 Q1: Re: Questions on socket programming
Sockets Programming Example
MudOS LPC Sockets Tutorial
/mud/MudOS-doc/concepts/socket_efuns.html
Stardust Technologies' WinSock Resource Center, along with their FTP site. www.stroud.com Windows Sockets
Reading from and Writing to a Socket
/~jp/articles/computer/unix/jfsocket.txt
BSD Sockets: A Quick And Dirty Primer

My business NYCO

Nygren Consult Since 1980.
[ Top ]

Java

Referat från partnerträffen med Sun

Tisdagen den 23 september 1997. Syftet var att informera om ny intressant teknik och om vad ett partnerskap innebär. Eftermiddagen var uppdelad i fem block:
  • Java & Network Computing
  • Internet Associate Program
  • Nyheter - Hårdvara
  • Nyheter - Mjukvara
  • Sammanfattning och avrundning
Nedan ges en kort sammanfattning av det viktigaste som sades om de olika områdena. Avslutningsvis ges ett försök till att se vilken nytta som vi kan ha av ett samarbetet med Sun.

Java & Network Computing

Det här området är något som Sun satsar hårt på. Via Network Computing vill Sun komma bort från det traditionella tänkandet där var och en har en maskin där det mesta lagras lokalt. Man hävdar att ”The network is the computer” och ser istället en tunn klient, NC (Network Computer), som endast är utrustad med det nödvändigaste och hämtar program och information när det behövs. I detta avseende är Java banbrytande, det öppnar oanade möjligheter utan att bryta de strukturer som redan finns utan kompletterar istället dessa. För att leva som man lär så är ca 30% (90 st) av Suns interna applikationer skrivna i Java och dessa körs på omkring 3000 NC:s, javastations.

NC innebär:
  • Sänkta investerings- och driftskostnader.
  • Enkel installation och uppstart.

Java innebär:
  • Plattformsval vid nyinvesteringar blir inte längre strategiskt.
  • Transaktionsbegrepp på webben möjligt.
  • Central administration och kontroll, en version av varje programvara.
  • Komponentbaserad utveckling via JavaBeans. För standardprogram ca 80% direkt och 20% egen utveckling.
  • Säkert, även efter nedladdning.
En ny version av Suns NC är på gång och väntas någon gång i november. Den kommer att kunna köra Windows (emulering) och hämta program-komponenter allt efter behov. Vad gäller Java så pågår f.n. en standardisering som gäller själva språket, Java Virtual Machine och Java Referens Library. Samtidigt försöker Sun få bort focuseringen på klientsidan och lägger istället mer tyngd på server, mainframe och minisystem, allt för att göra Java så brett som möjligt. Inom Java och Network Computing ligger USA ca 6 mån före Europa och det finns ett antal större system i drift, bl a refererades ett system för godstransport över hela USA där det gick att följa varje kolli i realtid.

Internet Associate Program

Internet Associate Program, IAP, är ett slags nätverk som består av företag som certifieras av Sun. IAP består av tre typer av företag: återförsäljare, programleverantörer och systemintegratörer. För att bli certifierad måste varje företag genomgå en utbildning som syftar till att säkerställa företagets kvalitét. Dessutom måste en strategiplan för det kommande året upprättas och godkännas av Sun. Under året måste sedan försäljning av internet-baserade lösningar/tjäntser komma igång enligt planen. Syftet med IAP är att företag ska samverka istället för att konkurrera.

Fördelar för medlemmar i IAP, säljaren:
  • Tillgång till den senaste informationen.
  • Tillgång till Sun’s experter vid problem med deras produkter.
  • Marknadsföring både i Sverige och utomlands via Sun.
  • Samarbete kring Sun’s kunder.
  • Kontakt med andra i IAP.
  • Rabatter på produkter och arrangemang.
Fördelar för kunden, köparen:
  • Garanti för att de företag som kunden samarbetar med håller en hög kvalité.
  • Tillgång till en databas med information om alla IAP-företag.

Nyheter - Hårdvara

Här presenterades några nya modeller av både arbetsstationer och servermaskiner. Förutom förbättringar av processorer och minne, så kommer alla nya maskiner att ha bussar av PCI-typ istället för av Sbus-typ. Det intressantaste tillskottet är Ultra Enterprise 450, vilket är en server som är jämförbar med en NT-server. Det intressanta är något som kallas totalNET, vilket innebär att den med Solaris 2.6 installerat kan emulera såväl en NT-server som en Mac-server, och vid t ex reparationer helt transparent ersätta den trasiga servern. Priset är i klass med NT, inte bara för maskinen utan Sun har även lyckats få de större databas-tillverkarna att sätta samma pris som för NT (En databas kostar vanligen 4-10 ggr så mycket gentemot NT).

Nyheter - Mjukvara

På mjukvarusidan presenterades nyheter i form av bl a Solaris 2.6 samt två utvecklingsverktyg för Java. Den nya versionen av Solaris innehåller några intressanta saker:
  • Webbaserad installation och dokumentation
  • TotalNET, vilket gör att en server kan emulera såväl NT som Mac.
Övriga nyheter på mjukvarusidan var två utvecklingsmiljöer för Java. Java Studio & Java Workshop

Java Studio

En utvecklingsmiljö som är tänkt för ‘dummies’ där färdiga komponenter i form av Java Beans sätts ihop till enklare applikationer. Är användbar även för att snabbt ta fram en demo eller testa olika idéer.

Java Workshop

En professionell utvecklingsmiljö som gentemot Java Studio innehåller fler hjälpmedel och bättre stöd för att hantera stora projekt.

Sammanfattning

Det blir dock intressant att se hur det går för Ultra Enterprise 450 gentemot NT:n.

Det specifika område som jag direkt ser där vi kan utnyttja Java är i web-applikationer som utför komplexa operationer och behöver ett bättre transaktionsbegrepp än det som finns på webben idag (cookies mm). Bristen på ett riktigt transaktionsbegrepp har bl a uteslutit vissa designmöjligheter i PostNet OnLine. En generell Java-modul som inför ett transaktionsbegrepp vore intressant att ha i verktygslådan. När det gäller IAP så är det intressant och vi uppfyller redan flertalet av kraven som ställs. Mer information om IAP finns på Suns hemsida.

More info about Java can be found at Sun.
[ Top ]