“สวัสดี อามีโก้!”

"สวัสดี บิลาโบ!"

“วันนี้คุณจะบอกอะไรใหม่ให้ฉันฟังบ้าง”

"หลายอย่าง แต่อย่างแรก ฉันคิดว่าเราจะหารือเกี่ยวกับการทำงานกับเครือข่ายและอินเทอร์เน็ต สนใจไหม"

"ใช่แล้ว อินเทอร์เน็ตกาแลกติกนั้นยอดเยี่ยมมาก"

"เอาล่ะ แต่มาเริ่มกันที่ประวัติศาสตร์ ในตอนต้นของศตวรรษที่ 21 สถานการณ์เป็นเช่นนี้..."

"คอมพิวเตอร์ทุกเครื่องที่เชื่อมต่อกับอินเทอร์เน็ตมีหมายเลขเฉพาะ นี่เป็นหมายเลข 4 ไบต์ธรรมดา เรียกว่าที่อยู่ IP"

"แต่มนุษย์มีหน่วยความจำไม่ดีและมีปัญหาในการจดจำบางอย่างเช่น 2108458776 ดังนั้นพวกเขาจึงมักเขียนแต่ละไบต์แยกกัน"

"ถ้าเราแบ่งเลข 4 ไบต์ 2108458776 เป็นไบต์แยกกัน เราจะได้ 125.172.135.24 อย่างที่คุณจำได้ แต่ละไบต์ประกอบด้วย 8 บิตและสามารถมีตัวเลขได้ตั้งแต่ 0 ถึง 255"

“งั้นเราเขียนเบอร์กันแบบนี้เลยเหรอ”

"ใช่ มันง่ายกว่า (สำหรับมนุษย์) ที่จะจำตัวเลขสี่ไบต์เมื่อเขียนด้วยวิธีนี้"

"เมื่อมันเกิดขึ้น การเลือกใช้เพียง 4 ไบต์ก็เล่นตลกกับพวกเขาในไม่ช้า จำนวนอุปกรณ์ที่เชื่อมต่อกับอินเทอร์เน็ตเพิ่มขึ้นอย่างรวดเร็วจนเต็มจำนวนในไม่ช้า"

"พวกเขาไปรอบ ๆ นั้นได้อย่างไร"

"พวกเขาทำในสิ่งที่มนุษย์ทั่วไปทำ"

"พวกเขาสร้างมาตรฐานใหม่สำหรับที่อยู่ IP และตั้งชื่ออย่างภาคภูมิใจว่า IPv6"

"ไม่เหมือนกับที่อยู่ IP ปกติ (เรียกว่า IPv4) ที่ใช้ 4 ไบต์เพื่อสร้างหมายเลขเฉพาะ มาตรฐานใหม่ใช้ 16"

"ลองคิดดูสิ มนุษย์ไม่สามารถจำตัวเลข 10 หลักในตัวเลขปกติได้ (เช่น 2108458776) ดังนั้นพวกเขาจึงต้องแบ่งออกเป็น 4 ส่วน แต่แล้วพวกเขาก็คิดที่จะใช้ตัวเลขที่ประกอบด้วย 16 ไบต์"

“ใช่ บางครั้งมนุษย์ก็ประหลาด”

“ใช่ มนุษย์ก็คือมนุษย์”

"ที่กล่าวว่าพวกเขาได้ออกจากสถานการณ์ของพวกเขา"

"พวกเขาเบื่อที่จะจำตัวเลขและตัดสินใจที่จะแทนที่ด้วยคำพูด"

“เป็นไงบ้าง ยกตัวอย่างหน่อยได้ไหม”

"แน่นอนweb.mail.com , google.com , new.books.amazon.com , …"

"ชื่อประเภทนี้เรียกว่าโดเมน"

"เพื่อให้อินเทอร์เน็ตนี้ทำงานได้อย่างถูกต้อง พวกเขาได้สร้างตารางพิเศษที่เรียกว่าระบบชื่อโดเมน (DNS) ซึ่งเก็บที่อยู่ IP ของชื่อโดเมนแต่ละชื่อ"

"นี่คือวิธีการทำงาน"

1) ผู้ใช้ป้อนที่อยู่ในเบรา ว์ เซอร์ เช่นweb.mail.com

2)  เบราว์เซอร์เข้าถึง DNS และใช้ชื่อโดเมนเพื่อรับที่อยู่ IP

3)  คำขอที่มี URL ที่จำเป็นจะถูกส่งไปยังที่อยู่ IP นี้

"นั่นดูไม่ง่ายเลย"

"แต่วิธีนี้มีประโยชน์หลายประการ:"

" 1) มนุษย์พบว่ามันง่ายที่จะจำชื่อที่สามารถพูดได้"

" 2) ชื่อโดเมนสามารถสร้างตามลำดับชั้นได้โดยการเพิ่มโดเมนย่อยที่ส่วนต้นของชื่อ เหมือนกับชื่อแพ็คเกจใน Java"

" 3) หากคุณต้องการเปลี่ยนที่อยู่ IP ของเว็บเซิร์ฟเวอร์ คุณเพียงแค่เปลี่ยนบันทึก DNS และทุกอย่างจะทำงานเหมือนเดิม — ผู้ใช้ไม่จำเป็นต้องจำที่อยู่ใหม่"

"DNS มีลักษณะดังนี้:"

ชื่อโดเมน ที่อยู่ IP
เมล์.คอม 128.35.36.189
เว็บ.mail.com 145.12.17.13
new.mail.com 192.155.15.3
กูเกิล.คอม 92.117.151.100
กูเกิล.คอม 193.168.0.1
docs.google.com 217.12.222.1

"มีเหตุผล."

"อย่างไรก็ตาม โดเมนคือชื่อของคอมพิวเตอร์ แต่เราไม่ต้องการคอมพิวเตอร์ เราต้องการสิ่งที่อยู่ในคอมพิวเตอร์ นั่นคือ URL ที่มีไว้สำหรับ"

"ในตอนแรก URL เป็นลิงก์ไปยังไฟล์บนคอมพิวเตอร์เครื่องอื่น ตัวอย่างเช่น:"

ตัวอย่าง
http://info.codegym.cc / user / info/profile.html
คำอธิบาย
http  เป็นโปรโตคอลสำหรับการสื่อสารระหว่างไคลเอ็นต์กับเซิร์ฟเวอร์
info.codegym.cc  คือชื่อโดเมนของคอมพิวเตอร์
user/info/profile.html  คือเส้นทางไปยังไฟล์บนคอมพิวเตอร์

"ในช่วงเริ่มต้นของการพัฒนาเครือข่าย เว็บเซิร์ฟเวอร์สามารถใช้ URL เพื่อให้บริการไฟล์ที่เก็บไว้ที่ไหนสักแห่งเท่านั้น URL นั้นเป็นเส้นทางส่วนกลางไปยังไฟล์: ชื่อคอมพิวเตอร์ + เส้นทาง"

"ต่อมา เมื่อเว็บเซิร์ฟเวอร์เริ่มสร้างไฟล์เอง URL ก็เปลี่ยนไปเล็กน้อยและกลายเป็นคำขอไปยังเว็บเซิร์ฟเวอร์ พารามิเตอร์คำขอก็ถูกเพิ่มเข้าไปด้วย"

"ทุกวันนี้ เป็นเรื่องยากที่จะเห็นนามสกุลไฟล์ที่ส่วนท้ายของ URL "URL สมัยใหม่เป็นเพียงลิงก์เฉพาะที่มีพารามิเตอร์ เหมือนกับการเรียกเมธอดมากกว่าพาธไฟล์ส่วนกลาง"

"URL สมัยใหม่แบบคลาสสิกมีลักษณะดังนี้:"

การแยกวิเคราะห์ URL
http://codegym.cc/alpha/api/contacts ? _ _ _ _ userid=13&filter=none&page=3
คำอธิบายส่วนต่างๆ ของ URL
codegym.cc  เป็นชื่อโดเมน — ชื่อเฉพาะ (ที่อยู่) ของคอมพิวเตอร์บนอินเทอร์เน็ต
http  เป็นโปรโตคอลสำหรับการสื่อสารระหว่างไคลเอ็นต์และเซิร์ฟเวอร์
alpha/api/contacts  คือคำขอเว็บเซิร์ฟเวอร์หรือคำขอเว็บเพจบนเซิร์ฟเวอร์
userid=13 & filter=none & page=3  เป็นสตริงที่มีพารามิเตอร์คำขอ

"ใช่ ฉันจำได้ คุณบอกฉันเกี่ยวกับ URL เมื่อเร็วๆ นี้"

"และเกี่ยวกับพอร์ตด้วย คุณใช้ตัวอย่างอาคารอพาร์ตเมนต์"

"ควรบอกฉันว่า 'http' คืออะไร ฉันเห็น 'โปรโตคอล' เขียนอยู่ทุกที่ แต่ฉันไม่ชัดเจนว่าคืออะไร"

"ตกลง ฉันจะบอกคุณโดยไม่ต้องกังวลใจอีกต่อไป"

ที่อยู่ IP, โดเมน, URL - 1

" HTTPย่อมาจากH yper T ext T ransport P rotocolและใช้สำหรับถ่ายโอนไฮเปอร์เท็กซ์"

"ไฮเปอร์เท็กซ์คืออะไร"

"มันคือ HTML"

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

"ในระยะสั้น สถานการณ์เป็นเช่นนี้ไฟล์ข้อความธรรมดาหรือหากคุณต้องการ ข้อความจำนวนมากจะถูกส่งระหว่างไคลเอ็นต์และเซิร์ฟเวอร์ "

" คำขอมาถึงเซิร์ฟเวอร์ และเซิร์ฟเวอร์จะตอบสนองคำขอแต่ละรายการ"

"นี่คือตัวอย่างคำขอและการตอบสนองดังกล่าว:"

ขอ
GET alpha/api/contacts HTTP/1.1
Host: codegym.cc
User-Agent: Mozilla/5.0 (X11; U; Linux i686; en; rv:1.9b5) Gecko/2008050509 Firefox/3.0b5
Accept: text/html
Connection: close
คำอธิบาย
GET – request subtype
alpha/api/contacts – request to the web server
HTTP/1.1 – protocol version – HTTP/1.1
Host: codegym.cc – domain name
User-Agent: Mozilla/5 – unique browser name
Accept: text/html – requested document type: HTML
Connection: close – close the server connection after processing the request.

"บรรทัดแรกคือคำขอจริง ต่อไปนี้คือพารามิเตอร์คำขอเพิ่มเติม หรือที่เรียกว่า 'ฟิลด์ส่วนหัว'"

"และนี่คือตัวอย่างคำตอบ:"

การตอบสนอง
HTTP/1.1 200 OK
Date: Wed, 11 Feb 2009 11:20:59 GMT
Server: Apache
X-Powered-By: PHP/5.2.4-2ubuntu5wm1
Last-Modified: Wed, 11 Feb 2009 11:20:59 GMT
Content-Language: en
Content-Type: text/html; charset=utf-8
Content-Length: 1234
Connection: close
<html><body><a href="http://ample.com/about.html#contacts">Click here</a></body></html>
HTTP/1.1 200 OK - «200 OK» means everything is okay.
Date: Wed, 11 Feb 2009 - Date on which the request was processed
Server: Apache - Name of the web server
X-Powered-By: PHP - The server uses PHP
Last-Modified: Wed, 11 Feb 2009 - The time of the last update of the requested file
Content-Language: en - The language of the file
Content-Type: text/html; charset=utf-8This is an HTML-file with UTF-8 encoding
Content-Length: 1234 - The response is 1234 bytes long
Connection: close - The connection will be closed after the request is handled
<html><body><a href="http://ample - The HTML file itself.

"ฉันต้องการดึงความสนใจของคุณไปที่สองสิ่ง:"

"ประการแรก ไม่ว่าคุณจะขออะไร ดูเหมือนว่าเป็นการร้องขอไฟล์ไปยังเซิร์ฟเวอร์ ไม่สำคัญว่าไฟล์จะอยู่บนเซิร์ฟเวอร์หรือเซิร์ฟเวอร์สร้างขึ้นเพื่อตอบสนองคำขอ"

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

"น่าสนใจจัง! ฉันไม่แน่ใจว่าฉันเข้าใจทุกอย่างแล้ว ฉันจะอ่านอีกครั้งในภายหลัง"

"โอ้ ฉันอยากจะบอกคุณเกี่ยวกับสิ่งเล็กๆ แต่น่าสนใจอีกอย่าง: คุกกี้"

"นู้นคืออะไร?"

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

"แล้วประเด็นนั้นคืออะไร"

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

"น่าสนใจจัง!"

"ใช่ เมื่อคุณเขียนเซิร์ฟเล็ตของคุณเอง เราจะพิจารณาหัวข้อนี้ให้ละเอียดยิ่งขึ้น แต่สำหรับตอนนี้ เรามาพักกันก่อน"

"อะไรก็ตามที่คุณพูด."