MSITBlog

2 minutes reading time (421 words)

การศึกษาการทำงานของ Application Discord

Discord-LogoWordmark-Black

แนะนำแอพพลิเคชันในภาพรวม

 

Discord เปิดตัวอย่างเป็นทางการเมื่อเดือนพฤษภาคม 2015 จากสองผู้ให้กำเนิดอย่าง Jason Citron ในตำแหน่ง CEO และ Stanislav Vishnevskiy ในตำแหน่ง CTO 

 

                             (ภาพประกอบ : https://www.modify.in.th/21304)                     

Jason Citron (ซ้าย) Stanislav Vishnevskiy (ขวา)

 

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

 

      (ภาพประกอบ: https://www.blognone.com/node/104473)

ลำดับการใช้งาน

 

 

อธิบายการทำงานในแต่ละส่วน

 

ช่วงการ login

วิธี Ping discord.gg

เพื่อให้รู้ IP Address ของ discord.gg

 

WireShark ตอนเปิดโปรแกรม discord

โดยใช้ Filter เอาเฉพาะ ปลายทาง ( ip.addr == 162.159.0.0/16 ) สำหรับ wildcard

แล้วทำการเปิดโปรแกรม Discord ( หน้า Login )

 

 

เริ่มตั้งแต่ frame 46 เครื่อง Client ( IP : 192.168.5.4 Port 20380 ) ทำการ SYN ไปยัง Server ( IP : 162.159.135.233 : port 443 )

 

Server ทำการตอบรับ SYN ( Synchronize ) พร้อมส่ง ACK (Acknowledgement )

 

Client ทำการตอบรับ

 

Client ทำการส่งข้อมูล สำหรับ handshake protocol

 

Server ตอบรับ

 

Server ส่งข้อมูล handshake protocol  : Server Hello

 

Server ส่ง Handshake Protocol : Certificate , Server Key Exchange, Server Hello Done

 

Client ตอบรับ พร้อมส่ง Client Key Exchange, Change Cipher Spec, Encrypted Handshake Message

 

Server ส่ง New Session 

 

Sever และ Client ทำการรับ ส่ง ข้อมูลที่ทำการ Encrypted

 

Client ตอบกับ พร้อมทั้ง ส่ง TCP Flags : Reset

 

Client เริ่มต้น สื่อสารใหม่ โดย ใช้ TLSv1.2 และ เปลี่ยน Port ใหม่ เป็น 20381

 

 

ฟังก์ชันต่างๆ

 

ส่งข้อความแบบตัวอักษร(Text Chat)

 

อธิบาย

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

 

ส่งภาพนิ่ง

 

อธิบาย

เมื่อมีการส่งภาพนิ่ง(ในที่นี้ทดสอบด้วยไฟล์ .jpg) ภาพจะถูกแบ่งเป็น packet ขนาดเท่าๆกัน โดยส่งข้อมูลผ่านโปรโตคอล TCP อย่างเป็นลำดับ เมื่อข้อมูลเริ่มส่งไประยะหนึ่งจะมีการรวมข้อมูลเพื่อเริ่มต่อเป็นภาพ สังเกตจากข้อความ Reassembled TCP Segments แต่ข้อมูลเหล่านี้จะมีโปรโตคอล TLSv1.2 เข้ารหัสเพื่อความปลอดภัย ดังที่มีข้อความกับกับ Encrypted Application Data

 

ส่งภาพแบบไฟล์ .gif ที่มีให้เลือกผ่าน discord

 

 

อธิบาย

เมื่อมีการเลือกภาพไฟล์ .gif จะมีการทำการคิวรี DNS เพื่อหาที่อยู่ของภาพผ่าน domain name ซึ่งในที่นี้คือต้องการหา media.tenor.co จากนั้นส่งข้อมูลภาพกลับมาคล้ายกับตอนส่งภาพนิ่ง คือส่งผ่านโปรโตคอล TCP เป็น packet ย่อยตามลำดับ โดยมีโปรโตคอล TLSv1.2 คอนยเข้ารหัสข้อมูลภาพที่ส่งมาเช่นเดิม

 

ใช้ screen sharing หรือใช้ video call

 

 

อธิบาย

เมื่อมีการใช้ screen sharing หรือ video call ข้อมูลเสียงและการแชร์หน้าจอจะถูกส่งผ่านโปรโตคอล UDP โดยที่ขนาดของ packet จะมีขนาดไม่เท่ากัน และมีโปรโตคอล RTCP คอยเช็คคุณภาพของข้อมูลเป็นระยะ เช่นเช็คค่า Fraction lost, packet lost, delay, jitter โดยที่ถ้าหากคุณภาพการรับส่งข้อมูลเป็นไปตามปกติ จะไม่ค่อยพบโปรโตคอล RTCP มากนัก แต่ถ้ามีช่วงที่สัญญาณเสียงติดขัดหรือภาพกระตุก จะพบโปรโตคอล RTCP ทำการเช็คข้อมูลบ่อยครั้ง

 

สรุปโปรโตคอลที่พบจากการใช้โปรแกรม wireshark ตามตรวจสอบ

TLSv1.2 โปรโตคอลเข้ารหัสข้อมูลเพื่อความปลอดภัย

TCP โปรโตคอลรับส่งข้อมูลอย่างเป็นลำดับ มักใช้ส่งข้อมูลภาพและข้อความ

UDP โปรโตคอลรับส่งข้อมูลซึ่งส่งข้อมูลไม่พร้อมกัน มักใช้กับเสียงและการแชร์หน้าจอ

RTCP โปรโตคอลสำหรับข้อมูลมัลติมีเดียแบบ real-time ที่สามารถใช้รายงานคุณภาพข้อมูลได้ โดยเป็นโปรโตคอลที่อยู่บน UDP อีกทีหนึ่ง

DNS โปรโตคอลสำหรับ domain name

 

 สรุปการศึกษา

Discord เป็นแอพพลิเคชันสำหรับสนทนาหรือส่งข้อความผ่านระบบอินเทอร์เน็ต

มีโปรโตคอลที่ศึกษา รวม 5 โปรโตคอล

โปรโตคอลที่น่าสนใจ

- RTCP ใช้รายงานคุณภาพข้อมูลมัลติมีเดียต่างๆเมื่อมีการ streaming โดยที่แอพจะใช้รายงานนี้ในการปรับปรุงคุณภาพของข้อมูลมัลติมีเดียในครั้งถัดไป

ข้อควรระวังในการใช้งาน

ปัญหาการถูกดักจับข้อมูล เนื่องจากใช้โปรโตคอล TLSv1.2 มีข้อเสียตรงที่ผู้ไม่ประสงค์ดีสามารถใช้เทคนิค man-in-the middle เพื่อร้องขอข้อมูลที่มีการรับส่งระหว่าง client กับ server ได้

 

ข้อเสนอแนะในการศึกษาแอพพลิเคชันประเภทเดียวกัน

เนื่องจากเป็นแอพแบบ real time ควรปิดเซอร์วิสที่ไม่จำเป็นก่อนใช้ wireshark ดักจับข้อมูล หรือใช้ VM จำลองสภาพแวดล้อมที่เหมาะสม

เปรียบเทียบคุณสมบัติหรือโปรโตคอลของแอพในประเภทเดียวกัน

ศึกษาฟังก์ชันอื่นๆเพิ่มเติม เช่น  การ live เกมส์ หรือสตรีมเกมส์

 

 จัดทำโดย

 นาย สัมพันธ์ ปาวิชัย 6217690002

 นางสาว พรรณปพร จิตจำรูญโชคไชย 6217680016

 นายจิรายุ พานิชกุล 6217680019

 

เอกสารอ้างอิง

https://discordapp.com/

https://discordapp.com/developers/docs/intro

https://www.guidingtech.com/discord-vs-twitch-comparison/

    https://en.wikipedia.org/wiki/Discord_(software)#Digital_distribution

-   https://www.ecnmag.com/article/2015/01/ssl-t

 

 

 

 

 

 

 

ตรวจสอบ Traffic ในองค์กรด้วย ElasticFlow กัน
การศึกษาการทำงานของโปรแกรม Zello ด้วย Wireshark

Related Posts

 

Comments

No comments made yet. Be the first to submit a comment
Already Registered? Login Here
Guest
Thursday, 20 February 2020