--- title: Lab Meeting Minutes 2023/11/24 tags: lab_meeting --- > Outline > [TOC] --- # PERAL Lab Meeting - 時間:112 年 11 月 24 日 20:00 - 地點:線上 - 線上會議連結 : [Online](https://meet.google.com/zfi-zmnc-qfw) - 出席者:吳坤熹老師、謝萬霖、劉怡君、田蕙瑜、沈家正、梁宇騰、紀見如、劉冠伶、林大智、繆亭霄、蘇翊荃、陳嘉璐、陳品妤、陳姿綾、陳姿澖 - 會議主題:WebSocket [(PDF)](http://ms15.voip.edu.tw/~jiazheng/files/The_WebSocket_Protocol.pdf) [(PPTX)](ms15.voip.edu.tw/~jiazheng/files/The_WebSocket_Protocol.pptx) - 主講者: 沈家正 - 主記: 梁宇騰 ## 會議內容 ![image](https://hackmd.io/_uploads/r1kO3bAVT.png)1 讓 client 跟server可以互動 ![image](https://hackmd.io/_uploads/rkUt3-CN6.png)2 polling:定期發送request給server,但會有過多overhead :::info **老師補充 polling 用途** peer-to-peer vs client-server 有新的資訊會 queue 在 server 那邊,要等 client 來拿才會給他 舉例 interval 10s best case: instant worst case: 10s 平均等5秒會從server收到訊息 interval 弄太短,沒資訊更動也佔流量 ::: WebSocket:雙向雙工的連線,single TCP不需要再開其他connection,最少2byte ![image](https://hackmd.io/_uploads/BJeihZC4p.png)3 可以自由地使用雙攻 ![image](https://hackmd.io/_uploads/rynR3WCV6.png)4 用http handshake ![image](https://hackmd.io/_uploads/H1dMa-R4p.png)5 ![image](https://hackmd.io/_uploads/SJcQpWCVT.png)6 ws在port80,wss在port443, ![image](https://hackmd.io/_uploads/SJtHaW04T.png)7 多了一個upgrade:websocket,這樣可以使用http的功能來連線,version規定為13,origin:代表到哪個瀏覽器才能使用websocket,最後兩行為擴展功能。 ![image](https://hackmd.io/_uploads/H1vLTZ0V6.png)8 轉換protocol,回應支援哪個protocol ![image](https://hackmd.io/_uploads/H1KPT-0N6.png)9 確保雙方都知道這個protocol, ![image](https://hackmd.io/_uploads/S1tuTW0Ep.png)10 fin:代表 rsv:保留用的 opcode:解讀palyload mask:代表有沒有mask,混淆playload data,讓中間人無法解讀與修改, mask-key:有mask時會啟用, ![image](https://hackmd.io/_uploads/S1ttTZC4T.png)11 ![image](https://hackmd.io/_uploads/HkK9TbA4T.png)12 對方如何解讀資訊,ping pong的用途:互動時可以確定對方是否還在線。 ![image](https://hackmd.io/_uploads/SJuopWRNT.png)13 在不知道訊息有多大的時候,就可以將訊息送出,fin bit為1代表訊息傳完了, ![image](https://hackmd.io/_uploads/rJw2aZREa.png)14 傳完data後就可以傳closehandshake,雙方都可以主動傳close ![image](https://hackmd.io/_uploads/rkv6p-A4T.png)15 安全考量,2011年定稿,origin:不讓隨意的網站都能使用websocket,不讓淺在的javascirpt攻擊。 masking:可以保護cache,不被他人串改資料,。 TLS:讓可以解讀websocket playload的server,也無法解讀,進一步加密。 ![image](https://hackmd.io/_uploads/SJrCa-RVa.png)16 應用:即時聊天,多人遊戲,儀表板。 socket.io:方便開發者使用的library,支援很多功能。 ![image](https://hackmd.io/_uploads/B1Xg0bR4a.png)17 --- ### 建議&問題 1. [name=Louise]p.11 masking是如何做到的,有沒有實際的例子? Ans: [name=] RFC 6455 Section 5.7 example:利用[cyberchef](https://michaeltri.github.io/CyberChef/)轉換成2元字串,從key的第一個byte開始計算xor顯示結果為hello。 2. [name=Ellie]WebSocket在那邊等是否也會造成overhead,他的優勢是什麼? Ans: [name=] 傳輸會造成更多的overhead 老師補充:每傳送一個request,都要three-way handshake一次,而websocket不需要每次都handshake。 3. [name=Ellie]p13什麼是fragmentation?為什麼要使用它? Ans: [name=] 可以把一個訊息切成很多小部分。資訊量大時可以分割,不用等到整個資訊都完整就可以傳送出去。 [name=Solomon] https://en.wikipedia.org/wiki/IP_fragmentation 4. [name=]p13和ipv4的fragmentation1不一樣,那在websocket的作用是什麼 Ans: [name=] 還沒搞懂 5. [name=]要如何知道fragmentation後封包的順序? Ans: [name=]tcp本身就會造順序 6. [name=Yukino]p6利用這頁的例子打上去,但還是https Ans: [name=] 要網站本身有支援才能,可以去 slither.io 試試。或是有人提供 [Echo Server](https://blog.postman.com/introducing-postman-websocket-echo-service/) 7. [name=Ashley]有沒有browser,是本來就可以用websocket的? 老師補充:五大browser都支援websocket,但做法不是輸入網址,而是通過javascript呼叫api Ans: [name=]webbrowser本身就是來開網頁的,可以利用google找websocket的client,但也是用http呈現。 8. [name=Ashley] 如果雙方都沒有發close會不會自動關掉 Ans: [name=] 不知道 9. [name=August] P.17 無法理解用 WebSocket 為何對你原本想做的研究有幫助? Ans: [name=] 這樣就不必 distribute 一個執行檔,每個 client 連上我的測試網頁,就可以建 socket 進行測試。 10. [name=Angela] 若 RFC 6455 是以 HTTP 來進行 handshaking,請問目前網頁大多限制 HTTP 連線的情況下,WebSocket 有甚麼應對方式? 目前多數使用HTTPS? Ans: [name=]可以透過wss去解決。 11. [name=Phoebe] Give us a hands-on example so that we can understand how it works. Ans: [name=] 12. [name=miller]rsv的作用是什麼? Ans: [name=]保留用來使用extension,或你想做什麼都行 12. [name=Edgar] I like your example about full-duplex. p3改用long polling的話就可以改善overhead的問題。 Ans: [name=]但header的大小還是比較小。 14. [name=Edgar]p9為何是這個值? Ans: [name=] [ What does "258EAFA5-E914-47DA-95CA-C5AB0DC85B11" means in WebSocket Protocol](https://stackoverflow.com/questions/13456017/what-does-258eafa5-e914-47da-95ca-c5ab0dc85b11-means-in-websocket-protocol) 14. [name=Edgar]p13 fin與opcode是不是必須為0? Ans: [name=]message可以被拆成很多frame,opcode是0代表需要繼續收封包。 老師補充:可以思考利用websocket可以幫到你什麼? 15[name=solomon]websocket只支援tcp那你該怎麼解決? 11. P.21 "verses" -> "versus" [name=Solomon] verses 是 聖經《詩篇》 ; versus (常略作vs.)才是「與……相對」的意思 ## 待追蹤事項 1. [name=]光纖網路有聯繫但未回覆(如果來不及可以用明年計畫買) - [name=Solomon] 找個人在文龍下週上課時去教室找他。 - 負責人 : Louise 3. 願望清單還未有人填(只有老師填) ## 臨時動議 1. ms15:/usrlocal/etc/sudoers 請檢視 2. ms15的目錄權限問題,希望每個project的負責人可以建立group,讓成員可以加入group, 有權限來管理目錄內的檔案。將負責每個project的成員放在不同group建立不同權限。 - 負責人 : Project的負責人 3. sop的管理,利用自己的帳號修改,就可以知道誰修改的。目前在實驗室的成員與畢業成員分成不同group。 - 畢業 group name:alumni - 在學 group name:labmate - 負責人 : Yukino 4. ms15 `/etc/motd`寫上現任管理者的 email,有機會升級 FreeBSD 版本 5. 裝新的一台ms16,資料區nfs共用 - 負責人 : Selena 6. ups設備採購調查,一台電源供應器500-600元,前三排各以配置一台1000va,最後一排配兩台800va,老師那邊配兩台800va (超過 2000 元要列財產清單;超過 10000 元要跑請購流程(最後時間為12終)),因此1000va改為800va並增加幾台。 - 負責人 : Phoebe 7. nas調查結果結果Ds423+ VS TS-433,選擇實驗室沒有的(2.5G TS-433)。 --- 散會結束時間: 22:41