อินเทอร์เน็ตทำงานอย่างไร ตั้งแต่ TCP/IP, IP address, port, DNS ไปจนถึง WWW และ URL แล้วต่อด้วยภาษา HTML ตั้งแต่โครงสร้างเอกสาร กฎของ tag ไปจนถึง heading, link, list, รูปภาพ, character entity และตาราง
ITDS241 Web Technologies and Applications
1 ไฟล์สไลด์ · 67 หน้า
แบบฝึกหัด 20 ข้อ
โจทย์เขียนโค้ด 24 ข้อ
เนื้อหาแยกตามหัวข้อในสไลด์
อินเทอร์เน็ตคืออะไร
อินเทอร์เน็ต (Internet) คือระบบเครือข่ายคอมพิวเตอร์ที่ใหญ่ที่สุดในโลก คอมพิวเตอร์จำนวนมหาศาลที่ต่ออยู่ในระบบนี้สามารถคุยกันรู้เรื่องได้ เพราะทุกเครื่องใช้มาตรฐานและกฎเกณฑ์ในการสื่อสารชุดเดียวกัน ซึ่งก็คือ TCP/IP อินเทอร์เน็ตไม่ได้เกิดขึ้นมาในทันที แต่กำเนิดขึ้นจากงานวิจัยด้านการทหารและวิชาการของสหรัฐอเมริกา (the American research and defense work) ในช่วงทศวรรษ 1970 และ 1980
นิยาม
Internet = ระบบเครือข่ายที่ใหญ่ที่สุดในโลก ซึ่งทุกเครื่องใช้มาตรฐานการสื่อสารเดียวกันคือ TCP/IP
เส้นเวลาด้านล่างสรุปเหตุการณ์สำคัญตามสไลด์ สังเกตว่าหลายสิ่งที่เราจะเรียนต่อในบทนี้ ทั้ง TCP, DNS และ World Wide Web ล้วนเกิดขึ้นในช่วงเวลานี้
1966เริ่มโครงการ ARPA (Advanced Research Project Agency)
1969ติดตั้ง ARPANET node แรกที่ UCLA Network Measurement Center
คอมพิวเตอร์เครื่องเดียวอาจให้บริการได้หลายอย่าง IP address อย่างเดียวจึงยังไม่พอจะบอกว่าผู้ใช้ต้องการบริการไหน TCP/IP จึงมีการระบุ port เพื่อบอกถึง service ที่ผู้ใช้ต้องการ
เปรียบเทียบ
ถ้าเทียบ IP Address เป็นที่อยู่ที่ทำให้เราไปถึงตึกหลังนั้นได้ port ก็ทำหน้าที่เหมือนหมายเลขห้อง ที่พาเราไปสู่จุดหมายบริการที่ต้องการภายในตึก
บริการทุกอย่างบนอินเทอร์เน็ต (All Internet services) ทำงานอยู่บน TCP/IP protocol และแต่ละบริการมี port number และ protocol เฉพาะของตัวเอง ตัวอย่างในสไลด์ ได้แก่
Service / Protocol
Port
HTTP
80
FTP
21
Telnet
23
SMTP
25
Domain Name & DNS
ตัวเลข IP อย่าง 74.125.71.102 จำยากสำหรับมนุษย์ Domain name (ชื่อโดเมน) จึงทำหน้าที่เหมือน IP Address แต่อยู่ในรูปแบบของชื่อหรือข้อความ ที่อ่านและจำได้ง่ายกว่า
วาดใหม่จากสไลด์ 12 — ครึ่งบนคือลำดับชั้นของ domain name (ไฮไลต์เส้นทาง www.google.com) ครึ่งล่างคือ DNS ที่จับคู่ชื่อกับ IP
นิยาม
Domain Name Server (DNS) ทำหน้าที่จับคู่ระหว่าง IP Address กับ Domain name เช่น www.google.com. = 66.249.89.104
สรุปความสัมพันธ์ของ 3 หัวข้อนี้ได้ว่า ผู้ใช้จำชื่อโดเมน → DNS แปลงเป็น IP address เพื่อหาเครื่อง → port บอกว่าต้องการบริการไหนบนเครื่องนั้น
World Wide Web (WWW) คืออะไร
WWW ย่อมาจาก World Wide Web หรือเรียกสั้นๆ ว่า "the Web" เปิดตัวในปี 1992 โดย Tim Berners-Lee WWW เป็นบริการข้อมูลรูปแบบหนึ่งบนอินเทอร์เน็ต (ไม่ใช่ตัวอินเทอร์เน็ตเอง) ที่ผู้ใช้สามารถเลือกอ่านข้อมูลซึ่งประกอบด้วยข้อความ รูปภาพ และสื่ออื่นๆ รวมถึงเชื่อมโยงไปยังข้อมูลอื่น (navigation) ได้ด้วย hyperlinks และ WWW ใช้ HTTP protocol ในการสื่อสารและแลกเปลี่ยนข้อมูล
ข้อควรระวัง: ปีของ WWW
สไลด์มีปีของ WWW 2 จุด — เส้นเวลาประวัติอินเทอร์เน็ตเขียนว่าปี 1990 "World Wide Web (WWW) has been created" ส่วนสไลด์ "What is the WWW?" เขียนว่า Introduced in 1992 by Tim Berners-Lee ถ้าโจทย์ถามว่า เปิดตัว (introduced) ปีใดและโดยใคร คำตอบคือ 1992 โดย Tim Berners-Lee
หัวข้อในวิชานี้ (course roadmap) — Front-end: HTML, CSS, JavaScript (Core) · Back-end: Node.JS, Web Service (API), Connection to DB · Other trends + framework: React
Introduction to Internet, Overview, and Basic HTML and HTML5 Part 1 บทนี้
Basic HTML and HTML5 Part 2
Cascading Style Sheet Part 1
Cascading Style Sheet Part 2
JavaScript Part 1
JavaScript Part 2
JavaScript Part 3
Web Service
Introduction to Node.js Part 1
Introduction to Node.js Part 2
Introduction to Node.js Part 3
Web Service with Node.js
Trends in Web Application Framework
HTML คืออะไร
HTML ย่อมาจาก HyperText Markup Language เป็นภาษาหลักในการเขียนเว็บแอปพลิเคชัน HTML ประกอบด้วย markup tags ซึ่งเป็นตัวบอก browser ว่าให้แสดงผลเนื้อหาอย่างไร ไฟล์ HTML 1 ไฟล์เรียกว่า HTML Document และใช้นามสกุล .html หรือ .htm
ตัวอย่างเอกสาร HTML จากสไลด์ ในที่นี้ <p> ทำให้เนื้อหาแสดงผลเป็นย่อหน้า (paragraph)
<!DOCTYPE html>
<html lang="en">
<body>
<section>
<p>This is an example of
Markup language.</p>
<p>Tags tell browsers how
to show the contents</p>
</section>
</body>
</html>
สไลด์บอกว่า HTML เรียนรู้ได้ง่าย สิ่งที่ต้องรู้คือวิธีใช้ tag ต่างๆ และต้องมี text editor ธรรมดาสำหรับเขียนเอกสาร เช่น Visual Studio Code, Notepad, Notepad++ เมื่อเขียนเสร็จก็เปิดไฟล์ด้วย browser ได้ทันที (Easy to code, Run on Browsers)
คำแนะนำจากสไลด์
ถ้าอยากเป็น web developer ที่เก่ง ควรใช้ plain text editor ในการฝึกเขียน HTML
ประวัติของ HTML
1991Tim Berners-Lee สร้าง HTML
1995HTML2
1997HTML3
1999HTML4
2000XHTML
2014HTML5
2017HTML5.2
โครงสร้าง Tag พื้นฐาน
เอกสาร HTML ประกอบด้วย 2 สิ่ง คือ Content ซึ่งเป็นเนื้อหาของหน้านั้นๆ เช่น ข้อความ และ Tag (Element) ซึ่งเป็นชุดคำสั่งที่บอกลักษณะการแสดงผลของเนื้อหา รูปแบบทั่วไปคือมี tag เปิด (opening tag) อยู่หน้าเนื้อหา และ tag ปิด (closing tag) ที่มีเครื่องหมาย / อยู่หลังเนื้อหา
<tag-name>Content to be displayed</tag-name>
<!-- ↑ Opening tag ↑ Closing tag -->
กฎ: case insensitive
HTML tags เป็น case insensitive คือจะเขียนชื่อ tag ด้วยตัวอักษรภาษาอังกฤษพิมพ์ใหญ่หรือพิมพ์เล็กก็ได้ (<P> กับ <p> ให้ผลเหมือนกัน) แต่นิยมใช้ตัวพิมพ์เล็ก
กฎการซ้อน Tag (Nesting Tags Rules)
tag เปิดและ tag ปิดกำหนดขอบเขต (region) ที่ tag นั้นมีผล ขอบเขตเหล่านี้ซ้อนกันได้ (nested) แต่ห้ามเหลื่อมกัน (not overlap) กล่าวคือถ้าเปิด tag1 แล้วเปิด tag2 ข้างใน ต้องปิด tag2 ให้เรียบร้อยก่อนจึงจะปิด tag1 ได้ เหมือนกล่องเล็กต้องอยู่ในกล่องใหญ่ทั้งใบ จะโผล่ครึ่งหนึ่งออกนอกกล่องใหญ่ไม่ได้
วาดใหม่จากสไลด์ 27 — เส้นเชื่อม tag เปิดกับ tag ปิดของตัวเดียวกัน แถวล่างเส้นของ tag1 กับ tag2 ตัดกัน = overlap
tag ไม่จำเป็นต้องมี tag ปิดเสมอไป ตัวอย่างเช่น <br> (line break) ซึ่งเป็นเพียงการบอกตำแหน่งให้ขึ้นบรรทัดใหม่ ไม่ได้ครอบเนื้อหาใดๆ จึงไม่มี tag ปิด
อีกกฎที่สำคัญคือ Unknown tags are ignored — ถ้าเขียนชื่อ tag ผิด หรือสร้าง tag ขึ้นมาเอง browser ก็ยังทำงานต่อได้โดยไม่แสดง error แต่จะข้ามการแปลความหมายของ tag ที่ไม่ได้บัญญัติไว้ไป
ทำไมถึงออกแบบแบบนี้
สไลด์ให้เหตุผลว่า เพื่อให้สะดวกต่อการเพิ่ม tag ใหม่ๆ ในอนาคต
เมื่อนำ tag ทั้ง 5 ตัวมารวมกัน จะได้เอกสาร HTML ที่สมบูรณ์ตามตัวอย่างในสไลด์ ข้อความ "I Love HTML" จะไปแสดงบนแถบของ browser ไม่ได้อยู่ในตัวหน้าเว็บ ส่วนสิ่งที่อยู่ใน <body> คือทุกอย่างที่แสดงบนหน้า
<!DOCTYPE html>
<html lang="en">
<head>
<title>I Love HTML</title>
</head>
<body>
Everything displayed on your page
will be in here.
</body>
</html>
Tips จากสไลด์
เริ่มทุกไฟล์ด้วย tag พื้นฐานเหล่านี้เสมอ:<!DOCTYPE>, <html>, <head>, <title>, <body>
เยื้อง (indent) element ที่ซ้อนกัน เพื่อให้อ่านโค้ดง่ายขึ้น — สไลด์ 32 กับ 33 แสดงโค้ดชุดเดียวกันที่เยื้องไม่สม่ำเสมอกับที่เยื้องเป็นระเบียบ ซึ่งแบบหลังเห็นได้ทันทีว่า tag ไหนอยู่ข้างในอะไร
Comments
ถ้าต้องการเขียนหมายเหตุไว้ในซอร์สโค้ด HTML ให้ใช้รูปแบบด้านล่าง browser จะไม่แสดงผล comment ออกมาบนหน้าเว็บ
สไลด์ยกคำกล่าวจาก validator.w3.org ว่า "เช่นเดียวกับทุกภาษา ภาษาเหล่านี้มีไวยากรณ์ คำศัพท์ และ syntax ของตัวเอง และเอกสารทุกฉบับที่เขียนด้วยภาษาคอมพิวเตอร์เหล่านี้ควรทำตามกฎนั้น" สำหรับการเขียน HTML ให้ถูกหลักการ โดยเฉพาะมือใหม่ ควรนำโค้ดไปตรวจสอบกับเครื่องมืออย่าง https://validator.w3.org/ สไลด์แสดงภาพเปรียบเทียบผลตรวจของ Valid HTML กับ HTML with some errors
Heading Tags <h1> ถึง <h6>
หัวข้อ (headings) ใช้ tag <h1> ถึง <h6> โดย <h1> สร้างหัวข้อขนาดใหญ่ที่สุด และ <h6> สร้างหัวข้อขนาดเล็กที่สุด เมื่อใช้ tag กลุ่มนี้ browser จะเพิ่มบรรทัดว่างทั้งก่อนและหลังข้อความให้อัตโนมัติ ไม่ต้องใส่เอง
<h1>This is a heading h1</h1>
<h2>This is a heading h2</h2>
<h3>This is a heading h3</h3>
<h4>This is a heading h4</h4>
<h5>This is a heading h5</h5>
<h6>This is a heading h6</h6>
<!DOCTYPE html>
<html lang="en">
<head>
<title>HyperLink</title>
</head>
<body>
<!-- This link goes to another HTML using relative path -->
<a href="1_headings.html">Link to Heading</a>
</body>
</html>
<ul>
<li> A few New England states:
<ul>
<li>Vermont</li>
<li>New Hampshire</li>
<li>Maine</li>
</ul>
</li>
<li> Two Midwestern states:
<ul>
<li>Michigan</li>
<li>Indiana</li>
</ul>
</li>
</ul>
Definition list เริ่มต้นด้วย <dl> แต่ละรายการประกอบด้วยคู่ของ <dt> (คำ) ตามด้วย <dd> (คำอธิบาย/คำนิยาม)
<a href="http://www.kanahei.com/">
<img src="Images/Usagi_Clap.gif" alt="Rabbit with Penguin">
</a>
Character Entities
ตัวอักษรพิเศษบางตัวเป็นสัญลักษณ์ที่ต้องใช้ชุดคำสั่งพิเศษเรียกว่า character entities ตัวอย่างที่ชัดที่สุดคือเครื่องหมาย < ถ้าพิมพ์ลงไปตรงๆ browser อาจเข้าใจว่าเป็นจุดเริ่มต้นของ tag character entity ประกอบด้วย 3 ส่วนเรียงกัน