สมัครเรียนโทร. 085-350-7540 , 084-88-00-255 , ntprintf@gmail.com

Web Programming

ASP.NET ต่างกับ ASP อย่างไร JavaScript - HelloWorld npm - Intro AngularJS - HelloWorld VueJS - HelloWorld webpack - Intro ASP.NET - HelloWorld Flask - HelloWorld Web Server คืออะไร API คืออะไร Maven - HelloWorld Nancy - HelloWorld Protocol คืออะไร วิธีติดตั้ง Web Server บน Ubuntu วิธีติดตั้ง PrestaShop with PHP 8 (ใช้ Amazon Lightsail) วิธีติดตั้ง XAMPP บน Ubuntu 22.04 วิธีติดตั้ง WordPress บน XAMPP บน Ubuntu 22.04 React - Simple Web App - People Counter React - Simple Web App - People Counter 2 React - Web App - Dictionary React - Web App - Multiple Pages React - Web App - Multiple Pages with APIs React - Web App - Calculator React - Web App - Smart Parking วิธีสร้าง AWS EC2 instance สร้าง Web Application โดยใช้ Django และ Deploy บน AWS EC2 React - Create and Run React Application React - Web App - SpO2 Tracker วิธีติดตั้งและใช้งาน CKEditor 5 Introduction to JSON JSON Full Form: JavaScript Object Notation History of JSON JSON vs XML Structure of JSON JSON Data Types JSON Objects Explained JSON Arrays Explained Key-Value Pairs in JSON JSON String Data Type JSON Number Data Type JSON Boolean Data Type JSON Null Data Type Nested JSON Objects JSON in APIs JSON Schema Overview How to Write JSON JSON File Extensions (.json) JSON Syntax Rules JSON Parsing in JavaScript JSON Stringify in JavaScript How to Use JSON.parse() How to Use JSON.stringify() Escaping Characters in JSON JSON Comments (and why they are not allowed) JSON in Web Development Sending JSON Data with HTTP Requests Receiving JSON Responses in APIs REST APIs and JSON JSON in AJAX Requests Working with JSON in Node.js How to Read a JSON File Saving Data in JSON Format How to Validate JSON JSONLint for Validation JSON Pretty Print JSON Minification JSON vs YAML JSON and JavaScript Compatibility JSON and Python Integration Working with JSON in Python (json module) JSON in Java (Jackson and GSON) JSON in C++ (RapidJSON and nlohmann/json) JSON in C# (Json.NET) JSON in PHP (json_encode and json_decode) How to Fetch JSON Data from APIs Fetching JSON in Python (requests module) Fetching JSON in JavaScript (fetch API) Fetching JSON in jQuery JSON Serialization JSON Deserialization JSON Data Interchange Common Errors in JSON Syntax Handling Large JSON Files Streaming JSON Data JSON Pagination Techniques JSON as a Configuration Format JSON in Cloud Storage JSON and MongoDB BSON vs JSON in MongoDB JSON Web Tokens (JWT) Security Considerations with JSON Cross-Origin Resource Sharing (CORS) and JSON JSON Schema Validation Creating a JSON Schema Required Fields in JSON Schema JSON Schema Property Types JSON Schema Examples Benefits of JSON Schema JSONPath: Querying JSON Data JSON Data Transformation Comparing Two JSON Objects Sorting JSON Data Flattening JSON Structures JSON Merge Techniques JSON in NoSQL Databases JSON in Relational Databases Storing JSON in MySQL JSON Functions in MySQL JSON Functions in PostgreSQL JSON Functions in SQL Server JSON and Elasticsearch Advantages of Using JSON Limitations of JSON JSON and GraphQL JSONP (JSON with Padding) JSON and Local Storage in Browsers JSON and Cookies JSON and Session Storage Importing and Exporting JSON Nested vs Flattened JSON Structures JSON Best Practices Debugging JSON Errors JSON Performance Optimization Real-Time Data with JSON Microservices and JSON JSON Versioning JSON in IoT Applications JSON for Data Exchange in Mobile Apps The Future of JSON Introduction to XML XML Full Form: eXtensible Markup Language History of XML XML vs HTML XML vs JSON Structure of XML XML Syntax Rules XML Elements Explained XML Attributes Explained XML Tags XML Prolog XML Declaration XML Namespaces XML Data Types XML Comments XML Empty Elements XML Well-Formed Documents XML Valid Documents XML DTD (Document Type Definition) XML Schema Definition (XSD) XML vs XSD XML vs DTD XML Namespaces Best Practices XML Parsers XML DOM (Document Object Model) SAX Parser in XML XML Parsing in Java XML Parsing in Python XML Parsing in C# XML Parsing in JavaScript XML with PHP How to Read XML Files How to Write XML Files How to Validate XML XML Formatting and Pretty Print XML Minification XML Tree Structure XML as a Data Interchange Format XML in Web Services SOAP and XML REST vs SOAP (XML in APIs) XML in AJAX XMLHTTPRequest in JavaScript XML in Mobile Applications How to Transform XML with XSLT XSLT for Formatting XML XPath Overview XPath Syntax XPath Expressions and Queries XML Query Languages XQuery Overview XLink for XML Linking XPointer for XML Fragment Identification XML for Configuration Files Storing XML in Databases XML in MySQL XML in PostgreSQL XML in SQL Server XML in Oracle Database XML Indexing XML Data Modeling XML and SOAP Faults XML Encryption XML Digital Signatures Security Best Practices for XML XML Schema Elements XML Schema Attributes XML Schema Validation XML Schema Restrictions and Extensions XML Schema Choice and Sequence Benefits of Using XML Limitations of XML XML in Big Data XML and NoSQL Databases XML for IoT Applications XML in E-commerce Systems XML for Document Storage XML for Multimedia Content XML in Content Management Systems XML and Microservices XML and Cloud Computing XML for RSS Feeds Atom and XML Feeds XML in Office Document Formats (DOCX, XLSX) XML and SVG (Scalable Vector Graphics) XML for Vector Graphics XML Compression Techniques XML with WebSockets XML in Real-Time Applications JSON vs XML Performance XML and CORS (Cross-Origin Resource Sharing) XML for API Design Common XML Parsing Errors Debugging XML Converting XML to JSON Converting JSON to XML XML Best Practices XML Versioning XML and GraphQL The Future of XML

A25_WhatIs04_Protocol

หลังจากที่เราได้ทดลองทำโปรเจกต์ Hello World ผ่านสิ่งต่างๆไปมากมายแล้ว หากใครเริ่มศึกษาเรื่อง Web Programming ก็น่าจะเคยได้ยินคำว่า Protocol บ้าง แต่หลายคนอาจจะยังไม่รู้จักว่ามันคืออะไร ในบทความนี้เราจะมาพูดถึงเจ้า Protocol นี่กันครับ แต่ก่อนอื่นผมขออธิบายเกี่ยวกับ Computer Network สำหรับผู้ที่ยังไม่มีพื้นฐานก่อนนะครับ ใครรู้อยู่แล้วก็ข้ามไปได้เลย

Computer Network คืออะไร

Computer Network แปลเป็นภาษาไทยได้ว่า “เครือข่ายคอมพิวเตอร์” หมายถึงระบบการนำเครื่องคอมพิวเตอร์หลายๆเครื่องมาเชื่อมต่อกัน ทำให้สามารถรับส่งข้อมูลระหว่างกันหรือใช้ข้อมูลร่วมกันได้ กรณีที่เราพบได้บ่อยๆคือการเชื่อมต่อคอมพิวเตอร์หลายๆเครื่อง (Client) ไปที่คอมพิวเตอร์ที่เป็นศูนย์กลาง (Host) เริ่มเห็นภาพหรือยังครับ? ถ้ายังนึกไม่ออกก็ขอให้อ่านต่อครับ

สมมติว่าเรามีคอมพิวเตอร์สองเครื่องและต้องการจะให้สองเครื่องนี้ติดต่อสื่อสารกันได้ สิ่งที่เราต้องทำคือเชื่อมต่อระหว่างสองเครื่องนี้ด้วยสาย Ethernet หรือ WIFI หรือ Bluetooth เป็นต้น การทำเช่นนี้คือ network แบบง่ายๆครับ แต่ถ้าเรามีคอมพิวเตอร์จำนวนมากขึ้น เช่น มีคอมพิวเตอร์ 10 เครื่อง เราต้องใช้สาย 45 เส้นเพื่อจะเชื่อมต่อให้ครบทุกคู่ แค่คิดก็มึนแล้วใช่ไหมครับ วิธีแก้ก็คือเพิ่มคอมพิวเตอร์เล็กๆชื่อว่า router ขึ้นมา 1 ตัว แล้วให้ทุกเครื่องมาเชื่อมต่อกับ router แทน เราก็จะใช้สายแค่ 10 เส้นเท่านั้น ส่วน router ก็ให้ทำหน้าที่คล้ายนายสถานีคอยสับรางให้ข้อมูลที่แต่ละเครื่องส่งมาไปถึงผู้รับที่ถูกต้อง เช่น เครื่อง A ต้องการส่งข้อมูลให้เครื่อง B นายสถานี Router ของเราก็ต้องสับรางให้วิ่งจากเครื่อง A ไปเครื่อง B ไม่ใช่สับไป C, D, E, … นะครับ

แต่ถ้าเรามีคอมพิวเตอร์เยอะขึ้นอีกล่ะ แน่นอนว่าถ้าจำนวนมากเกินไป router ตัวเดียวคงจะสับรางหรือทำงานให้เราไม่ไหว แต่ในเมื่อ router ก็คือคอมพิวเตอร์ตัวหนึ่ง ดังนั้นมันจึงเชื่อมต่อกันเองได้ สิ่งที่เราจะทำเมื่อคอมพิวเตอร์มีจำนวนเยอะขึ้นก็คือแบ่งกลุ่มคอมพิวเตอร์ให้ต่อ router แต่ละตัว แล้ว router แต่ละตัวก็มาเชื่อมต่อกันอีกที กลายเป็น network of networks ซึ่งถ้าสเกลใหญ่ขึ้นอีกเป็น worldwide network of networks ก็คือ Internet นั่นเองครับ

Internet เป็น worldwide network of networks ที่ใช้ Internet protocol suite หรือที่เรียกกันว่า TCP/IP ซึ่งเป็นชุดของ Protocol ที่มีความสำคัญมากในการติดต่อสื่อสารกัน ว่าแต่ Protocol คืออะไรกันนะ?

Protocol คืออะไร

Protocol คือ ชุดของกฎหรือข้อตกลงในการสื่อสารระหว่างคอมพิวเตอร์หรือภายในคอมพิวเตอร์ โดยจะกำหนดรูปแบบและขั้นตอนในการติดต่อแลกเปลี่ยนข้อมูลกัน ซึ่งทั้งต้นทางและปลายทางจะต้องทำตามกฎนี้เป๊ะๆจึงจะสามารถรับส่งข้อมูลกันได้ การออกแบบ Protocol ในสมัยใหม่จะแบ่งเป็นชั้นๆ (layer) ตัวอย่าง TCP/IP model หรือ Internet จะมีลักษณะดังในภาพนี้[7]

คราวนี้เรามารู้จัก Protocol ที่สำคัญกันดีกว่าครับ

TCP (Transmission Control Protocol)

TCP เป็น network protocol ที่สำคัญตัวหนึ่งในระดับ Transport Layer ทำหน้าที่จัดการควบคุมการรับส่งข้อมูล โดยอนุญาตให้ host สองตัวติดต่อและแลกเปลี่ยนข้อมูลแบบต่อเนื่องกัน ในกรณีที่ข้อมูลมีขนาดใหญ่ TCP จะเป็นตัวจัดการแยกข้อความหรือไฟล์เป็นส่วนเล็กๆเรียกว่า message แล้วส่งไปยังผู้รับ จากนั้นจึงประกอบกลับให้เหมือนเดิม โดยรับประกันว่าการส่งข้อมูลและ packet จะถูกต้องตามลำดับเหมือนกับที่มาจากผู้ส่ง นอกจากนี้ยังควบคุมการไหลของข้อมูลไม่ให้เร็วเกินไปจนผู้รับรับไม่ทันด้วย

TCP ถูกออกแบบโดย Vint Cerf และ Bob Kahn ช่วงคริสต์ทศวรรษ 1970 ซึ่งตอนนั้นพวกเขาเป็นนักวิทยาศาสตร์ของ DARPA

IP (Internet Protocol)

IP เป็น protocol ในระดับ Network Layer ทำหน้าที่จัดการเรื่อง address ของแต่ละชุดข้อมูลตาม IP address ที่อยู่ใน packet header โดย IP จะหาเส้นทางที่ดีที่สุดในการส่งข้อมูลซึ่งในการเชื่อมต่อแต่ละครั้งเส้นทางก็อาจจะต่างกันก็ได้ เวอร์ชันหลักของ IP ได้แก่

  • Internet Protocol Version 4 (IPv4) ถึงจะชื่อเวอร์ชัน 4 แต่ถือเป็นเวอร์ชันหลักเวอร์ชันแรกที่ใช้กันอย่างแพร่หลายครับ โดยเริ่มใช้อย่างเป็นทางการครั้งแรกในปี 1981 IPv4 เป็น connectionless protocol ที่ใช้บน packet-switched Link layer networks (ethernet) หรืออธิบายง่ายๆคือมันจะทำงานโดยให้ packet ซึ่งเป็นข้อมูลขนาดเล็กไหลไปตามระบบจนถึงผู้รับได้แบบอิสระไม่จำเป็นต้องเรียงตามลำดับครับ
  • Internet Protocol Version 6 (IPv6) เป็นเวอร์ชันปัจจุบันที่ค่อยๆเข้ามาแทนที่เวอร์ชัน 4 เนื่องจาก IPv4 มีปัญหาด้านความปลอดภัยและข้อจำกัดในเรื่อง address ซึ่งเดิมมีขนาด 32 bits แต่สำหรับ IPv6 จะมีขนาดเป็น 128 bits ครับ

FTP (File Transfer Protocol) 

FTP เป็น protocol มาตรฐานที่อยู่มานานมากๆครับ สร้างโดย Abhay Bhushan เผยแพร่ครั้งแรกในปี 1971 ใช้สำหรับส่งไฟล์จาก host ผ่านทาง Internet ถึงแม้ในปัจจุบันผู้พัฒนาหลายคนและ host หลายเจ้าจะไม่อนุญาตให้ใช้ FTP โดยให้ใช้ระบบ Version Control เช่นพวก Git แทน แต่เราก็ยังสามารถพบการใช้งาน FTP ได้ในระบบ host เก่าๆอยู่ครับ

SMTP (Simple Mail Transfer Protocol)

SMTP เป็น protocol ที่ใช้สำหรับส่งอีเมล สร้างโดย Ray Tomlinson เผยแพร่ครั้งแรกในปี 1981 ลักษณะการทำงานของ SMTP คือ เมื่อผู้ใช้งาน (MUA, mail user agent) ส่งอีเมลไปที่ mail server (MSA, mail submission agent) โดยใช้ SMTP บน TCP port 587 หรือ port อื่นๆที่ใช้ได้ MSA จะส่งเมลไปที่ mail transfer agent (MTA) ซึ่งโดยทั่วไป MSA และ MTA มักจะเป็น software ตัวเดียวกันอยู่ในเครื่องเดียวกัน กรณี MTA  มีหลายเครื่องก็จะส่ง message ระหว่างกันโดยใช้ SMTP จากนั้น MTA จะใช้ DNS (Domain name system) ดู mail exchanger (MX) record ของโดเมนผู้รับ (คือส่วนที่อยู่ทางขวาของสัญลักษณ์ @ ในชื่ออีเมล) แล้วจึงติดต่อกับ exchange server ในฐานะ SMTP client หลังจากได้ message ครบแล้วก็จะส่งต่อให้ mail delivery agent (MDA) ซึ่งอาจจะส่งต่อให้ Local Mail Transfer Protocol (LMTP) ด้วย SMTP หรืออื่นๆ อย่างไรก็ตามสุดท้ายปลายทางก็จะเก็บ message ไว้ที่ local mail server สรุปขั้นตอนคร่าวๆได้ดังภาพ[10]

ประโยชน์ของ Protocol และ Network ในแง่ธุรกิจ

ประโยชน์ของ Protocol คือทำให้คอมพิวเตอร์ทุกค่ายทุกรุ่นในโลกนี้ติดต่อสื่อสารและแลกเปลี่ยนข้อมูลกันได้ครับ สำหรับในธุรกิจการที่คอมพิวเตอร์สามารถแลกเปลี่ยนข้อมูลหรือใช้ข้อมูลร่วมกันได้จะทำให้เราสามารถประหยัดทรัพยากรหรือค่าใช้จ่ายในระบบของเราไปได้มากครับ ตัวอย่างที่เห็นได้ชัดๆก็เช่น โดยทั่วไปแทบทุกบริษัทต้องมีการพิมพ์เอกสารใช่ไหมครับ ทีนี้ถ้าเราไม่มีระบบที่เชื่อมคอมพิวเตอร์ทุกเครื่องไว้ด้วยกัน เราอาจจะต้องมีเครื่องปริ้นท์เท่าจำนวนพนักงาน หรือต้องเอาข้อมูลเอกสารใส่ Thumb drive แล้วมาเสียบเครื่องปริ้นท์ทีละคน ซึ่งก็คงไม่เข้าท่าและเสียเวลาน่าดู แต่ถ้ามีระบบที่เชื่อมต่อกันหมด พนักงานแต่ละคนก็จะสามารถสั่งพิมพ์ได้จากเครื่องตัวเองเลยซึ่งสะดวกกว่ามาก

หรืออีกตัวอย่าง สมมติบริษัทของเรามีขนาดใหญ่ก็ย่อมต้องมีข้อมูล เช่น ข้อมูลของลูกค้า หรือสินค้า เก็บไว้ ซึ่งข้อมูลพวกนี้แหละครับ สมควรเป็นอย่างยิ่งที่จะต้องเป็นข้อมูลที่อยู่ในเครื่องส่วนกลางที่ทุกคนสามารถเข้าไปดึงข้อมูลมาใช้ได้ เพื่อให้ข้อมูลที่ได้เหมือนกันทั้งบริษัทและสามารถค้นหาได้อย่างรวดเร็วครบถ้วน ไม่ใช่เก็บไว้เครื่องใครเครื่องมันแล้วเวลาจะใช้ก็หาไม่เจอหรือเจอข้อมูลเก่าที่ไม่ได้อัปเดท

 

สุดท้ายนี้ถ้าผู้อ่านอยากเรียนรู้เรื่องเกี่ยวกับ Web Programming อย่างลึกซึ้งก็ขอแนะนำคอร์ส Web Programming ของทาง EPT ครับ สามารถดูรายละเอียดคอร์สได้โดยคลิกที่นี่หรือติดต่อได้ที่ 085-350-7540

แล้วพบกันใหม่บทความหน้าครับ

 

ที่มาและเว็บไซต์อ้างอิง

[1] https://developer.mozilla.org/en-US/docs/Learn/Common_questions/How_does_the_Internet_work
[2] https://developer.mozilla.org/en-US/docs/Glossary/protocol
[3] https://developer.mozilla.org/en-US/docs/Glossary/Internet
[4] https://developer.mozilla.org/en-US/docs/Glossary/TCP
[5] https://developer.mozilla.org/en-US/docs/Glossary/IPv4
[6] https://developer.mozilla.org/en-US/docs/Glossary/IPv6
[7] https://en.wikipedia.org/wiki/Communication_protocol
[8] https://developer.mozilla.org/en-US/docs/Glossary/FTP
[9] https://developer.mozilla.org/en-US/docs/Glossary/SMTP
[10] https://en.wikipedia.org/wiki/Simple_Mail_Transfer_Protocol

 


Tag ที่น่าสนใจ: protocol computer_network tcp ip ftp smtp internet_protocol transmission_control_protocol file_transfer_protocol simple_mail_transfer_protocol internet network_layer transport_layer tcp/ip network_of_networks


บทความนี้อาจจะมีที่ผิด กรุณาตรวจสอบก่อนใช้

หากมีข้อผิดพลาด/ต้องการพูดคุยเพิ่มเติมเกี่ยวกับบทความนี้ กรุณาแจ้งที่ http://m.me/Expert.Programming.Tutor

ไม่อยากอ่าน Tutorial อยากมาเรียนเลยทำอย่างไร?

สมัครเรียน ONLINE ได้ทันทีที่ https://elearn.expert-programming-tutor.com

หรือติดต่อ

085-350-7540 (DTAC)
084-88-00-255 (AIS)
026-111-618
หรือทาง EMAIL: NTPRINTF@GMAIL.COM

แผนที่ ที่ตั้งของอาคารของเรา

แผนผังการเรียนเขียนโปรแกรม

Link อื่นๆ

Allow sites to save and read cookie data.
Cookies are small pieces of data created by sites you visit. They make your online experience easier by saving browsing information. We use cookies to improve your experience on our website. By browsing this website, you agree to our use of cookies.

Copyright (c) 2013 expert-programming-tutor.com. All rights reserved. | 085-350-7540 | 084-88-00-255 | ntprintf@gmail.com

ติดต่อเราได้ที่

085-350-7540 (DTAC)
084-88-00-255 (AIS)
026-111-618
หรือทาง EMAIL: NTPRINTF@GMAIL.COM
แผนที่ ที่ตั้งของอาคารของเรา