GNU/Linux-ஐ install செய்வது என்பது, ஒரு புதிய server அல்லது இணைதளத்தை (Website) உருவாக்குவதற்கான முதல் படி ஆகும். இவ்வாறு உருவக்கப்பட்ட server-ஐ முழுமையாகக் கையாளுவதற்கு networks-ன் அடிப்படைகளைப் பற்றிச் சிறிதளவாவது தெரிந்து கொள்ள வேண்டும். அதாவது ஒவ்வொரு கணிணியும் ஒரு server-ஐப் பெற்றிருக்கும். Networks என்பது ஒவ்வொரு server-ம் மற்ற server-களுடன் எவ்வாறு இணைக்கப்படுகின்றன என்பதை விளக்குகிறது. இங்கு OSI Network Model மற்றும் TCP/IP Network Model-ஐப் பற்றி விளக்கமாகக் காணலாம்.
OSI Network Model
Open System Interconnection என்பதே OSI என்றழைக்கப்படுகிறது. இந்த model-ஆனது International Organization for Standardization எனும் அமைப்பினால் உருவாக்கப்பட்டது. இது பல்வேறு வகையான மென்பொருள் அல்லது வன்பொருட்கள் எவ்வாறு தகவல்களைப் பரிமாறிக்கொள்கின்றன என்பதைத் தெளிவாக விளக்குகிறது. இவ்வாறு தகவல்களின் பரிமாற்றமானது 7 layers மூலம் நடைபெறுகிறது. தகவல் பரிமாற்றத்தின்போது ஒவ்வொரு layer-ம் தகவலின் தலைப்புச் செய்தியை (header information) உள்வாங்கி அடுத்த layer-க்குச் செல்ல வேண்டிய செய்திக்கு மட்டும் அனுமதியளிக்கிறது. இவ்வாறாக தகவல்களானது இந்த 7 layers மூலம் முறையான வகையில் அது செல்ல வேண்டிய இடத்தைச் சென்று அடைகிறது.
உதாரணத்துக்கு pen drive வெவ்வேறு வடிவில் வெவ்வேறு நிறத்தில் இருந்தாலும், அது கணிணியுடன் இணைக்கப்படும் இடமானது ஒரே மாதிரியாகத் தான் இருக்கும். அழகுக்காக வேண்டுமானால், pen drive-ன் இடப்புறம் வெவ்வேறு விதங்களில் காணப்படலாம். ஆனால் அது கணிணியுடன் செருகப்படும் இடம் இவ்வாறுதான் இருக்க வேண்டும் என்பதை OSI Model விளக்குகிறது.
இப்போது OSI Model-ல் உள்ள ஒவ்வொரு layer-ன் பெயர் மற்றும் செயல்பாட்டினையும் விளக்கமாகக் காணலாம்.
Physical layer: இது முதலாவதாக உள்ள layer ஆகும். இது வன்பொருட்களின் இணைப்பிற்காகப் பயன்படும் electrical மற்றும் physical wire-களின் இணைப்பு விவரங்களை வரையறுக்கிறது. (உ.ம்: Ethernet Cables)
Link layer : இது இரண்டாவதாக உள்ள layer ஆகும். இது நேரடியாக இணைக்கப்பட்டுள்ள இரண்டு devices-க்கு இடையில் தகவல் பரிமாற்றத்தின்போது ஏற்படும் பிழைகளைத் திருத்தப் பயன்படுகிறது. இந்த இணைப்பின் மூலம் கடத்தப்படும் தகவல்கள் frames என்றழைக்கப்படும். இந்த frames-ஆனது ஒழுங்குபடுத்தப்பட்ட முறையில் தகவல்களை அடுத்தடுத்த layer-க்கு கடத்திக்கொண்டு செல்லும். (உ.ம்: Ethernet, ARP)
Network layer: இது மூன்றாவதாக உள்ள layer ஆகும். இது நேரடியாக இணைக்கப்படாத தொடர்புகளுக்கிடையில்(links) தகவல்களைக் கொண்டு செல்லப் பயன்படுகிறது. இவை அடுத்த layer-க்கு வழங்கும் தகவல்கள் packets என்றழைக்கப்படுகின்றன. (உ.ம்: IP ARP)
Transport layer: இது நான்காவதாக உள்ள layer ஆகும். இது ஓர் இணைப்பினை உருவாக்குதல் மற்றும் நீக்குதல் போன்ற வேலைகளைச் செய்கிறது. மேலும் acknowledge செய்யப்படாத data-வை திருப்பி அனுப்புகிறது. தவறான வரிசையில் வருகின்ற ஒருசில packets-ஐ முறைப்படுத்தி அனுப்பும் வேலையையும் செய்கிறது. இதைப்பற்றி விரிவாக TCP/IP Protocol-ஐப் பற்றிய பகுதியில் காணலாம். இவை அடுத்த layer-க்கு வழங்கும் தகவல்கள் segments என்றழைக்கப்படுகின்றன.
Session layer: இது ஐந்தாவதாக உள்ள layer ஆகும். இது பல்வேறு இணைப்புகளின் இருபக்கத்திலும் உள்ள applications-ன் requests மற்றும் responses-ஐ நிர்வாகம் செய்கிறது.
Presentation layer: இது ஆறாவதாக உள்ள layer ஆகும். இது ஒரு வடிவில் உள்ள data-வை மற்றொரு வடிவத்திற்கு மாற்றுகிறது. உதாரணத்துக்கு Thunderbird-ல் இருந்து நாம் அனுப்பும் மின்னஞ்சலில் உள்ள எழுத்துக்களின் வடிவமானது, webmail-ல் open செய்யப்படும்போது SMTP mail formatted data-ஆக மாறியிருக்கும். (உ.ம்: sendmail)
Application layer: இது கடைசியாக ஏழாவதாக உள்ள layer ஆகும். இது ஒரு application-க்கு உருவாக்கப்படும் user interface-ஐ கவனித்துக் கொள்கிறது. (உ.ம்: Browser, Email client, Chat Client).
source : commons.wikimedia.org/wiki/File:Wwww2.jpg
TCP/IP Networking Model
TCP/IP என்பது network-ல் இணைந்த கருவிகளுக்கிடையில் ஒர் தொடர்பினை ஏற்படுத்த உதவும் protocols ஆகும். இது மிகப்பெரிய OSI Model-ன் ஒரு பகுதி ஆகும். இது தகவல் தொடர்பிற்கான வேலைகளைச் சிறப்பாக நடத்தி வருகிறது.
IP: Internet Protocol (IP) என்பது TCP/IP-ன் ஒரு பகுதி ஆகும். இந்த IP-ஆனது இரண்டு முகவரிகளுக்கிடையில் தகவல்கள் அனைத்தும் எந்தவொரு சேதாரமும் இல்லாமல் சென்றடையுமாறு செய்கிறது.
தகவல்களானது சிறுசிறு துண்டுகளாக packet வடிவில் தொலைவில் உள்ள கணிணிக்கு அனுப்பப்படும். Packet-ன் தலைப்பில் அதற்கென உருவாக்கப்பட்ட error detection bytes மற்றும் எந்த வகையான transportation mechanism பயன்படுத்தப்பட வேண்டும் எனும் விவரங்கள் இருக்கும். பொதுவாக TCP மற்றும் UDP எனும் இரண்டு வகையான transportation mechanism காணப்படும். இதில் ஏதேனும் ஒரு mechanism-ஆனது packet-ன் தலைப்பில் port எண் மூலம் குறிப்பிடப்படும். இதை வைத்துத்தான் தகவல்களைப் பெற்றுக் கொள்ளும் கணிணியானது, அதில் செயல்படும் எந்த network application-க்கு இந்தத் தகவல்கள் தேவைப்படுகின்றன என்பதைக் கண்டுபிடிக்கும்.
TCP: TCP என்பது connection oriented Protocol ஆகும். இது வெவ்வேறு கணிணிகளில் இயங்கிக் கொண்டிருக்கும் server மற்றும் client-க்கிடையில் ஒர் virtual இணைப்பை ஏற்படுத்துகிறது.
TCP-ஆனது இணைப்பில் செலுத்தப்படும் packet-களுக்கு முறையான வரிசை எண்களைக் கொடுக்கிறது. மேலும் packets ஒழுங்காக சென்றடைந்து விட்டனவா என்பதை உறுதிசெய்துகொள்ளும் வகையில் ஒவ்வொரு packet-வுடனும் ஒர் acknowledgement-ஐயும் சேர்த்து அனுப்புகிறது. மறுபக்கத்தில் உள்ள கணிணியானது packets-ஐப் பெற்றுக் கொண்டுவிட்ட பின்னர் அதனுடன் அனுப்பப்பட்ட acknowledgement-ஐத் திருப்பி அனுப்புவதன் மூலம் packets ஒழுங்காக வந்து சேர்ந்ததை உறுதியளிக்கிறது. இது பின்வருமாறு.
hostA -> hostB TCP 1443 > http [SYN] Seq=9766 Ack=0 Win=5840 Len=0
hostB -> hostA TCP http > 1443 [SYN, ACK] Seq=8404 Ack=9767 Win=5792 Len=0
hostA -> hostB TCP 1443 > http [ACK] Seq=9767 Ack=8405 Win=5840 Len=0
இங்கு முதன்முதலில் இணைப்பை ஏற்படுத்த விரும்பும் hostA எனும் server-ஆனது TCP-ன் தலைப்பில் SYN எனும் bit-ஐ வைத்து அனுப்புகிறது. இந்த இணைப்பிற்கு அனுமதியளிக்கும் வகையில் hostB எனும் client-ஆனது SYN-ACK எனும் bits-ஐ அனுப்புகிறது. கடைசியாக server-ஆனது ACK எனும் bit-ஐ அனுப்புவதன் மூலம் இணைப்பானது வெற்றிகரமாக உருவாக்கப்படுகிறது. இவ்வாறாக SYN, SYN-ACK, ACK எனும் mechanism மூலம் இணைப்பு உருவாக்கப்படும் விதத்திற்கு Three-way handshake என்று பெயர்.
இவ்வாறாக இணைப்பு உருவாக்கப்பட்டு விட்ட பின்னர் தகவல்கள் அனைத்தும் ACK bit-வுடன் சேர்த்து பரிமாறப்படும். இது பின்வருமாறு.
hostA -> hostB HTTP HEAD/HTTP/1.1
hostB -> hostA TCP http > 1443 [ACK] Seq=8405 Ack=9985 Win=54 Len=0
hostB -> hostA HTTP HTTP/1.1 200 OK
hostA -> hostB TCP 1443 > http [ACK] Seq=9985 Ack=8672 Win=6432 Len=0
கடைசியாக இணைப்பை நிறுத்த விரும்பும் server-ஆனது, மறுபக்கம் உள்ள server-க்கு FIN-ACK bit-ஐ அனுப்பும். அவ்வாறே மறுபக்கம் உள்ள server-ம் இணைப்பை நிறுத்த விரும்பினால், மீண்டும் அதே FIN-ACK bit-ஐயே அனுப்பும். கடைசியாக ACK bit-ஐ அனுப்புவதன் மூலம் இணைப்பை நிறுத்த விரும்பிய server-ஆனது வெற்றிகரமாக இணைப்பை நிறுத்திவிடும். இது பின்வருமாறு.
hostB -> hostA TCP http > 1443 [FIN, ACK] Seq=8672 Ack=9985 Win=54 Len=0
hostA -> hostB TCP 1443 > http [FIN, ACK] Seq=9985 Ack=8673 Win=6432 Len=0
hostB -> hostA TCP http > 1443 [ACK] Seq=8673 Ack=9986 Win=54
உதாரணத்துக்கு தொலைபேசியில் இருவர் பேசிக்கொள்வதை நாம் TCP இணைப்பாகக் கணக்கில் கொள்ளலாம். இதில் ஒருவர் சொல்லிய செய்தி மறுபக்கம் உள்ளவரைச் சென்றடைந்தவுடன், அவர் அதைப் பெற்றுக்கொண்டதற்கான உறுதியை அளிக்கிறார். இவ்வாறாக இருவரும் ஒருவருக்கொருவர் செய்தியை பரிமாறிக்கொண்டதை உறுதிபடுத்திக்கொண்டு தொலைபேசி இணைப்பை துண்டிக்கிறார்கள். இதுவே TCP இணைப்பிற்கு சிறந்த உதாரணம் ஆகும்.
UDP: UDP என்பது connectionless Protocol ஆகும். இதில் தகவல்கள் அனைத்தும் “best effort”-ன் அடிப்படையில் செலுத்தப்படுகின்றன. அதாவது மறுபக்கத்தில் உள்ள கணிணிக்கு தகவல்கள் சென்றுவிட்டதற்கான எந்தஒரு உறுதியும் இதில் காணப்படாது. எனவே கடினமாக இல்லாத தகவல்களை அனுப்புவதற்கு UDP பயன்படுத்தப்படும். மேலும் local-ஆக இணைக்கப்பட்டுள்ள network-ல்லிருக்கும் server-கள் அனைத்திலும் தகவல்களை பரப்புவதற்கும் பயன்படும். இதுபோன்ற இடங்களில் UDP-ஐப் பயன்படுத்துவதன் மூலம் TCP இணைப்புகளின் எண்ணிக்கையை கணிசமாகக் குறைக்கலாம்.
அதாவது FM-ல் ஒலிபரப்பப்படும் செய்திகளை நாம் UDP இணைப்பிற்கு உதாரணமாகக் கொள்ளலாம். FM-ல் ஒலிபரப்பப்படும் செய்திகள் பெரும்பான்மையான மக்களைச் சென்றடைகிறது. ஆனால் செய்திகள் சென்றடைந்து விட்டதற்கான உறுதியை FM-ஆனது ஒவ்வொரு மக்களிடமிருந்தும் பெற முடியாது. இவ்வாறக UDP இணைப்பின் செயல்பாடு அமையும்.
TCP மற்றும் UDP Ports: இணைப்பில் செலுத்தப்படும் ஒவ்வொரு packet-ம் TCP அல்லது UDP segments-ஐக் கொண்டிருக்கும் என்பது நாம் அறிந்ததே. இதில் TCP-ன் தலைப்பில் வரிசை எண்கள் காணப்படும். இதுபோன்ற வரிசை எண்கள் UDP-ன் தலைப்பில் காணப்படாது. ஆனால் TCP மற்றும் UDP இவை இரண்டின் தலைப்பிலும் எந்த port பயன்படுத்தப்பட்டுள்ளது எனும் விவரம் காணப்படும்.
ஒருசில ports ஒருசில programs-ஐக் குறிக்குமாறு உலகளவில் பயன்படுத்தப்படுகின்றன. இவை பின்வருமாறு.
Port 80 – இது http web server-ஐக் குறிக்கப் பயன்படுகிறது.
Port 25 – இது SMTP email server-ஐக் குறிக்கப் பயன்படுகிறது.
Port < 1024 – இவை privileged system servers -ஐக் குறிக்கப் பயன்படுகின்றன.
Port > 1024 – இவை non system third party applications-ஐக் குறிக்கப் பயன்படுகின்றன.
ஒரு client-ஆனது, server-இடமிருந்து தகவல்களைப் பெற விரும்பினால், அது பின்வருமாறு அமையும்.
client ஒருசில தகவல்களைக் கேட்டு server-க்கு request அனுப்ப விரும்பினால், 1024-க்கு மேல் இருக்கும் ஏதேனும் ஒரு port-ஐப் பயன்படுத்தும். மேலும் server-ஆனது ஒரு http application-ஆக இருக்கும் பட்சத்தில் port 80-க்கு செய்தியை அனுப்பும்.
Server-ஆனது port 80-க்கு வந்து சேர்ந்துள்ள http request-க்கு வேண்டிய தகவல்களை TCP மூலம் client port-க்கு அனுப்பி வைக்கிறது.
இறுதியாக client தான் அனுப்பி வைத்த request-க்கு, தனது port-ல் response வந்திருப்பதை அறிந்து தகவல்களைப் பெற்றுக் கொள்கிறது.
Time To Live: இணைப்பில் செலுத்தப்படும் ஒவ்வொரு packet-லும் TTL (Time to Live) எனும் பகுதி இருக்கும். இதில்தான் எத்தனை இணையதளக் கருவிகள் வழியாக இந்த packet அதன் destination-ஐ சென்றடைய உள்ளது எனும் விவரம் இருக்கும்.
அதாவது முதன்முதலில் இந்த packet அனுப்பப்படும் போது, இதன் TTL பகுதியில் ஓர் எண் மதிப்பு கொடுக்கப்படும். பின்னர் இந்த packet ஒவ்வொரு இணையதளக் கருவியின் வழியாகச் செல்லும்போதும் அந்த எண்மதிப்பு ஒவ்வொன்றாகக் குறைக்கப்படும். இறுதியில் எப்பொழுது TTL-ன் எண் மதிப்பு 0 என வருகிறதோ, அப்பொழுதுதான் அந்த packet பிரிக்கப்படும்.
இவ்வகையான வழிமுறையைப் பின்பற்றுவதன் மூலம் இணையதள நெரிசலில் ஏதேனும் ஓர் இடத்தில் நமது packet சிக்கிக்கொண்டு, சுழன்றுகொண்டே இருப்பதைத் தடுக்க முடியும்.
source : en.wikipedia.org/wiki/File:Internet_layering.svg
வலைதளத்தில் IP-ன் பங்கு
source: commons.wikimedia.org/wiki/File:Ipv4_address.svg
IP (Internet Protocol) என்பது வலைதளத்தில் நாம் விரும்பும் இடத்திற்கு நம்மை அழைத்துச்செல்ல உதவும் முகவரியைப் போன்றது. எனவேதான் இதனை IP Address என்று அழைக்கிறோம்.
வலைதளத்தில் இணைக்கப்பட்டுள்ள ஒவ்வொரு இணையதள அதிபரும் Internet Service Providers (ISPs) என்று அழைக்கப்படுவர். Internet Assigned Numbers Authority (IANA) எனும் நிறுவனமானது எந்த service provider-க்கு எந்த முகவரி வழங்க வேண்டும் எனும் விஷயத்தை தீர்மானிக்கிறது. அதாவது public networks-க்கு ஒரு வகையான IP முகவரிகளையும், private networks-க்கு வேறொரு வகையான IP முகவரிகளையும் வழங்குகிறது.
பொதுவாக IP முகவரி என்பது 32 bits-ஐ உள்ளடக்கியது. இந்த 32 bits-ம் நான்கு தனித்தனி 8 bits-ஆக இடையில் ஒரு புள்ளியின் மூலம் பிரிக்கப்படும். எனவே இதனை IPV4 முகவரி எனவும் அழைக்கலாம். இவ்வாறு பிரிக்கப்பட்ட நான்கு தனித்தனி 8 bits-ம் 0 முதல் 255 வரையிலான எண்களைக் கொண்டிருக்கும். இந்த எல்லைக்குள் அமைந்த எண்களின் அடிப்படையில் IPV4 முகவரியை ஐந்து classes-ஆகப் பிரிக்கலாம்.
அதாவது ஒரு IP முகவரியின் தொடக்க எண் ஆனது 0 முதல் 127 எனும் எண்ணின் எல்லைக்குள் அமைந்தால் அதனை class A எனவும், 128 – 191க்குள் அமைவது class B எனவும், 192 – 223 க்குள் அமைவது class C எனவும், 224 – 239 க்குள் அமைவது class D எனவும், இறுதியாக 240 – 255 வரை அமைவது class E எனவும் அழைக்கப்படும். இது பின்வருமாறு.
class A 0.0.0.0 – 127.255.255.255
class B 128.0.0.0 – 191.255.255.255
class C 192.0.0.0 – 223.255.255.255
class D 224.0.0.0 – 239.255.255.255
class E 240.0.0.0 – 255.255.255.255
உதாரணத்துக்கு 97.65.25.12 என்பது class A எல்லைக்குள் அமைந்த ஒரு முறையான IP முகவரி ஆகும்.
source: commons.wikimedia.org/wiki/File:CPT-Network-IPv4Classes.svg
மேலும் ஒருசில வரையறுக்கப்பட்ட IP முகவரிகளைப் பற்றி இங்கு விளக்கமாகக் காணலாம். பின்வரும் எல்லைக்குள் அமைந்த IP முகவரிகள் தனியார் வலைதளங்களுக்காக ஒதுக்கப்பட்டவை. இவை private IP addresses ஆகும்.
10.0.0.0 – 10.255.255.255
172.16.0.0 – 172.31.255.255
192.168.0.0 – 192.168.255.255
உதாரணத்துக்கு “ழ மென்னகம்” எனும் தனியார் மென்பொருள் நிறுவனத்தில் 50 கணிணிகள் உள்ளதெனில், அவற்றுக்கான IP முகவரிகள் 192.168.1.1 முதல் 192.168.1.50 வரை அமையும். 50-க்கும் மேற்பட்ட கணிணிகள் இந்த மென்பொருள் நிறுவனத்தில் சேரச் சேர அவற்றிற்கான IP முகவரிகள் 192.168.1.51 , 192.168.1.52 …… 192.168.1.255 வரை அமையும். அதாவது 1-255 வரையிலான எல்லைக்குள் அமைந்திருப்பதைக் காணலாம்.
இதற்கும் மேற்பட்ட கணிணிகள் இந்த மென்னகத்தில் சேரும் போது, அவற்றினுடைய IP எல்லைகள் 192.168.2.1 முதல் 192.168.2.255 வரை அமையும்.
அதாவது “ழ”மென்னகத்தில் 192.168.1.1 முதல் 192.168.1.255 வரை அமைந்த கணிணிகள் ஓரே network-ல் இணைந்தவையாகவும், 192.168.2.1 முதல் 192.168.2.255 வரை அமைந்த கணிணிகள் வேறொரு network-ல் இணைந்தவையாகவும் கருதப்படும்.
இவ்வாறாக ஒரே network-ல் இணைக்கப்பட்ட கணிணிகள் அனைத்தும் ஒன்றுடன் ஒன்று எந்தவிதப் புறக்கருவிகளின் உதவியும் இல்லாமல் தகவல்களைப் பரிமாறிக்கொள்ள வல்லவை. ஆனால் இரண்டு வெவ்வேறு network-குக்கிடையில் தகவல்கள் பரிமாறப்படும்போதுதான் ஒருசில புறக்கருவிகளின் உதவி தேவைப்படுகிறது. அதாவது முதல் network-ல் உள்ள 192.168.1.48 எனும் கணிணிக்கும், இரண்டாவது network-ல் உள்ள 192.168.2.48 எனும் கணிணிக்கும் இடையில் தகவல்கள் பரிமாறப்படும்போதுதான் Hub, Switches மற்றும் Routers போன்ற புறக்கருவிகளின் உதவி தேவைப்படுகிறது. இதைப்பற்றி விளக்கமாகப் பின்வரும் பகுதிகளில் காணலாம்.
— தொடரும்
து.நித்யா