เปรียบเทียบ TCP Session กับ Session Layer (Layer 5) ใน OSI Model




หลายๆ ท่านคงเคยสงสัยว่า Session Layer (Layer 5) ใน OSI Model คืออะไร แล้วเป็นยังไง?

สำหรับบทความนี้จะเป็นการนำเสนอความสำพันธ์ของ IP address (Layer 3), TCP/UDP port (Layer 4) และ Session Layer (Layer 5) โดยบทความนี้เขียนมาจากมุมมองที่ได้จากการ capture IP packet ในการใช้งาน application นะครับ และมาสรุปเป็นบทความเพื่อให้มีมุมมองในการทำงานที่ง่ายๆ ซึ่งไม่ได้ตรงกับ Session Layer ใน OSI Model 100% 

Note ก่อนที่ท่านจะอ่านบทความนี้ ผมขอแนะนำให้ท่านลองไปอ่านบทความก่อนหน้าเกี่ยวกับเรื่องของ TCP/UDP port นะครับ ซึ่งจะกล่าวถึง source port ที่ถูก random อยู่บน Windows OS


สรุปกับคำว่า Server ก่อน:
บางท่านอาจจะสับสน (แม้แต่ผมก็เคยสับสน) กับคำว่า "Server" โดย computer ที่จะต้องมาทำหน้าที่เป็น server นั้น จะเป็น computer อะไรก็ได้ แม้แต่ notebook ก็ยังเป็น server ได้เช่นกัน เพราะความเป็น server มันไม่ได้ขึ้นอยู่กับ hardware เป็นหลัก แต่มันจะขึ้นอยู่กับ application เป็นหลักต่างหาก โดยหากเรานำ Web Application ไปติดตั้งบน notebook มันก็จะเปิด TCP port 80 รอ และสามารถทำหน้าที่เป็น Web Server ได้เช่นกัน เพียงแต่เครื่องที่จะทำหน้าที่เป็น Server จะต้องเปิดตลอด 24 ชั่วโมง และต้องรับภาระการ access เข้าใช้งานจากเครื่องลูกข่าย (Client) จำนวนมาก ดังนั้นเครื่องที่จะมาทำหน้าที่เป็น Server ได้ จะต้องเป็นเครื่องที่มี spec ที่ดีมากๆ จึงมีการผลิต computer ที่เหมาะกับการใช้งานในลักษณะเช่นนี้ เราจึงเรียกเครื่อง computer ที่มีความแข็งแรงคงทนเหล่านั้นว่า server (Computer ที่มี hardware spec ระดับ Server)

จากภาพตัวอย่างข้างล่าง ผมขอสรุปดังนี้ก่อนนะครับ

- IP address 1 เบอร์ (IP address ของ Server) สามารถมี หรือเปิด TCP/UDP port ได้หลายๆ port เพราะมันสามารถเป็น Application Server ได้มากกว่า 1 application บนเครื่องเดียวกัน เช่น เครื่อง Server IP address 173.194.126.11 สามารถที่จะ run application server ได้มากกว่า 1 application ซึ่งจากรูป server ดังกล่าวมีการ run application server 2 application คือ web application server (มันจะเปิด TCP port 80 เอาไว้ตาม standard) และ mail application server (มันจะเปิด TCP port 25 เอาไว้ตาม standard)

Note: สำหรับ TCP/UDP port กับ application ที่เป็น standard ท่านสามาถเข้าไปศึกษาเพิ่มเติมได้ตาม link นี้ครับ


- TCP/UDP port 1 port สามารถมีได้หลายๆ session
โดย session กับ TCP/UDP port จะต้องมีความสัมพันธ์กัน

คำถามให้ชวนคิด:
ท่านเคยคิดไหมว่า เวลาที่ท่านเปิด Web Browser อย่างเช่น Internet Explorer (IE), Google Chrome หรือ Firefox แล้วทำการเข้า web page สอง page ไปยัง web site ปลายทางเดียวกันอย่าง เช่น google.com สองหน้า web page ในเวลาเดียวกัน โดยหน้า page หนึ่ง search เรื่องนก แต่อีกหน้า page หนึง search เรื่องแมว แล้วทำไม information ที่เราได้รับกลับมาจึงไม่สลับหน้าจอกัน แต่สามารถกลับมายังหน้าจอที่เราทำการ search ได้อย่างถูกต้อง

คำตอบมันอยู่ที่ความสัมพันธ์ระหว่าง TCP port กับ Session ที่กำลังจะอธิบายดังนี้ครับ

Note: ผมขอละเรื่องการอธิบาย SYNC, SYNC ACK, ACK นะครับ

จากภาพแล้ว 
Step 1. ที่ Client - Notebook 100.1.1.1
- ใช้ IE เพื่อ search เรื่องนก โดย client จะเป็นผู้เริ่มเปิดเกมส์การสื่อสารไปยัง Web Server 173.194.126.11 ด้วย source port Random เบอร์ 49,999 และ Destination port 80 ซึ่ง Notebook 100.1.1.1 จะถือว่า source port และ destination port คู่นี้เป็น 1 session สำหรับหน้า page IE 
- ใช้ Google Chrome เพื่อ search เรื่องแมว โดย Notebook เริ่มเปิดเกมส์ไปยัง Web Server 173.194.126.11 ด้วย source port Random เบอร์ 50,000 และ Destination port 80 ซึ่ง Notebook 100.1.1.1 จะถือว่า source port และ destination port คู่นี้เป็น 1 session สำหรับหน้า page Google Chrome


Step 2. ที่ Server 173.194.126.11
- Web Server 173.194.126.11 ได้รับการ request ที่มี source port Random เบอร์ 49,999 และ Destination port 80 มาจาก Notebook 100.1.1.1 ซึ่งเกี่ยวข้องกับการ search เรื่องนก จึงทำการตอบกลับข้อมูลเกี่ยวกับเรื่องนก โดยทำการ convert กลับด้วย Source IP คือ 173.194.126.11 (IP server) และ Destination IP คือ 100.1.1.1 และ source port 80 และ destination port 49,999  
- Web Server 173.194.126.11 ได้รับการ request ที่มี source port Random เบอร์ 50,000 และ Destination port 80 มาจาก Notebook 100.1.1.1 ซึ่งเกี่ยวข้องกับการ search เรื่องแมว จึงทำการตอบกลับข้อมูลเกี่ยวกับเรื่องแมว โดยทำการ convert กลับด้วย Source IP คือ 173.194.126.11 (IP server) และ Destination IP คือ 100.1.1.1 และ source port 80 และ destination port 50,000   

Step 3. ที่ Client - Notebook 100.1.1.1
- เมื่อ Notebook 100.1.1.1 ได้รับการตอบกลับด้วย source port 80 และ destination port 49,999 มันจึงรู้ได้ทันที่ว่าข้อมูลนี้เป็นของ session แรกซึ่งเป็นของ page IE ดังนั้นมันจึงเอาข้อมูลเกี่ยวกับเรื่องนกไปแสดงที่ page ของ IE
เมื่อ Notebook 100.1.1.1 ได้รับการตอบกลับด้วย source port 80 และ destination port 50,000 มันจึงรู้ได้ทันที่ว่าข้อมูลนี้เป็นของ session ที่สองซึ่งเป็นของ  Google Chrome ดังนั้นมันจึงเอาข้อมูลเกี่ยวกับเรื่องแมวไปแสดงที่ page ของ Google Chrome

สรุปคือ คู่ของ Source Port และ Destination Port จะมีความสัมพันธ์กับ Session ของ Application ในการนำเสนอข้อมูลนั่นเอง

สำหรับบน Client อย่างเช่น Notebook IP address 100.1.1.1 แล้ว 
- ในหลายๆ session สามารถที่จะระบุ Destination IP address ของ Server ซ้ำกันได้ เพื่อไปขอใช้บริการ application ต่างๆ ที่ server เปิดให้บริการอยู่ (เช่น Web TCP port 80 และ Mail TCP port 25)
- ในหลายๆ session สามารถที่จะระบุ Destination port เดียวกันได้ 
- สำหรับ Client แล้ว ในแต่ละ session ห้ามใช้ source port ที่ซ้ำกัน 

เพิ่มเติม:

จากตัวอย่างของ Notebook IP address 100.1.1.1 ที่ผมใช้ IE และ Google Chrome ในการเปิดใช้งาน Web บน Server 173.194.126.11 ผ่านทาง TCP port 80 เป็นจำนวนสอง session นั้น ผมมีคำถามคือ
คำถาม:
ถ้าผมใช้ Google Chrome เพียงอย่างเดียวในการเปิดใช้งาน Web บน Server 173.194.126.11 ผ่านทาง TCP port 80 โดยการเปิดเป็น Tab สอง Tab บน Windows เดียวกัน คำถามคือ เราจะมีกี่ session บน IP 173.194.126.11 TCP port 80

คำตอบคือ จำนวน session จะไม่ได้ขึ้นอยู่กับจำนวน Application (ไม่ใช่ว่า IE คือ 1 session และ Google Chrome คือ 1 session นะครับ) 
การเปิด Google Chrome เพียง Application เดียว แล้วจากนั้นทำการเปิด Tab ของ Windows ขึ้นมาสอง Tab จะหมายถึง การใช้งาน 2 session ครับ นั่นคือ Tab ที่หนึ่งจะใช้ Source Port นึง และ Tab ที่สองจะ Source Port อีก Port นึง ในขณะที่ Destination Port เป็น port 80 เหมือนกัน (เพราะใช้งาน Web Application เหมือนกัน)  

มีคนถามมาว่า
"ถ้า client 2 เครือง ใช้ source port เดียว กันแล้ว web server จะให้บริการไหมครับ" ใครพอรู้ไหมเอ่ย ให้บริการได้ หรือไม่ได้ เพราะอะไร

เฉลยเลย ^^
เงื่อนไขคือ ในแต่ละ session ห้ามทั้ง 4 อย่างนี้ซ้ำกัน คือ ห้าม source IP และ source port และ destination IP และ destination port ซ้ำกัน  - ใน 4 อย่างนี้ ขอเพียงแค่ 1 ใน 4 ไม่ซ้ำกัน ก็ถือว่าคนละ session แล้วครับ เช่น Session X: - Source IP address: 10.1.1.1 - Source Port: 51111 - Destination IP address: 200.1.1.1 - Destination Port: 80 Session Y: - Source IP address: 10.1.1.1- Source Port: 52222- Destination IP address: 200.1.1.1- Destination Port: 80 จากตัวอย่าง จะได้ว่า Session X จะเป็นคนละ session กับ Session Y ครับ

ดังนั้น แม้ client 2 เครื่องจะใช้ source port ซ้ำกัน แต่เพราะว่า client ทั้งสองเครื่องต่างก็ใช้ IP address คนละ IP address กัน ดังนั้นจึงไม่มีปัญหาที่ Server จากแยกแยะ source และ reply กลับครับ 

แต่สำหรับใน client เครื่องเดียวกันแล้ว โดย software ที่เป็น OS (Windows, Linux, Androi และอื่นๆ) แล้ว ม้นจะ random source port โดยไม่ใช้ source port ซ้ำกันแน่นอนครับ




หวังว่าบทความนี้จะช่วยให้ท่านเข้าใจเรื่อง Session มากขึ้นนะครับ

ขอบคุณครับ
โก้-ชัยวัฒน์



Create Date : 12 กรกฎาคม 2558
Last Update : 6 มิถุนายน 2560 23:06:09 น.
Counter : 23907 Pageviews.

10 comments
คอม เสียง เบา ปรับเสียง EQ ในคอมพิวเตอร์ ไม่ต้องใช้โปรแกรม !!! สมาชิกหมายเลข 4149951
(18 ส.ค. 2562 22:58:30 น.)
ทีเอช โรโบติก” พร้อมส่งมอบหุ่นยนต์ดูดฝุ่นอัจฉริยะที่ดีที่สุด iRobot Roomba® i7+ ในประเทศไทย จากเพื่อนถึงเพื่อน
(3 มิ.ย. 2562 00:03:03 น.)
OnePlus 7 Pro สร้างนิยามใหม่ของสมาร์ทโฟนด้วยสุดยอดประสิทธิภาพและประสบการณ์ใช้งานที่เหนือชั้นกว่า เจ้าหญิงไอดิน
(30 พ.ค. 2562 16:58:47 น.)
เจาะชีวิตโดน ๆ ของนักบินโดรนธรรมยาตรา และไขความลับของภาพธรรมจักรหมุนได้ Turtle Came to See Me
(15 ก.พ. 2562 06:14:19 น.)
  
อ่านแล้วสนุกพร้อมได้ความรู้ด้วยครับ ต้องขอบคุณบทความดีๆจาก อ. Ko ที่ทำให้ผมได้งานทำ ในตำแหน่งที่ต้องการ. แต่พักหลังๆผมเริ่มเบื่อกับงานเพราะเป็น network ใน DC ค่อนข้างจะว่างป่าวมาสักพักแล้ว เหมือนจะหมดไฟ ความขี้เกียจเข้าครอบงำซะงั้น แต่ได้อ่านบทความนี้ทำให้มีแรงฮึดขึ้นมาศึกษามากขึ้น อ่านแล้วสนุกแล้วเต็มไปด้วยความหวังที่จะทำให้ตัวเองเก่งขึ้น
ผมนี่รู้สึกชื่มชนในตัว อ. อย่างมากครับ
ขอบคุณครับ
โดย: ขอบคุณครับ IP: 1.46.46.84 วันที่: 30 พฤษภาคม 2559 เวลา:19:57:20 น.
  
ขอบพระคุณครับอาจารย์
โดย: IRONMINI IP: 110.169.197.18 วันที่: 8 มกราคม 2560 เวลา:0:49:59 น.
  
"ในแต่ละ session ห้ามทั้ง 4 อย่างนี้ซ้ำกัน แบบ AND logic"
ผมอ่านแล้วเข้าใจว่าเป็นแบบ OR logic หรือเปล่าครับ
คือไม่ตรงเงื่อนไข(ซ้ำกัน) (F) จะกี้ข้อ ขอให้ตรงเงื่อนไข(ไม่ซ้ำกัน) (T) ซักข้อหนึ่ง ก็ยังถือว่าไม่ซ้ำกัน (T) อยู่ดี
โดย: JR IP: 134.236.17.165 วันที่: 6 มิถุนายน 2560 เวลา:19:36:34 น.
  
@คุณ JR ครับ
อืม ผมว่า ผมใช้คำว่า AND logic ก็ไม่ค่อยถูกต้องเท่าไหร่ อาจจะงงๆ เด๋วผมลองไปแก้ไข wording ดูนะครับ

ขอบคุณมากๆ ครับ
โดย: kochaiwat วันที่: 6 มิถุนายน 2560 เวลา:23:01:06 น.
  
@คุณ JR
ผมว่าผมเอาคำว่า AND logic ออกดีกว่า เพราะผมไม่ถนัดเรื่อง programming เลยอาจจะอ้าองอิง AND/OR logic ผิด เลยหันมาใช้คำพูด และยกตัวอย่างน่าจะดีกว่าครับ
ขอบคุณสำหรับ comment เพื่อปรับปรุงครับ
โดย: kochaiwat วันที่: 6 มิถุนายน 2560 เวลา:23:09:29 น.
  
@อาจารย์ kochaiwat ครับ
ผมก็ไม่ค่อยแน่ใจเหมือนกันครับ ห้าๆ ถ้ามองอีกมุมอาจเป็น AND หรือเปล่าผมก็ไม่แน่ใน แต่ปรับปรับเป็นคำพูดเพื่อความเข้าใจตรงกันดีมากเลยครับ

ขอบคุณสำหรับบทความดีๆนะครับ อ่านแล้วเข้าใจง่ายไม่ยากเกินไป เห็นภาพเลยครับ
โดย: JR IP: 27.55.151.70 วันที่: 6 มิถุนายน 2560 เวลา:23:34:50 น.
  
@คุณ JR

ยินดีมากๆ ครับ มีอะไร สามารถแนะนำกันได้ครับ ผมยินดีรับฟังนะครับ คือ บ่งตง ความผิดพลาด ผมถือว่าเป็นเรื่องปกติ ที่สามารถเกิดขึ้นได้ครับ แต่ที่ผมจะยอมรับไม่ได้ คือ ผมถ่ายทอดความรู้ผิดๆ ให้พี่ๆ น้องๆ ดังนั้นหากมีอะไรที่อาจจะผิด ขอให้ทักมาได้นะครับ ผมจะได้แก้ไขให้ถูกต้องครับ ยินดีมากๆ ครับ ^^
โดย: kochaiwat วันที่: 17 มิถุนายน 2560 เวลา:21:05:03 น.
  
มีคำถามว่า ทำไม Scr ต้อง random ทั่งๆทีเราก็รู้อยุ่แล้ว ว่า google chrom มัน คือ port 80 ทำไมเราไม่เอา Scr port เป็น 80 ละคับ
โดย: โด้ IP: 183.88.58.137 วันที่: 6 ตุลาคม 2560 เวลา:16:24:52 น.
  
@K. โด้,

ในกรณีที่เราต้องการเล่น Web และติดต่อไปยัง Web site ของ Google นั้น
1.เราคือ ต้นทาง ส่วน Google เป็น Web Server ซึ่งเป็นปลายทาง
2. และเมื่อ Web Server Google เป็นปลายทาง ดังนั้น Destination Port จึงเป็น port 80
3. จากคำถามที่ว่า ทำไม source port จึงใช้ port 80 ไม่ได้
คำตอบคือ ลองดูจากบทความประกอบนะครับ โดยเน้นไปที่รูป laptop 100.1.1.1. และให้ลองนึกถึงว่า หากเราใช้ source port ต้นทาง port 80 ติดต่อ destination ที่เป็น Web Server เว๊ปเดียวกันและเปิดหน้าของ Web Browser หลายๆ หน้าพร้อมๆ กัน สำหรับ Web Site เดียวกัน และ search คนละเรื่องกัน เวลา Web Server ตอบกลับมาแล้ว เราจะแยกแยะได้อย่างไร ว่าข้อมูลไหน ควรจะไปโผล่หน้า Web Browser ไหน (จะรู้ได้อย่างไรว่าข้อมุลที่ได้รับกลับมาจาก Web Server ต่างๆ เป็นของ Session ไหน)?
ดังนั้น ที่ source port ไม่สามารถใช้ port 80 แบบตายตัวได้ ก็เพราะเหตุนี้ และก็มีการกำหนดให้ใช้ source port แบบ Random โดยมี range ของ source port ตามชนิดของ OS ที่เราใช้ โดยหลักๆ ในบทความผมจะอ้างอิงของ Windows เป็นหลักครับ ส่วนจะมี range อย่างไร ดูจากในบทความนะครับ

หวังว่าคำตอบนี้จะช่วยคลายข้อสงสัยได้นะครับ

ขอบคุณครับ
โก้-ชัยวัฒน์
โดย: kochaiwat วันที่: 10 ตุลาคม 2560 เวลา:7:59:28 น.
  
ขอบคุณครับอาจารย์ ได้ความรู้แบบละเอียดยิบเลยครับเรื่องนี้
โดย: Apiwat IP: 159.192.221.94 วันที่: 4 กรกฎาคม 2562 เวลา:18:28:34 น.
ชื่อ :
Comment :
 *ใช้ code html ตกแต่งข้อความได้เฉพาะสมาชิก
 

Likecisco.BlogGang.com

BlogGang Popular Award#15



kochaiwat
Location :
กรุงเทพฯ  Thailand

[ดู Profile ทั้งหมด]
 ผู้ติดตามบล็อก : 693 คน [?]

บทความทั้งหมด