Monday, October 5, 2015

เครือข่ายคอมพิวเตอร์ (ตอนที่ 2 TCP/IP)

อินเทอร์เน็ต (the Internet) คือเครือข่ายของคอมพิวเตอร์ที่ใหญ่ที่สุดในโลก มีไว้ให้บริการต่างๆ เช่น ระบบ www, ระบบ email เป็นต้น
the Internet ได้รับการพัฒนาต่อจากงานวิจัยจากกระทรวงกลาโหมสหรัฐ ที่ต้องการระบบส่งข้อมูลที่เลือกเส้นทางที่ข้อมูลจะเดินทางได้เอง (เช่น จุดที่เป็น hub จุดใดถูกทำลาย ระบบจะสามารถดำเนินการต่อไปได้) ตามคำจำกัดความของ packet switching circuit
บริการที่ดังๆบน the Internet บนระบบปฎิบัติการยูนิกซ์ เป็นตัวจุดประกายให้เกิดการขยายตัวของ the Internet อย่างรวดเร็ว 3 บริการที่ดังๆได้แก่ telnet สามารถให้ผู้ใช้ login ไปยังเครื่องที่อยู่ที่ใดก็ได้บน the Internet (ตามสิทธิ์), ftp (File Transfer Protocol) สามารถให้ผู้ใช้ upload/download ไฟล์ข้ามเครื่องได้ (ตามสิทธิ์) และ ที่สำคัญที่สุด email ทำให้ผู้ใช้สามารถส่งข่าวสาร/เอกสาร ได้อย่างสะดวกและรวดเร็ว โดยเฉพาะ email นั้นทำให้หลายองค์กรเข้ามาเป็นส่วนหนึ่งของ the Internet
ต่อจากนี้เราจะกล่าวถึง the Internet ด้วยองค์ประกอบต่างๆของ

Internet Protocol Suite
เรากล่าวถึง Protocol ไปแล้ว ในกรณีของ the Internet นั้นมีการแบ่งงานกันตามหน้าที่ตามแบบ OSI โมเดล และ protocol ต่างๆมาประกอบกันจึงเรียกว่า suite (จากรูป) ในชั้นที่ 1 และ 2 นั้น คือส่วนที่เป็นฮาร์ดแวร์ เช่นเราเชื่อมต่อด้วย wifi  หรือเราเชื่อมต่อด้วย ADSL Modem หรือ Ethernet ทำหน้าที่จัดการรับส่งข้อมูลให้มีประสิทธิภาพเชิงกายภาพ เช่นการร้องขอใช้สื่อดังที่ได้กล่าวไปแล้ว
ส่วนสำคัญของ the Internet อยูในชั้นที่ 3 และ 4 โดยชั้น network นั้นมีหน้าที่สำหรับการจัดการด้านที่อยู่ของผู้ส่ง/ผู้รับ เราเรียก protocol ในชั้นนี้ว่า Internet Protocol (IP) ส่วนชั้น Transport นั้นมีหน้าที่สำหรับการแบ่งข้อมูลออกเป็นชิ้นย่อยๆ เพื่อให้การรับส่งมีประสิทธิภาพ และเพื่อให้เกิดสภาพเหมาะแก่การแบ่งกันใช้งานร่วมกัน เราเรียก protocol ในชั้นนี้ว่า Transmission Control Protocol (TCP)
ในชั้นที่ 5-7 นั้น บริการต่างๆนั้นได้รับการพัฒนาขึ้นมาตามแต่ผู้พัฒนา และเรียกรวมๆว่าชั้น Application (โดยหลักการก็มีการแบ่งบริการนั้นเป็นส่วนๆตามหน้าที่) เช่นบริการรับส่ง email จะอยู่บน TCP/IP อีกทีหนึ่ง

http://www.tcpipguide.com/free/diagrams/tcpiplayers.png
เปรียบเทียบ OSI Model กับ TCP/IP

http://web.cs.dal.ca/~grundke/1600/networks/netSlidesFiles/stack.gif
ในการรับส่งข้อมูลนั้นเครื่องที่เป็นทางผ่านของข้อมูลจะพิจารณาว่าหากตนไม่ใช่ผู้รับก็จะ
ไม่ส่งไปยังชั้น Transport แต่ส่งออกไปต่อทันที

Port และ Transmission Control Protocol (TCP)
หน้าที่แรกที่เราเรียนรู้จาก TCP คือการออกแบบลักษณะการทำงานให้แบ่งข้อมูลออกเป็นส่วนๆ ก็เพื่อให้เครื่องหลายเครื่องใช้สายส่งสัญญาณร่วมกัน กล่าวคือทุกเครื่องต่างพลัดกันส่งจนผู้ใช้รู้สืกไปว่าเครื่องของตนนั้นทำงานอยู่ตลอด นอกจากนั้นการแบ่งข้อมูลนั้นทำให้การสื่อสารมีต้นทุนการแก้ไขความผิดพลาดที่ถูกลง เพราะในกรณีที่เกิดความผิดพลาด (แม้แต่บิตเดียว) ก็จะส่งซ้ำเฉพาะส่วนที่เสียหาย (ซึ่งสามารถโยงไปถึงอัตราการใช้ช่องสัญญาณที่มีประสิทธิภาพมากขึ้น เพราะสามารถนำช่องสัญญาณไปส่งข้อมูลจริงได้มากขึ้น)
(จากภาพ) จากโครงสร้างของข้อมูล (ที่จะถูกแปะไปกับข้อมูลจริง) จะเห็นคำว่าพอร์ต (port) ซึ่งเป็นตัวเลขระบุถึงช่องทางการสื่อสารซึ่งมีความยาว 16 บิต (หากนึกภาพการเชื่อมต่อจากคอมพิวเตอร์ของเราไปยังเครื่องที่สื่อสารด้วยเป็นท่อ ก็เท่ากับเครื่องนั้นสามารถมีท่อได้ 65535 ท่อในเวลาเดียวกัน (มีการห้ามใช้ 1 เบอร์) และหากนึกภาพว่าหาก IP เราคือเลขที่บ้าน port คือหมายเลขห้อง) เราเรียกการเชื่อมต่อด้วย TCP/IP ว่า socket programming ซึ่งเราต้องระบุเลขพอร์ตที่เราต้องการติดต่อด้วย บริการมาตรฐานบน the Internet นั้นจะมีเบอร์พอร์ตมาตรฐานอยู่ เช่น email server ใช้พอร์ตหมายเลข 25 (หากจะส่ง email แต่ไปคุย SMTP ซึ่งเป็นโพรโตคอลสำหรับการส่ง email กับห้องอื่นทีให้บริการอื่น(port เลขอื่น) ก็จะคุยกันไม่รู้เรื่อง รูปด้านล่างแสดงถึงการติดต่อด้วย TCP นั้นต้องกำหนด port

https://kl2217.files.wordpress.com/2009/06/port.gif


(ศึกษาความหมายของหมายเลขพอร์ต ที่เป็นที่รู้จักได้ที่ https://en.wikipedia.org/wiki/List_of_TCP_and_UDP_port_numbers)
อนึ่ง TCP มีคู่แฝดคือ User Datagram Protocol (UDP) โดยข้อแตกต่างระหว่าง TCP กับ UDP คือ UDP นั้นผู้ส่งไม่สนใจว่าข้อมูล (packet) ที่ส่งไปถึงที่หมายเรียบร้อยหรือไม่ ส่วน TCP นั้นได้รับข้อมูลจากข้อมูล Acknowledgement Number ซึ่งไม่จำเป็นต้องเกิดจากข้อมูลมีความเสียหายอย่างเดียว กล่าวคือเนื่องจาก packet switching circuit ไม่จำกัด path ในการส่งข้อมูล ดังนั้นลำดับของข้อมูลที่ถึงปลายทางอาจไม่เป็นไปตามลำดับที่ส่ง

https://systemstechblog.files.wordpress.com/2011/02/tcpheader.jpg

จริงๆแล้ว TCP มีกลไกให้น่าศึกษามากมาย TCP นั้นได้รับการออกแบบมาให้ ยกตัวอย่างเช่นการปรับอัตราการส่งตามสภาวะของปริมาณข้อมูลบนสื่อ (อ่านเพิ่มเติมได้ที่ https://www.rfc-editor.org/info/rfc5681 RFC คือชื่อออกเอกสารทางเทคนิคประเภทหนึ่ง) (จากภาพ) พฤติกรรมของ TCP จะพยายามเร่งอัตราการส่งเพื่อใช้สมรรถนะของช่องสัญญาณอย่างเต็มที่จนกระทั่งส่งเร็วเกินไป (เจอ loss)  จากนั้นจึงปรับลงมาเพื่อเปลี่ยนโหมดเป็นค่อยๆขึ้นอย่างมีระเบียบ (พยายามส่งให้เร็วขึ้นอยู่ดี สังเกตุเส้นตรง)


http://www.cisco.com/c/dam/en/us/td/i/100001-200000/180001-190000/187001-188000/187575.eps/_jcr_content/renditions/187575.jpg
กล่าวโดยรวม TCP มีหน้าที่หลัก 4 ประการคือ  connection-oriented data stream support, reliability, flow control, และ multiplexing ซึ่งเรากล่าวถึง 3 ประการหลังไปแล้ว ความหมายของ connection oriented คือเป็น layer ที่รับรู้ถึงความเป็น end-to-end  communication ซึิ่งอธิบายย่อที่สุดด้วยการใช้การปฏิเสธว่า 3 ชั้นล่าง คือชั้น network, link, physical นั้นไม่รับทราบว่าเป็นข้อมูลของเครื่องไหนโปรแกรมไหน มองอีกแง่ว่ามันคือตัวเรียงข้อมูลกลับ ดังนั้นมันต้องเข้าใจภาพรวมของการสื่อสารที่มันทำให้อยู่

Internet Protocol (IP)
หากเปรียบกับระบบโทรศัพท์ IP ก็คือหมายเลขโทรศัพท์ของเครื่องเรา นั่นหมายถึงว่าเราสามารถเปลี่ยนเบอร์โทรได้ และสามารถเปลี่ยนตัวโทรศัพท์ก็ได้ ในทางปฏิบัตินั้นโทรศัพท์แต่ละเครื่องก็มีหมายเลขในซิม เพื่อให้ระบบสามารถระบุได้ว่าหมายเลขนี้อยู่ที่เครื่องไหน (IP นี้อยู่กับ NIC หมายเลขอะไร)
หากเปรียบ the Internet คือระบบโครงข่ายสำหรับการคมนาคม เครื่องแต่ละเครื่องก็คือบ้านแต่ละหลัง IP ก็คือบ้านเลขที่ (สาเหตุที่ข้อมูลสามารถเดินทาง(จากต้นทาง)ไปยังปลายทางได้
(จากภาพ) IPv4 นั้นมีขนาด 32 bit ดังนั้นมีค่าไม่ซ้ำได้ประมาณ 4 พันล้านค่า (มีบ้านที่มีเลขที่ได้ 4 พันล้านหลัง) ซึ่งไม่เพียงพอต่อจำนวนคอมพิวเตอร์ปัจจุบัน(ต่อให้ไม่รวมมือถือ)ที่อยู่ในระบบ สัญลักษณ์ /24 ที่ prefix notation จะกล่าวถึงในภายหลัง
ค่า 192.149.252.76 ก็คือการเขียนทีละ byte ของค่าของ IP ดังนั้นค่าแต่ละค่าจะมีค่าไม่เกิน 255

https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjw58Ii5q1bg9TC1oDIklMTZ4kKXt8S-qquTMKFbkxtcZOR_fRvwnqQTDVjT1-Iska6MGLedprMIZxjo1d4bepYnUjQDI9OyemLVCHxCyxva8cepgH_jM5n7kWiUo1hipQkzhbxxJQA8pI/s1600/IPv4-vs-IPv6-graphic.png

IPv6 นั้นได้รับการศึกษาและประกาศใช้ตั้งแต่ปี 1999 วัตถุประสงค์หลักก็เพื่อแก้ปัญหาไอพีขาดแคลนและเน้นไปที่การรักษาความปลอดภัย (เนื่องจาก IPv4 ไม่ได้ถูกออกแบบให้มีกลไกใดๆด้านนี้เลย) แต่การนำไปติดตั้งนั้นเป็นไปอย่างช้ามาก เนื่องจากจะมีการอ้างว่าองค์กรที่ใช้ฮาร์ดแวร์ที่เก่ามากจะไม่สามารถอยู่บนระบบนี้ได้ต่อไป
ในปี คศ. 2012 ได้มีการจัดการทดสอบการใช้งาน IPv6 กันทั่วโลก (อ่านแผนการดำเนินการเกี่ยวกับ IPv6 และความรู้เพิ่มเติมได้ที่ http://www.mict.go.th/assets/portals/1/files/IPV6/IPv6ActPlan_6.pdf) แต่การติดตั้งจริงก็ยังไม่ได้มีความคืบหน้าใดๆ
ข้อมูลเพิ่มเติมเกี่ยวกับ IPv6 แนะนำให้ไปอ่านเพิ่มเติมได้ที่ http://www.ipv6.nectec.or.th/faq.php

https://www.it.chula.ac.th/sites/default/files/faq/showip04.jpg
ที่แสดงข้อมูลว่าเครื่องของคุณมี IP ที่สามารถเชื่อมต่อ the Internet ได้

Network ID (subnetmask) และ Gateway
เท่าที่ผ่านมาเราเพิ่งมาถึงว่า IP คือ ID ของเครื่องใน the Internet แต่การที่จะทำงานบน the Internet นั้นต้องมีองค์ประกอบที่ขาดไม่ได้คือ subnet mask
(จากรูป) ตัวอย่าง หา IP 10.100.31.9 และระบุ subnet mask เป็น 255.0.0.0 เราสามารถระบุ network id ของเครื่องเราได้ นั่นก็คือจากการ bitwise AND กันจะได้ network id เป็น 10.0.0.0 (เรียกง่ายว่า net 10 หากใช้ subnet mask 255.255.0.0 ก็จะได้ 10.100 ก็เรียก net 10.100)
หัวข้อที่แล้วค้างไว้ว่า /24 หมายถึงอะไร /24 หมายถึงจำนวน บิต ของ subnet mask ดังนั้นจากรูปสามารถเขียนได้ว่า 10.100.31.9/8
โดยปกติให้ถือว่าจำนวนบิตที่เป็น 0 ใน subnet mask คือจำนวนเครื่องที่มีได้ใน network id นั้น กล่าวคือในกรณีนี้ องค์กรที่ใช้ net id = 10 นี้ จะมีเครื่องได้ 2^24 = 16.7 ล้านเครื่อง เรื่องนี้มี 2 ประเด็นที่จะขอชี้แจง
1. มีการแบ่งเป็น class ว่าองค์กรชนิดใดควรได้ network id คลาสใด (โดยใช้จำนวน bit 1 ของ subnet mask เป็นตัวกำหนด class)
2. แต่ละองค์กรสามารถไปทำ sub network ของตนเองได้
อย่างไรก็ดีปัจจุบันมักไม่ค่อยสนใจเรื่อง class และพิจารณา net id จาก subnet mask เลย

http://www.bloggang.com/data/likecisco/picture/1313070644.gif

หากจำนวน IP ทั้งหมดหมายถึงเลขที่บ้านในประเทศไทย สิ่งที่ต้องจัดการคือทำอย่างไรให้ router รู้จักบ้านทั้ง 4 พันล้านหลัง ดังนั้น network id จะช่วยให้มีการจัดกลุ่มของบ้าน เช่นบ้านในจังหวัดชลบุรี กับบ้านในจังหวัดตรัง และจังหวัดอื่นๆ ทำให้จำนวน IP ที่ router ต้องรู้จักลดลงไปอย่างมาก นอกจากนี้การส่งข้อมูลยังใช้หลักการ broadcast นั่นหมายถึงว่าเครื่องเครื่องหนึ่งจะส่งข้อมูลด้วยการประกาศให้ทุกเครื่องใน network id เดียวกัน หากไม่ใช่จึงจะส่งออกไปยังนอก network id  (นึกภาพหากไม่มี network id ทุกเครื่องใน 4 พันล้าน ต้องรอจังหวะส่ง)
ลำดับถัดมาที่ส่วนมากจะต้องมีคือ gateway (จากรูป) เครื่อง 10.1.1.2/24 กับเครื่อง 10.1.3.1/24 ถึอว่าอยู่คนละ network กัน การจะสื่อสารกันได้ต้องมี gateway (นึกภาพประตูเมืองกั้นแต่ละจังหวัดที่อยู่ติดกัน)


http://www.cisco.com/web/about/ac123/ac147/images/ipj/ipj_9-1/91_ip_fig_02_lg.jpg
(จากรูป) ดังนั้นโดยปกติเราจะเห็นการตั้งค่าอย่างน้อย 3 ค่า (IP, subnet mask, gateway) โดย gateway เองจะมี 2 IP โดย IP แรกคือฝั่งในจังหวัดเรา (ฝั่งที่เราจะระบุให้เป็น gateway) อีก IP จะรู้จัก network ข้างบ้าน (ปกติก็คือ IP ของผู้ให้บริการอินเทอร์เน็ตเรา) ในกรณีที่เราไม่มีค่า gateway เราก็จะสามารถส่งข้อมูลได้เฉพาะภายใน network id เดียวกัน
http://pad3.whstatic.com/images/thumb/d/dc/Change-your-IP-Address-(Windows)-Step-3Bullet3-Version-2.jpg/670px-Change-your-IP-Address-(Windows)-Step-3Bullet3-Version-2.jpg

เรามีคอมพิวเตอร์ที่สามารถจะสื่อสารกันไม่ว่าจะภายใน network เดียวกัน หรือข้ามเน็ตเวิร์คแล้ว หากใครติดตามอ่านมาจนถึงตรงนี้แล้วมีคำถามว่าผมเปิดเครื่องแล้วใช้ได้เลย ไม่ต้องตั้งค่าเหล่านี้ หรือถามว่าปัจจุบันในโลกนี้อย่างไรเสียต้องมีคอมพิวเตอร์บน the Internet มากกว่าสี่พันล้านเครื่องแน่ๆ เราจะตอบคำถามเหล่านั้นต่อจากนี้

Intranet
ในแต่ละเน็ตเวิร์คนั้นจะมี IP ที่มีความหมายในตัวอยู่แล้ว (ห้ามนำไปใช้) เช่น IP แรกจะหมายถึง network เองไม่ใช่เครื่องใดเครื่องหนึ่ง หรือ IP สุดท้ายจะใช้สำหรับการ broadcast ไปยังทุกเครื่องใน network
(จากรูป) 127.0.0.1 หมายถึงเครื่องนั้นๆเอง (loopback) นอกจากนี้ยังมี network ตามช่วงต่อไปนี้
Class A 10.0.0.0 - 10.255.255.255         (10.0.0.0/8)
Class B 172.16.0.0 - 172.31.255.255     (172.16.0.0/12)
Class C 192.168.0.0 - 192.168.255.255 (192.168.0.0/16)
RFC1918 กำหนดให้เป็น private network ซึ่งหมายถึงความว่าไม่ว่า source address หรือ destination address เหล่านี้ไปปรากฎบน the Internet ระบบจะทิ้ง packet เหล่านั้น เพราะถือว่าไม่รู้จักที่อยู่เหล่านี้
private IP (IP ในช่วง private network) มีประโยชน์ เช่น สมมติว่าโรงพยาบาลหนึ่งต้องการติดตั้งระบบสารสนเทศ โรงพยาบาลสามารถติดตั้ง TCP/IP โดยไม่ต้องไปขอ public IP จากหน่วยการที่กำกับเรื่องนี้เลย ความแตกต่างของ private IP กับ public IP อยู่ที่ locally unique กับ globally unique กล่าวคือ หาก IP นั้นไม่ซ้ำกับเครื่องใดเลยใน network เดียวกัน แต่อาจไปซ้ำกับเครื่องอื่นใน network อื่น (เช่นโรงเรียนอีกแห่งก็ใช้ network id เดียวกัน ...สอง network นี้ย่อมนำมาเชื่อมกันตรงๆไม่ได้) ในขณะที่ public IP จะไม่มีวันซ้ำกับเครื่องใดเลย
เรามักจะคุ้นกับ network 10 กับ network 192.168 (แต่จะเป็น 10.0.0.0/24 หรือ 192.168.0.0/24 เพราะมักไม่อยากยุ่งกับ sub network และมักมีลูกข่ายไม่เกิน 255 เครื่อง)
(อ่าน private network เพิ่มเติมโดยเฉพาะเรื่อง IPv6 ได้ที่ https://en.wikipedia.org/wiki/Private_network)


http://image.slidesharecdn.com/1-2tcp-ipbasics-110926054356-phpapp01/95/tcpip-basics-10-728.jpg?cb=1317016815

Network Address Translation (NAT) และ Dynamic Host Configuration Protocol (DHCP)
ในกรณีที่ private network ต้องการเชื่อมต่อเข้ากับ the Internet ด้วย ก็ได้มีการสร้างกลไก NAT เพิ่มขึ้นมา โดยจากที่ gateway มีหน้าที่เพียงส่งต่อข้อมูลออกไป (จากรูป) ก็ต้องกลายเป็น NAT ด้วยการเปลี่ยนที่อยู่ที่ระบุใน packet ให้เสมือนว่าตนเองเป็นเจ้าของ packet นั้น จะเห็นว่าโมเดลนี้จะเกิดปัญหาคอขวด (ขึ้นอยู่กับจำนวนเครื่องลูกข่ายหลัง NAT) และเป็นการลดจำนวน connection ของเครื่องลูกข่ายเพราะต้องนำมาแบ่งกับลูกข่ายเครื่องอื่นๆ โมเดลนี้ NAT จะมี public IP อยู่อีกฝั่ง (เช่นเราได้ public IP ที่ router ที่เราต่อเข้ากับผู้ให้บริการอินเทอร์เน็ต)

https://upload.wikimedia.org/wikibooks/en/6/63/Network_Address_Translation_(file2).jpg
(จากรูป) ส่วน DHCP ได้รับการออกแบบมาเพื่อแจก IP แบบอัตโนมัติ ทำให้ผู้ใช้เครื่องไม่ต้องมาเป็นธุระกับเรื่องนี้ ปัจจุบันแทบจะเป็นฟีเจอร์มาตรฐานไปแล้ว

http://www.ebrahma.com/wp-content/uploads/2013/06/DHCP-img.jpg

ต่อเนื่องกับเรื่อง private IP จากหัวข้อที่แล้ว หากเครื่องของเราใช้ private IP ย่อมเป็นไปไม่ได้ที่เราจะเป็นปลายทางของการติดต่อ เช่นเราจะเป็น web server ให้เครื่องอื่นนอก network เข้ามาเชื่อมต่อไม่ได้ (แต่ปัจจุบันก็มีเทคโนโลยีมาทำให้ได้เช่นกัน)

รูปด้านล่างแสดงวิวัฒนาการของ the Internet ก่อนจบบทความนี้

http://malonemediagroup.com/wp-content/uploads/2014/02/historyoftheinternet-timeline.png

ส่งท้าย 
เราได้ครอบคลุมกรอบการทำงานของ the Internet มาเกือบครบแล้ว เราทราบแล้วว่าข้อมูลที่ต้องการส่ง/รับ จะ

  • ถูกแบ่งเป็นส่วน
  • มีการแปลงเป็นสัญญาณทางไฟฟ้าตามสื่อที่เลือก (ตอนที่แล้ว)
  • มีการจัดการความเร็วการส่งข้อมูลในมิติของปริมาณการส่งตามสภาวะของสัญญาณอินเทอร์เน็ต
  • มีการจัดการเกี่ยวที่อยู่ของผู้รับและผู้ส่ง

เราทราบถึงหน้าที่ของ subnet mask ซึ่งเป็น parameter ตัวที่สองที่ต้องมีในการติดตั้ง TCP/IP network
เราครอบคลุมถึงหน้าที่ของ gateway, และ รู้จัก NAT และ DHCP
หวังว่าที่กล่าวมาจะพอให้เป็นพื้นฐานสำหรับผู้ที่สนใจเทคโนโลยีทางนี้ ขอยกตัวอย่างเช่นปัจจุบันมี VLAN ซึ่งทำให้ switch สามารถมาจัดการระดับ IP ได้

Copy Right สันธนะ(kmitl) 2015

9 Oct 2016

/* ตอนต่อไปคงเป็นเรื่อง Domain Name Server */


Tuesday, September 8, 2015

เครือข่ายคอมพิวเตอร์ (ตอนที่ 1 ภาพรวมและฮาร์ดแวร์ของเครือข่าย)

ตอนที่ 1 นี้ เพื่อให้การให้คำจำกัดความของเครือข่ายคอมพิวเตอร์ เราต้องเริ่มด้วย

Telecommunication 
ที่เราเรียกกันว่า telecom กันนั่นล่ะครับ มาจากคำว่า Tele (ระยะไกล (distance)) กับ Communication (การสื่อสาร) สาระมันก็อยู่ที่คำว่าการสื่อสารน่ะครับ ส่วนที่เราสนใจกับคำนี้ก็คือ มันประกอบไปด้วย 4 ส่วน คือ ผู้ส่งสาร ผู้รับสาร สื่อที่ใช้ และตัวสาร (บางแห่งแยกสื่อเป็น medium กับ channel) ประเด็นคือในทาง ICT นั้นเราเน้นเฉพาะส่วนสื่อที่ใช้
เช่น การส่งโดยใช้สาย หรือการส่งแบบไร้สาย ใช้เทคนิคไม่เหมือนกัน
หากพิจารณาพื้นฐานของ telecommunication จะแยกก่อนเลยว่าเป็นการส่งด้วยสถาปัตยกรรม circuit switching หรือ packet switching โดยที่ circuit switching มีมาก่อน และมีกลไกว่าเส้นทางของข้อมูล(สาร)ที่เดินทางจะใช้เส้นทางเดิมตลอดการสื่อสาร (นึกถึง circuit switching ให้นึกถึงโครงข่ายโทรศัพท์)
ส่วน packet switching นั้นกล่าวได้ว่ากำเนิดมาเพื่อส่งข้อมูลทางคอมพิวเตอร์ และจุดสำคัญก็ต้องเปรียบกับ circuit ว่าเส้นทางการเดินทางของข้อมูลแต่ละส่วนไม่จำเป็นต้องเหมือนกัน ...ปัจจุบันการสื่อสารสองระบบนี้มีข้อมูลวิ่งข้ามกันไปมา
นอกจากนี้การสื่อสารในระบบไร้สายนั้นมีมายาวนานมาก สิ่งที่ควรได้รับการกล่าวถึงไว้ ณ ตรงนี้คือคลื่นที่ใช้อากาศเป็นสื่อนั้น มีการแบ่งย่านความถี่ไว้สำหรับแต่ละอุตสาหกรรม เช่นย่านความถี่สำหรับ 3G ย่านความถี่สำหรับทีวีดิจิตอล
การสื่อสารแบบใช้สายกับไร้สายมีข้อดีข้อด้อยต่างกัน เช่น การใช้สื่อที่ไร้สายจะลดความยุ่งยากในการติดตั้ง หรือเหมาะกับพื้นที่ที่ห่างไกล แต่ก็จะประสบกับปัญหาคุณภาพสัญญาณที่ขึ้นกับระยะห่างระหว่างเครื่องรับกับอุปกรณ์รับ/ส่ง


http://vignette4.wikia.nocookie.net/itlaw/images/f/f1/Allocated_spectrum.png/revision/latest?cb=20120721041223
ตัวอย่างการจัดสรรคลื่นความถี่สากล

ชนิดของเครือข่ายคอมพิวเตอร์
ในยุคแรกเราแบ่งชนิดของเครือข่ายออกเป็น LAN (Local Area Network) และ WAN (Wide Area Network) จุดแบ่งของสองระบบนี้คือเทคนิคที่อุปกรณ์ทั้งสองกลุ่มใช้ในการส่งข้อมูลไม่เหมือนกัน 
LAN นั้น เราอาจนึกภาพว่าสำหรับเป็นโครงข่ายภายในตึก ...ซึ่งก็ถูกระดับหนึ่งเพราะตัวสายมักไม่ได้ออกแบบมาให้ทนแดดทนฝน อย่างไรก็ดี limit ของ LAN อยู่ที่ระยะส่งของแต่ละมาตรฐาน เช่น 100 ม. (และมากสุด ไม่เกิน 500 ม. สำหรับการเชื่อมต่อแบบขั้นสูง) โดยเงื่อนไขของระยะทางจริงๆคือเวลา กล่าวคือต้องได้รับการตอบรับ (response) ภายใน t มิลลิวินาที ไม่เช่นนั้นเราจะไม่ทราบได้ว่าจะรอถึงเมื่อไหร่ เครื่องใดมีสิทธิส่ง ณ เวลานี้ตามที่ตนได้ร้องขอ (request) ไป อนึ่งระยะไกลสุดนี้นับจาก 2 เครื่องที่ไกลที่สุดในเครือข่ายนี้
ปัจจุบัน เราสามารถหาเทคโนโลยีในกลุ่ม LAN ที่มีระยะส่งได้อย่างน้อย (เท่าที่เคยทราบตัวเลข) 2.5 กม.
ในยุคที่แบ่งเป็น LAN กับ WAN นั้น เรากล่าวว่าอะไรที่ไม่ใช่ LAN ก็คือ WAN เช่นในรั้วมหาวิทยาลัยนั้นเครื่องสองเครื่องอาจต้องคุยกันทาง WAN ก็ได้ นอกจากนี้ระบบที่เราใช้ เช่นการเปิดเว็บเพจ ซึ่งก็คือระบบอินเทอร์เน็ตนั่นเอง สองเครื่องนี้ย่อมมีส่วนของการสื่อสารที่เป็น WAN ตัวอย่างของเทคโนโลยีของ WAN ก็เช่นการสื่อสารผ่านดาวเทียม
ปัจจุบันมีการแบ่งชนิดของเครือข่ายให้ย่อยยิ่งขึ้น ตามลำดับระยะการสื่อสาร ได้แก่ PAN, LAN, MAN, WAN
PAN (Personal Area Network) คือเครือข่ายของอุปกรณ์อิเลคทรอนิกส์ที่มีระยะการสื่อสารในระดับ 10 ม. (ตามทฤษฎี ซึ่งควรจะน้อยกว่านี้ไหม) ตัวอย่างเครือข่าย PAN เช่น เมาส์ไร้สาย, ลำโพงไร้สาย ปัจจุบันจะมีอุปกรณ์มากมายแลกเปลี่ยนข้อมูลกันในยุค IoT (Internet of Things)
ส่วน MAN (Metropolitan Area Network) นั้นได้รับการออกแบบมาเติมช่องว่างระหว่าง LAN กับ WAN โดยเท่าที่ทราบเป็นการสื่อสารแบบไร้สาย เพื่อความสะดวกในการึ้นระบบที่ไม่ต้องติดตั้งอุปกรณ์อะไรมาก เทคโนโลยีนี้จะมีระยะความครอบคลุมการให้บริการในระดับเมือง (ระดับกิโลเมตร จนถึงหลายกิโลเมตร)
http://www.soi.wide.ad.jp/class/20070044/slides/04/24.html
(จากรูป) ตัวอย่างของเทคโนโลยีสำหรับ WAN คือ 3G
สำหรับ MAN คือ WiMAX (802.16) สำหรับ LAN คือ WiFi (802.11)
สำหรับ PAN ได้แก่ bluetooth, UWB (Ultra Wide Band) และ RFID


http://image.slidesharecdn.com/chapter10-100909120343-phpapp01/95/chapter10-18-728.jpg?cb=1284033895
ตัวอย่าง bandwidth ชนิดของสาย และ ระยะทำการของของมาตรฐานต่างของ Ethernet

ฮาร์ดแวร์สำหรับการติดตั้งเครือข่าย 
การที่คอมพิวเตอร์จะรับ/ส่งข้อมูลได้ จะต้องมีส่วนที่ทำหน้าที่ดังกล่าว (เช่น การ์ดแลน (แบบแลน) โมเด็มADSL (แบบแวน)) และเรียกรวมๆว่า Network Interface Controller (NIC) ในกรณีของแลนนั้นมักหมายถึงเครื่องคอมพิวเตอร์มากกว่า 2 เครื่องแบ่งกันใช้สายสัญญาณ(สายแลน)ผ่านอุปกรณ์ที่เรียกว่า สวิตช์ (switch) (นึกภาพสายทองแดงมีจุดเชื่อมต่อออกเป็นโครงข่าย) (ที่กล่าวถึงประเด็นมากกว่าสองเครื่องเพราะในทางเทคนิคเครื่องสองเครื่องนั้นเราสามารถต่อให้สื่อสารกันได้เลย) และเราเรียกอุปกรณ์ที่เทียบเท่า switch สำหรับ wifi ว่า access point
เรานับกลุ่มของคอมพิวเตอร์ที่สามารถสื่อสารกันได้ว่าเครือข่าย (network) ประเด็นคือการสื่อสารข้ามเครือข่ายต่างหากที่ผู้ใช้มักต้องการ เราเรียกการสื่อสารนั้นว่าการสื่อสารระหว่างเครือข่าย (internetworking  (จริงๆคำนี้ต้องถือว่ามีมาก่อน) เพื่อไม่ให้ซ้ำกับ the Internet)
การสื่อสารข้ามเครือข่ายต้องมีอุปกรณ์เพื่อการทำ packet switching โดยทั่วไปเราเรียกอุปกรณ์กลุ่มนี้ว่า เราต์เทอร์ (router ตัวเลือกเส้นทาง)


http://www.conceptdraw.com/examples/drawing-local-network
(จากรูป) router คืออุปกรณ์ที่เชื่อมเน็ตเวิร์คต่างๆเข้าด้วยกัน องค์กรหนึ่งๆอาจมีเน็ตเวิร์คมากกว่าหนึ่งก็ได้ เนื่องจาก router ต้องเชื่อมต่อหลายเน็ตเวิร์ค เรากล่าวว่า router ต่อมีหลาย interface เช่น ขาหนึ่งต่อ the Internet อีกขาหนึ่งต่อเข้ากับเน็ตเวิร์คขององค์กร ในกรณีที่ switch มีจำนวน port ไม่พอ เราสามารถขยายจำนวน port ด้วยการ stack switch ได้ เครื่องอาจติดต่อกันผ่านสายหรือแบบไร้สายก็ได้

โพรโตคอล (protocol)
Protocol (พิธีการ) หมายถึงระเบียบ, ข้อตกลงในการสื่อสาร เพื่อให้การสื่อสารดำเนินไปอย่างสัมฤทธ์ผล (นึกภาพคนสองชาติคุยกันสองภาษา ก็จะคุยกันไม่รู้เรื่อง หรือนึกภาพว่าหากข้อตกลงคือต้องเคาะประตูก่อนเริ่มการสนทนา ไม่มีการคุยโดยคุยข้ามประตู หากฝ่ายหนึ่งไม่ทำตามข้อตกลงการสื่อสารย่อมล้มเหลว) สิ่งที่เกิดขึ้นจริงในระดับการใช้งานนั้นไม่ได้ซับซ้อนเลย เช่น http (HyperText Transfer Protocol) ที่เราใช้ดูหน้าเว็บเพจนั้น มีคำสั่งมาตรฐานจำนวนหนึ่ง (กล่าวคือคุยด้วยคำสั่งอื่น ปลายทางย่อมไม่รู้จัก ไม่เข้าใจ) เช่น GET, HEAD, PUT, POST, DELETE, LINK และ UNLINK  (รายละเอียดเพิ่มเติมเกี่ยวกับ ตัวอย่าง protocol http ดูได้ที่ http://papa.det.uvigo.es/~theiere/cursos/Curso_WWW/codes.html) ดังนั้นโปรแกรมเราต้องส่งคำว่าคำสั่งไปยังเครื่องปลายทางก่อน เพื่อให้ทราบสิ่งที่ต้องการจะทำ และระบุหน้า html ที่ต้องการ หรือค่าที่ต้องการส่ง ในลำดับถัดไป
http://www.opensourceforu.efytimes.com/wp-content/uploads/2011/01/figure-1-Normal-client-server-communication-for-302-redirect.png
ตัวอย่างลำดับการส่ง/รับข้อมูล เพื่อขอดูหน้า web page


http://www.msexchange.org/upl/img10290814942302.gif

จากรูปประกอบข้างต้น บรรทัดที่เป็นตัวเลขคือข้อความที่ server ตอบสนองเมื่อได้รับคำสั่งต่างๆจาก client

ในระดับ LAN นั้น Ethernet เป็น protocol ที่ควบคุมการทำงานของการ์ดแลน ส่วนตัวแล้วผมรู้สึกว่าเราควรสามารถใช้คำว่ามาตรฐานแทน protocol ได้ (แต่ใช้ทัพศัพท์ไปเลยก็น่าจะชัดเจนที่สุด) ตระกูลของ Ethernet protocol คือ IEEE802.3 (ดูวิวัฒนาการและ bandwidth ที่จะมาในอนาคตที่ https://en.wikipedia.org/wiki/IEEE_802.3) ส่วน wifi นั้นคือตระกูล IEEE802.11 (ดูวิวัฒนาการและ bandwidth ที่จะมาในอนาคตที่
https://en.wikipedia.org/wiki/IEEE_802.11)



http://pic.youmobile.org/imgcdn/1130539120.jpg
(จากรูป) ตัวอย่างคุณสมบัติของมาตรฐาน WiFi


http://www.androidauthority.com/wp-content/uploads/2012/04/4G_LTE_WEB_en.jpg
(จากรูป) วิวัฒนาการของเทคโนโลยีการส่งข้อมูลด้วยโครงข่ายโทรศัพท์เคลื่อนที่

ส่วนหนึ่งของ protocol สำหรับ ethernet กล่าวถึงกลไกสำหรับแต่ละเครื่องในเครือข่ายสำหรับการส่งข้อมูลที่เป็นที่รู้จักกันคือ Carrier Sense Multiple Access with Collision Detection (CSMA/CD) ซึ่งกล่าวถึงการจองสายส่งสัญญาณ (นึกภาพว่าเครื่องแต่ละเครื่องคือคนในห้องเรียน เครื่องสองเครื่องคุยพร้อมกัน คนสองคนคุยพร้อมกัน คนอื่่นจะฟังไม่รู้เรื่อง ดังนั้นต้องมีกลไกในการร้องขอสิทธิที่หากเครื่องนั้นส่งสัญญาณออกไปแล้ว (ภายในเวลา t คนสุดท้ายต้องได้ยิน มิเช่นนั้นหากเขาร้องขอสิทธิบ้างจะสัญญาณจะชนกัน)) นั่นก็คือหากมีการส่งสัญญาณพร้อมกันการชนกันของสัญญาณจะเกิดขึ้น (ได้ยินหลายเสียงปนกัน ไม่มีใครฟังอะไรรู้เรื่อง) ในทางตรงกันข้ามหากทุกเครื่องไม่ส่งสัญญาณขณะที่สองเครื่องมีการสื่อสาร ก็จะไม่เกิดสัญญาณขยะ

ในขณะที่ส่วนหนึ่งของ protocol สำหรับ wifi จะกล่าวถึง Carrier Sense Multiple Access with Collision Avoidance (CSMA/CA) ซึ่งกล่าวถึงการที่สัญญาณในอากาศชนกันเป็นเรื่องที่ detect ไม่ได้ ดังนั้นจึงต้องออกแบบมาให้หลีกเลี่ยงการชนกันแทน


http://itech.fgcu.edu/faculty/zalewski/CNT4104/lecture12/comm0219.jpg


http://img.tomshardware.com/de/2003/04/02/grundlagen_drahtlose_netzwerke_teil_2/mac2.gif

จากรูป รูปบน (CSMA/CD) ผู้ส่งสามารถรับรู้ได้ทันทีว่ามีการชน รูปล่าง (CSMA/CA) ทุกเครื่องจะหลีกเลี่ยงการชนกันของสัญญาณด้วยการร้องขอ (RTS) ก่อน หากไม่มีการชน (ส่ง RTS สำเร็จ) จะได้รับ CTS กลับมา


แม้ว่าจากที่กล่าวมานั้น เรายังไม่สามารถทำให้เครื่องคอมพิวเตอร์มากกว่าสองเครื่องสื่อสารกันได้อย่างจริงจัง ผู้เขียนขอกล่าวถึงซอฟท์แวร์สำหรับการจัดการเครือข่ายคอมพิวเตอร์ที่หลายคนอาจเคยได้ใช้งานอยู่บ้าง ได้แก่ ในกรณีที่ลูกข่ายทั้งหมดใช้ระบบปฏิบัติการวินโดวส์ก็คือ neighborhood ใน windows กล่าวคือ หากเราติดตั้งระบบเน็ตเวิร์คบนแลน เราสามารถแชร์เครื่องพิมพ์ แชร์ไฟล์ได้ ที่ยกตัวอย่างมานี้ก็เพื่อแสดงให้เห็นภาพว่าการวางทรัพยาการทางเครือข่ายเพียงอย่างเดียวยังไม่สามารถทำให้คอมพิวเตอร์สื่อสารกันได้ ต้องมีซอฟต์แวร์ในระดับที่สูงกว่านั้นมาจัดการต่อ

http://www.oxhow.com/wp-content/uploads/windows-7-network.gif
windows explorer สามารถแสดงทรัพยากรที่มีการแบ่งปันกันในระบบ

ส่งท้าย
บทนี้กล่าวถึงโยงภาพรวมของการสื่อสารมาสู่การให้คอมพิวเตอร์ตั้งแต่สองเครื่องสามารถสื่อสารกันได้ อันที่จริงในระดับฮาร์ดแวร์ และ(เทคโนโลยี)ของสื่อที่ใช้ ยังไม่เพียงพอสำหรับการสื่อสารข้อมูล แม้ว่าในระดับฮาร์ดแวร์จะมีส่วนที่เป็นซอฟต์แวร์อยู่ด้วย(ขอให้มองว่ามันคือ driver ของอุปกรณ์รับ/ส่งสัญญาณ) แต่ส่วนซอฟต์แวร์ที่เป็นหัวใจจริงๆจะกล่าวถึงในลำดับถัดไป โดยเราเรียกกลไกเพื่อการสนับสนุนให้การดำเนินการสื่อสารข้อมูลเป็นไปอย่างมีประสิทธิภาพว่า protocol

Copy Right สันธนะ(kmitl) 2015

9 Oct 2016
/* for later edition */

Key Terms

circuit switching
packet switching

/* put router and switch image in comments */






Sunday, August 30, 2015

เครือข่ายคอมพิวเตอร์ (ตอนที่ 3 เมื่อไหร่จะลาจาก Web2.0)

ต่อจากตอนที่แล้ว (และตอนนี้จะไม่ลงทางเทคนิคเท่าไหร่)

Domain Name Server (DNS) และ Uniform Resource Locator (URL)
คือกลไกในการแปลงชื่อเครื่องให้เป็น IP
ในยุคแรกมีการแบ่งชื่อ top-level domain เป็นชื่อประเทศ เช่น .th (Thailand), .us (USA), .tv(Tulalu), .fm (Federated States of Micronesia) (ทั้งสองประเทศเป็นประเทศหมู่เกาะในแปซิฟิค)  กับ 5 ชื่อได้แก่ .com, .org, .edu, .mil, และ .gov
เหตุที่ top-level แรกมี 5 ชื่อนั้นเข้าใจว่าเป็นเพราะหน่วยงานที่ใช้งานยุคแรกมีเฉพาะ .mil (ผู้ออกเงินพัฒนา) .gov (เจ้านายของ .mil) .edu (มหาวิทยาลัย ผู้พัฒนาและเป็นหน่วยงานแรกๆที่ใช้งาน the Internet) เมื่อภาคธุรกิจเห็นประโยชน์และพากันเข้าไปใน the Internet จึงแยกเป็น .com (commercial = แสวงหากำไร) และ .org (organization = ไม่แสดงหาผลกำไร) .net นั้นตามมาติดๆทีหลัง โดยเริ่มแรกเน้นองค์กรเพื่อเผยแพร่ความรู้เกี่ยวกับ the Internet (ปัจจุบันก็ยังมีภาพของการไม่แสวงหาผลกำไร โดย .org จะเน้นไปทางมูลนิธิ)
ดังนั้นไม่ว่าองค์กรใดก็ต้องเลือกว่าจะไปอยู่ใต้ top-level domain ไหน เช่น ประเทศไทยก็นำมาแบ่งเป็น .ac (academic) .co (company(?)) .go (government) ก่อนที่องค์กรใดๆจะมาจดทะเบียน
กลไกการแปลงเป็น IP นั้นจะอ่านจากขวามาซ้าย เช่น www.kmitl.ac.th นั้นระบบจะหาว่าใครมีข้อมูลของ .th ซึ่งจะรู้ว่าใครมี .ac.th ซึ่ง kmitl ไปจดทะเบียนไว้ ก็จะมาค้นหาที่เครื่อง(ตามที่) kmitl.ac.th ประกาศไว้ว่า www.kmitl.ac.th นั้น IP คืออะไร
จะได้เห็นว่าอาจเป็นกระบวนการที่ใช้เวลา (แต่ก็สะดวกว่าจำ IP ของทุกเครื่อง)
ใครๆก็อยากมีชื่อที่จำง่ายทำให้เกิดปรากฎการณ์รายชื่อบน .com นั้นยาวมากๆ ทำให้มีความพยายามจะเปิด top-level เพิ่มขึ้น อีกทั้งอนึ่งชื่อเหล่านี้สามารถซื้อขายได้ (ตัวอย่างข่าว เมื่อ ค.ศ. 2008 http://www.cnet.com/news/pizza-com-domain-name-fetches-millions/) หรือนำไปสู่การฟ้องร้องได้ (ตัวอย่างข่าว เมื่อ ค.ศ. 2000 http://www.ecommercetimes.com/story/4560.html) เพื่อให้ผู้ที่ต้องการใช้ชื่อหนึ่งๆมีตัวเลือก top-level มากขึ้น แต่ก็ไม่ค่อยได้รับความนิยม สาเหตุเนื่องจากประชาคม internet ไม่คุ้นเคยกับชื่อ top-level เหล่านั้น
เมื่อไม่นานมานี้มีอีกความพยายามหนึ่งจากเหตุผลว่าเพื่อเปิดโอกาสให้ทุกคนบนโลกมีโอกาสใช้ the Internet มากยิ่งขึ้น จึงเปิดโอกาสให้จดทะเบียนในภาษาท้องถิ่นได้ เช่น .ไทย
(รายชื่อ top-level domain name สามารถดูได้ที่ https://en.wikipedia.org/wiki/List_of_Internet_top-level_domains)
ปัญหาคือ top-level ที่เปิดใหม่นี้ต้องมี server เป็นของตนเอง และ DNS หลายตัวอาจไม่รู้จัก ทำให้เครื่องอาจหา IP ไม่เจอ ยิ่งเป็นการซ้ำเติมให้การเชิญชวนให้จดทะเบียนชื่อนอก top-level ที่มีในยุคแรกประสบปัญหามากขึ้นไปอีก

URL คือมาตรฐานในการระบุถีงทรัพยากรที่เราต้องการเรียกใช้ (จากภาพ) เราสามารถใช้อธิบายว่าทำไมข้อความในภาพถึงเทียบเท่ากับ www.asteron.hycurve.com
หากเราไม่ระบุ protocol ค่า default จะเป็น http (สาเหตุที่จะไป https:// ต้องพิมพ์เอง)
หากเราไม่ระบุ port ค่า default จะเป็น 80 (สาเหตุที่บาง URL จะมีเลขแปลกแล้วแต่ผู้ดูแล web site ปลายทาง)
หากเราไม่ระบุ path ค่า default จะเป็น home directory ที่ web server นั้นจัดไว้ให้ (กรณีนี้แปลว่าไฟล์ที่ต้องการอยู่ใน sub folder ชื่อ internet
หากเราไม่ระบุ ชื่อไฟล์ ค่า default ส่วนมากจะเป็น index.html (หากเป็นชื่ออื่นต้องระบุ)
อนึ่งให้สังเกตุว่า hycurve ไปจดทะเบียนกับ .com ไว้ และ(โดยธรรมเนียม)ถือว่า asteron เป็นหน่วยงานย่อย โดย(ธรรมเนียม)คำหลังจุดแรก (www) จะเป็นชื่อเครื่อง

http://www.seopearl.com/internet-web-technologies/module4/images/partsurl_mo_main.gif
กลไก DNS เป็นอีกตัวอย่างหนึ่งเทคนิคสำหรับการแยกระบบ กล่าวคือ หาก IP สามารถเอื้อให้เจ้าของ IP เปลี่ยน hardware interface สำหรับอุปกรณ์ network ได้ DNS ก็ทำให้ผู้ดูแล server สามารถเปลี่ยน IP ได้เช่นกัน (และในทำนองคล้ายๆกัน เวลารัฐบาลจะแสดงจอเขียวๆ ก็ไปเปลี่ยน IP ปลายทางของ site นั้น (เก็บ IP ไว้ด้วยก็จบ ...ฮา))

รูปด้านล่างคือรูปแบบใหม่ๆของ URL

Source: Various



/* later edition */

https://en.wikipedia.org/wiki/Shortest_path_problem

http://cs.anu.edu.au/~Alistair.Rendell/Teaching/apac_comp3600/module4/all_pairs_shortest_paths.xhtml