
- เราจะพูดคุยเกี่ยวกับเครือข่ายเล็กน้อย
- เราจะตรวจสอบไคลเอนต์เซิร์ฟเวอร์และสถาปัตยกรรมสามชั้น
- เราจะสำรวจโปรโตคอล HTTP/HTTPS
- เราจะเรียนรู้ทุกสิ่งที่คุณจำเป็นต้องรู้เกี่ยวกับ Maven
- เรากำลังพูดถึงการเข้าสู่ระบบ
- เกี่ยวกับคอนเทนเนอร์เซิร์ฟเล็ต
- และสุดท้ายเกี่ยวกับ MVC
ตอนที่ 1 เราจะพูดถึงเรื่องเครือข่ายกันเล็กน้อย
เรามาเริ่มกันที่สิ่งที่สำคัญที่สุดโดยพูดถึงสิ่งที่ทุกโซเชียลเน็ตเวิร์ก บริการเว็บ และเว็บแอพ โปรแกรมส่งข้อความโต้ตอบแบบทันที และเว็บไซต์ทั่วไปถูกสร้างขึ้นบนเครือข่าย (ในบริบทของบทความชุดนี้ คำว่า "เครือข่าย" หมายถึงอินเทอร์เน็ต ) . เครือข่ายประกอบด้วยคอมพิวเตอร์จำนวนมาก: เชื่อมต่อกันและสามารถสื่อสารได้ สิ่งสำคัญคือต้องเข้าใจว่าพวกเขาทำเช่นนี้ได้อย่างไร เนื่องจากเว็บแอปพลิเคชันส่งข้อมูลจากคอมพิวเตอร์เครื่องหนึ่งไปยังอีกเครื่องหนึ่งแบบจำลอง OSI
โมเดล Open Systems Interconnection (OSI) สร้างวิธีการแบบแบ่งชั้นเพื่อสร้างเครือข่าย แสดงให้เห็นอย่างชัดเจนว่าเอนทิตีเลเยอร์ใดของเครือข่ายเดียวกันสามารถโต้ตอบระหว่างกันได้อย่างไรและที่ใด โดยรวมแล้วโมเดลนี้มีทั้งหมด 7 เลเยอร์:7 | แอปพลิเคชัน |
6 | การนำเสนอ |
5 | การประชุม |
4 | ขนส่ง |
3 | เครือข่าย |
2 | ลิงค์ข้อมูล |
1 | ทางกายภาพ |
-
เลเยอร์ทางกายภาพ — เลเยอร์นี้เกี่ยวข้องกับกฎของฟิสิกส์และวิธีการใช้เพื่อวัตถุประสงค์ของเรา ตัวอย่างเช่น การสร้างสายเคเบิลและวางสายเคเบิลไปยังเอนทิตีในเครือข่าย
เลเยอร์นี้ไม่สนใจเรา
-
ชั้นลิงค์ข้อมูล — ชั้นนี้มีหน้าที่ส่งข้อมูลไปยังโหนดเครือข่ายและสร้างช่องทางการส่งข้อมูลสำหรับวัตถุทางกายภาพ
เลเยอร์นี้ไม่สนใจเรา เว้นแต่คุณต้องการเขียนเฟิร์มแวร์สำหรับฮาร์ดแวร์ที่สร้างการเชื่อมโยงข้อมูล
-
เลเยอร์เครือข่าย — เลเยอร์นี้ใช้สำหรับกำหนดที่อยู่ของผู้ใช้เครือข่ายแต่ละคนและเส้นทางไปยังพวกเขา มีประโยชน์ในการเรียนรู้เพิ่มเติมเกี่ยวกับรายละเอียดของเลเยอร์นี้ ซึ่งก็คือที่อยู่เครือข่าย
ที่อยู่เครือข่ายถูกกำหนดโดยโปรโตคอลพิเศษ: ที่พบมากที่สุดคือ IPv4 (Internet Protocol รุ่น 4) นี่คือโปรโตคอลที่โปรแกรมเมอร์เว็บต้องใช้เพื่อติดต่อกับผู้ใช้เครือข่ายรายอื่น
ที่อยู่ IPv4 ประกอบด้วยค่าสี่ไบต์ที่คั่นด้วยจุด เช่น 192.0.2.235 คุณควรจำไว้ว่าค่าเหล่านี้เป็นไบต์ ซึ่งหมายความว่าค่าเหล่านี้อยู่ในช่วง 0..255
ในทางกลับกัน ที่อยู่ IP จะแบ่งออกเป็นคลาสต่างๆ เราไม่สามารถกำหนดชุดตัวเลขที่สวยงามให้ตัวเองได้ แต่เราจะไม่ลงลึกมากที่นี่ ก็เพียงพอแล้วที่จะเข้าใจว่าที่อยู่ IP ระบุผู้ใช้เครือข่ายโดยเฉพาะและสามารถใช้ติดต่อผู้ใช้นั้นได้
-
เลเยอร์การขนส่ง — เลเยอร์นี้จัดการการส่งข้อมูลไปยังผู้รับ โปรโตคอลต่าง ๆ ถูกนำมาใช้เพื่อบรรลุสิ่งนี้ สำหรับตอนนี้เราไม่สนใจพวกเขา เราสนใจมากขึ้นในแนวคิดของพอร์ตซึ่งปรากฏที่เลเยอร์นี้
พอร์ตมีหน้าที่รับผิดชอบในการระบุแอปพลิเคชันเฉพาะบนคอมพิวเตอร์ ตัวอย่างเช่น สมมติว่าคุณเขียนแอปแชทด้วย Java ติดตั้งบนคอมพิวเตอร์ 2 เครื่อง และต้องการส่งข้อความถึงเพื่อนของคุณ ข้อความของคุณได้รับการบรรจุ ส่งไปยังที่อยู่ IP เฉพาะ และส่งไปยังเพื่อนของคุณ แต่คอมพิวเตอร์ของเขาไม่รู้ว่าจะทำอย่างไรกับข้อมูลที่ได้รับ เนื่องจากไม่เข้าใจว่าแอปพลิเคชันใดควรประมวลผลข้อความของคุณ เมื่อเอนทิตีเครือข่ายสื่อสาร พอร์ตจะถูกใช้เพื่อระบุว่าแอปพลิเคชันใดควรประมวลผลข้อมูล
พอร์ตคือตัวเลขในช่วงตั้งแต่ 0 ถึง 65535 ซึ่งจะถูกเพิ่มไปยังที่อยู่ IP หลังจากเครื่องหมายทวิภาค: 192.0.2.235:8080 แต่คุณไม่สามารถใช้พอร์ตทั้งหมดในช่วงที่ระบุได้: บางพอร์ตสงวนไว้สำหรับระบบปฏิบัติการและพอร์ตอื่น ๆ จะถูกใช้เพื่อวัตถุประสงค์เฉพาะ เราจะไม่เจาะลึกถึงจุดประสงค์ของพอร์ตต่างๆ สำหรับตอนนี้ก็เพียงพอแล้วที่จะเข้าใจบทบาทของพวกเขาในกระบวนการสื่อสารบนเครือข่าย
-
เลเยอร์เซสชัน — เลเยอร์นี้สร้างและจัดการเซสชันการสื่อสาร ที่เลเยอร์นี้ เป็นไปได้ที่แอปพลิเคชันจะโต้ตอบ ส่งคำขอระดับบริการ สิ่งที่เราต้องรู้ก็คือในเลเยอร์นี้ จะมีการเปิด เซสชันระหว่างผู้ใช้สองคน และเราต้องทำงานกับเซสชันนั้น
เซสชันคือเอนทิตีที่สร้างขึ้นเมื่อมีการสร้างการเชื่อมต่อระหว่างผู้ใช้สองคน สามารถเก็บข้อมูลที่จำเป็นเกี่ยวกับผู้ใช้และประวัติการโต้ตอบกับผู้ใช้ รายละเอียดที่สำคัญคือเมื่อการแลกเปลี่ยนข้อมูลหยุดลง เซสชันจะไม่หายไป แต่จะคงสถานะไว้ตามระยะเวลาที่กำหนด ดังนั้นผู้ใช้สามารถแลกเปลี่ยนข้อมูลต่อไปได้หลังจากหยุดพัก
หากแอปพลิเคชันกำลังสื่อสารกับผู้ใช้หลายคนในเวลาเดียวกัน จะมีการสร้างการเชื่อมต่อ (และเซสชัน) ตามจำนวนที่สอดคล้องกัน แต่ละเซสชันมีตัวระบุเฉพาะ (ID)ซึ่งทำให้แอปพลิเคชันสามารถแยกความแตกต่างระหว่างผู้ใช้ที่กำลังสื่อสารด้วย
-
เลเยอร์การนำเสนอ — เลเยอร์นี้มีหน้าที่ในการเข้ารหัส/ถอดรหัสข้อมูล เห็นได้ชัดว่าหากเราต้องการส่งสตริง "Hello web" ไปยังผู้ใช้รายอื่น สตริงนั้นจะถูกแปลงเป็น (เข้ารหัสเป็น) รหัสไบนารีก่อนแล้วจึงส่งเท่านั้น เมื่อถึงผู้รับ ข้อความจะถูกแปลงกลับ (ถอดรหัส) และผู้รับสามารถดูข้อความต้นฉบับได้ การดำเนินการเหล่านี้เกิดขึ้นที่เลเยอร์การนำเสนอ
-
Application Layerเป็น Layer ที่น่าสนใจที่สุดสำหรับเรา อนุญาตให้แอปพลิเคชันสื่อสารกับเครือข่าย ที่เลเยอร์นี้ เรารับและส่งข้อความ และส่งคำขอไปยังบริการและฐานข้อมูลระยะไกล
มีโปรโตคอลมากมายที่ใช้ในเลเยอร์นี้: POP3, FTP, SMTP, XMPP, RDP, SIP, TELNET และแน่นอน HTTP/HTTPS โปรโตคอลคือข้อตกลงสากลที่เราปฏิบัติตามเมื่อทำการสื่อสาร เราจะให้การสนทนาโดยละเอียดแยกต่างหากเกี่ยวกับ HTTP/HTTPS

- ที่อยู่ IP — ที่อยู่ของผู้ใช้ในเครือข่าย
- พอร์ต — ที่อยู่ของแอปพลิเคชันเฉพาะของผู้ใช้
- เซสชัน — เอนทิตีที่มีอยู่ตลอดระยะเวลาของการสื่อสารระหว่างผู้ใช้สองคน
- โปรโตคอลแอปพลิเคชัน (HTTP/HTTPS) — เป็นกฎที่เราจะปฏิบัติตามเมื่อเขียนและส่งข้อความ
DNS (ระบบชื่อโดเมน)
ดังที่เราได้เรียนรู้ไปแล้ว ผู้ใช้เครือข่ายแต่ละคนมีที่อยู่เฉพาะ หากเรากำลังพูดถึงแอป พลิเคชัน ที่อยู่เฉพาะของมันคือIPv4-address:port หากคุณทราบที่อยู่นี้ คุณจะสามารถเข้าถึงแอปพลิเคชันได้โดยตรง ลองนึกภาพว่าเราเขียนเว็บแอพพลิเคชั่นที่แสดงอุณหภูมิอากาศเฉลี่ยของทุกประเทศแบบเรียลไทม์ เราปรับใช้บนเซิร์ฟเวอร์ที่มีที่อยู่ 226.69.237.119 บนพอร์ต 8080 เพื่อให้สามารถรับข้อมูลจากเราได้ ผู้ใช้ต้องป้อนตัวเลข 5 ตัวในเบราว์เซอร์: 226.69.237.119:8080 ผู้คนไม่ชอบจำชุดตัวเลข พวกเราหลายคนจำหมายเลขโทรศัพท์มากกว่าสองหมายเลขไม่ได้ นั่นเป็นเหตุผลที่ระบบชื่อโดเมนถูกประดิษฐ์ขึ้น เราสามารถสร้าง "นามแฝง" สำหรับที่อยู่ของเราได้ เช่น world-temperature.com แทนที่จะมองหาเราโดยใช้ที่อยู่ที่ประกอบด้วยหมายเลขที่จำยาก 5 หมายเลข ผู้ใช้สามารถป้อนชื่อโดเมนของเราในแถบที่อยู่ของเบราว์เซอร์ มีเซิร์ฟเวอร์ DNSที่จับคู่ชื่อโดเมนกับที่อยู่จริง ตัวอย่างเช่น เมื่อผู้ใช้ป้อน codegym.cc ในเบราว์เซอร์ คำขอจะถูกส่งไปยังเซิร์ฟเวอร์ DNS ซึ่งจะแปลงเป็นที่อยู่จริง
GO TO FULL VERSION