More Categories

statistics

Theme images by Storman. Powered by Blogger.

Recent

Comment

Subscribe

Popular

Tweet's

Monday 13 July 2015

Linux Networking


இரண்டாம் வருடம் படிக்கும் பொழுது Networking பற்றிய பாடம் இருந்ததது அதில் உள்ள தகவல்கள் என்னவென்றே தெரியாமல் பயின்று தேர்வும் எழுதினேன் ஆனால் இன்றுதான் ஒரு நெட்வொர்க் என்றால் என்ன என்றும் அது எப்படி செயல்படுகின்றது என்றும் புரிந்த்துகொண்டேன் கணியம் இதழில் வெளியிடப்பட்டுள்ள நெட்வொர்கிங் பற்றிய அடிப்படிகளை கிழே கொடுத்துள்ளேன் நீங்களும் படித்து புர்ந்து கொள்ளுங்கள்.

OSI Network Model
Open System Interconnection என்பதே OSI என்றழைக்கப்படுகிறது. இந்த model-ஆனது International Organization for Standardization எனும் அமைப்பினால் உருவாக்கப்பட்டது. இது பல்வேறு வகையான மென்பொருள் அல்லது வன்பொருட்கள் எவ்வாறு தகவல்களைப் பரிமாறிக்கொள்கின்றன என்பதைத் தெளிவாக விளக்குகிறது. இவ்வாறு தகவல்களின் பரிமாற்றமானது 7 layers மூலம் நடைபெறுகிறது. தகவல் பரிமாற்றத்தின்போது ஒவ்வொரு layer-ம் தகவலின் தலைப்புச் செய்தியை (header information) உள்வாங்கி அடுத்த layer-க்குச் செல்ல வேண்டிய செய்திக்கு மட்டும் அனுமதியளிக்கிறது. இவ்வாறாக தகவல்களானது இந்த 7 layers மூலம் முறையான வகையில் அது செல்ல வேண்டிய இடத்தைச் சென்று அடைகிறது.
உதாரணத்துக்கு pen drive வெவ்வேறு வடிவில் வெவ்வேறு நிறத்தில் இருந்தாலும், அது கணிணியுடன் இணைக்கப்படும் இடமானது ஒரே மாதிரியாகத் தான் இருக்கும். அழகுக்காக வேண்டுமானால், pen drive-ன் இடப்புறம் வெவ்வேறு விதங்களில் காணப்படலாம். ஆனால் அது கணிணியுடன் செருகப்படும் இடம் இவ்வாறுதான் இருக்க வேண்டும் என்பது வரையறுக்கப் பட்டுள்ளது. இது போல Network ன் கூறுகளை OSI Model விளக்குகிறது.
இப்போது OSI Model-ல் உள்ள ஒவ்வொரு layer-ன் பெயர் மற்றும் செயல்பாட்டினையும் விளக்கமாகக் காணலாம்.
 File:Application Layer.png
File:Application Layer.png

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).
File:OSIModel.jpg
 File:OSIModel.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 இணைப்பிற்கு சிறந்த உதாரணம் ஆகும்.
File:Tcp normal.png

UDP: UDP என்பது connectionless Protocol ஆகும். இதில் தகவல்கள் அனைத்தும் “best effort”-ன் அடிப்படையில் செலுத்தப்படுகின்றன. அதாவது மறுபக்கத்தில் உள்ள கணிணிக்கு தகவல்கள் சென்றுவிட்டதற்கான எந்தஒரு உறுதியும் இதில் காணப்படாது. எனவே கடினமாக இல்லாத தகவல்களை அனுப்புவதற்கு UDP பயன்படுத்தப்படும். மேலும் local-ஆக இணைக்கப்பட்டுள்ள network-ல்லிருக்கும் server-கள் அனைத்திலும் தகவல்களை பரப்புவதற்கும் பயன்படும். இதுபோன்ற இடங்களில் UDP-ஐப் பயன்படுத்துவதன் மூலம் TCP இணைப்புகளின் எண்ணிக்கையை கணிசமாகக் குறைக்கலாம்.
அதாவது FM-ல் ஒலிபரப்பப்படும் செய்திகளை நாம் UDP இணைப்பிற்கு உதாரணமாகக் கொள்ளலாம். FM-ல் ஒலிபரப்பப்படும் செய்திகள் பெரும்பான்மையான மக்களைச் சென்றடைகிறது. ஆனால் செய்திகள் சென்றடைந்து விட்டதற்கான உறுதியை FM-ஆனது ஒவ்வொரு மக்களிடமிருந்தும் பெற முடியாது. இவ்வாறக UDP இணைப்பின் செயல்பாடு அமையும்.
https://yinyangit.files.wordpress.com/2011/06/tcp-versus-udp.jpg




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 சிக்கிக்கொண்டு, சுழன்றுகொண்டே இருப்பதைத் தடுக்க முடியும்.

இந்த TCP/IP பாக்கட்டுகளின் பயணத்தை Warriors of the Internet என்ற காணொளி நன்கு விளக்குகிறது.

ஆங்கிலத்தில் – http://www.warriorsofthe.net/






 தமிழில் –
இந்த காணொளியைத் தமிழில் மொழிமாற்றிய, கணியம் குழுவின் பிரியாவிற்கு நன்றி ( priyacst@gmail.com )

0 on: "Linux Networking"

Ads Inside Post