ทำความเข้าใจว่าใครขออะไรจากใคร เมื่อหน้าเว็บปรากฏขึ้นบนหน้าจอของคุณ
เปิดบทเรียนนี้ใน Kodokonลองนึกภาพร้านอาหาร คุณนั่งลง คุณเรียกพนักงาน คุณสั่งอาหาร แล้วพนักงานก็ยกมาเสิร์ฟให้คุณ เว็บทำงานแบบเดียวกันเป๊ะ ๆ คุณกับเบราว์เซอร์ของคุณคือ ไคลเอนต์: คุณคือฝ่ายที่เป็นคนขอ ส่วนอีกฝั่งหนึ่งคือ เซิร์ฟเวอร์: คอมพิวเตอร์ที่เปิดอยู่ตลอดยี่สิบสี่ชั่วโมง ตั้งอยู่ที่ไหนสักแห่งในอาคารที่มีเครื่องปรับอากาศ และมีหน้าที่เดียวคือรอรับคำขอแล้วตอบกลับ เซิร์ฟเวอร์ไม่มีอะไรวิเศษเลย: มันคือเครื่องเหมือนของคุณนี่แหละ เพียงแต่มันไม่เคยหลับและไม่มีหน้าจอ
สิ่งสำคัญที่สุดที่ต้องจำ: เซิร์ฟเวอร์ไม่เคยเป็นฝ่ายเริ่มก่อน มันจะไม่ส่งอะไรมาให้คุณเลยจนกว่าคุณจะขอ ทุกครั้งที่คุณพิมพ์ที่อยู่เว็บหรือคลิกลิงก์ เบราว์เซอร์ของคุณจะส่ง คำขอ ออกไป แล้วเซิร์ฟเวอร์ก็ส่ง การตอบกลับ คืนมา ขอ แล้วตอบ ขอ แล้วตอบ ทั้งเว็บสรุปลงมาเหลือแค่การไปกลับแบบนี้เท่านั้นเอง
เพื่อให้คำขอไปถึงปลายทาง ทุกเครื่องที่เชื่อมต่ออยู่จะมี ที่อยู่ IP: ชุดตัวเลขที่ทำหน้าที่เหมือนที่อยู่ทางไปรษณีย์ ตัวอย่างเช่น 93.184.215.14 ข้อความของคุณไม่ได้ถูกส่งไปทั้งก้อน: มันถูกหั่นเป็นชิ้นเล็ก ๆ ที่เรียกว่า แพ็กเก็ต ซึ่งแต่ละชิ้นเดินทางตามเส้นทางของตัวเองผ่านเครื่องตัวกลางหลายสิบเครื่อง แล้วจึงถูกประกอบกลับตามลำดับที่ถูกต้องเมื่อไปถึงปลายทาง คุณตรวจสอบได้ว่าเครื่องหนึ่งตอบสนองหรือไม่ด้วยคำสั่ง ping
ping -c 2 example.com
PING example.com (23.215.0.136): 56 data bytes
64 bytes from 23.215.0.136: icmp_seq=0 ttl=54 time=17.3 ms
64 bytes from 23.215.0.136: icmp_seq=1 ttl=54 time=16.9 ms
--- example.com ping statistics ---
2 packets transmitted, 2 packets received, 0.0% packet lossแล้วเซิร์ฟเวอร์ส่งอะไรกลับมากันแน่? ข้อความ ไงล่ะ หน้าเว็บไม่ได้เป็นอะไรมากไปกว่าไฟล์ข้อความที่เขียนด้วย HTML ซึ่งเซิร์ฟเวอร์ส่งมาให้คุณ และเบราว์เซอร์ของคุณเป็นคนจัดวางให้สวยงาม คุณเห็นสิ่งนี้ได้ด้วยตาตัวเองโดยไม่ต้องใช้เบราว์เซอร์เลย ด้วยเครื่องมือ curl ซึ่งส่งคำขอออกไปแล้วพิมพ์การตอบกลับดิบ ๆ ออกมาในเทอร์มินัล
curl -s https://example.com | head -n 5
<!doctype html>
<html>
<head>
<title>Example Domain</title>
<meta charset="utf-8" />