Document Contents:
Unix
DNS
sed
C / C++
Socket
Java
Oracle
My business
 My work

|
|
.
[ Top ]
(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 ]
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 ]
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 ]
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
Nygren Consult Since 1980.
[ Top ]
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 ]
|