顯示廣告
隱藏 ✕
※ 本文為 xxxx9659 轉寄自 ptt.cc 更新時間: 2015-08-11 01:55:28
看板 Linux
作者 LaPass (LaPass)
標題 Re: [閒聊] 決定來挑戰:自己寫BBS
時間 Fri Jul 24 11:14:43 2015


abcdefghi: telnet要一直佔著tcp connection不放,真的不適合繼續用07/21 11:13

abcdefghi: http是stateless喜歡佔住tcp或是一次就斷線都可以,serv07/22 05:02
abcdefghi: er或client可以根據自己的情況選擇最適合的方式,但tel
abcdefghi: net就只能永遠佔住tcp來保持自己的state, ssh也是有同
abcdefghi: 樣的缺點.

abcdefghi: tcp有太多情況會斷線,NAT被reset,手機從3G切到wifi,電07/23 07:13
abcdefghi: 腦進standby.    如果系統的連線數只有幾百個,那tcp確
abcdefghi: 實不怕被佔用,如果是幾萬人的同時在線上,那差異就很大
abcdefghi: 了,每個tcp連線OS都要花幾KB的記憶體來維持,一堆沒有在
abcdefghi: 動作的連線等於就是白白浪費記憶體,幫你找了別人的實驗
abcdefghi:  http://0rz.tw/sLMr6 , websocket是不是爛東西要看使

 
abcdefghi: 用的地方,而且websocket並沒有要取代http,而是補足過去07/23 07:30
abcdefghi: http在雙向傳送資料沒有效率的缺點,在一般的情況下,一
abcdefghi: 樣是用http.


在命令列打下面這三行指令,再多空一行
把中間的網站改成隨便一個網站

telnet xxxxxxx.com 80
GET / HTTP/1.1
Host: xxxxxxx.com

接著,你應該會看到一堆 html


其他像是 smtp 或是其他一些奇奇怪怪的通訊協議
都可以靠telnet搞定

當然啦,如果定義的傳輸資料是二進制的狀況,那就另當別論了。
但據我所知,大多數的通訊協議都是靠鍵盤能打出來的。



我覺得那些反對的理由以及反對的行為很奇怪

講到 http ,當然不只是連線的狀態以及斷線連線記憶體之類的而已
他還包含了 html css js 之類的解釋以及把html圖形化等等
所以 http 通訊協議是「很肥」的東西
只是因為http這種通訊協議太普及,瀏覽器、server軟體都唾手可得
所以會有http很方便的錯覺

如果有不服的話,可以試著去實作 http 通訊協議以及瀏覽器看看
server端還好
但client端在不用現成的libary的狀況下,應該會寫到死掉
尤其是解釋html然後圖形化的部份

當然有人可能會講http也可以傳json或是xml、圖片等等
但問題是,絕大多數的狀況都是html吧?

但telnet不一樣,telnet很單純的是就是把字元顯示在螢幕上
把打的字傳到server
頂多加上上色而已
那個很適合拿來當作寫網路程式的新手或是初學者的練習用作業



但簡單或複雜又怎麼樣呢?
如果真的寫過 socket 的server、client
就會發現最底層也不過就是那個樣子
至於最上面寫的,哪個好哪個不好的理由,其實都很虛幻

比起那些,在自己開發的軟體間的連線下,我比較喜歡自定通訊協議
那麼愛斷線就斷線
要維持住連線就維持住連線
要stateless就stateless
要效率也可以很有效率

還有,以自己的經驗,在多數狀況下,我會希望client端保持連線
而不是每傳輸一次資料就斷開



--
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 125.227.87.115
※ 文章代碼(AID): #1LiQscf6 (Linux)
※ 文章網址: https://www.ptt.cc/bbs/Linux/M.1437707686.A.A46.html
ofy: 如果我學的沒出錯,保持連線遠比建立連線要輕鬆容易1F 07/24 13:23
ofy: 當然可以做到混合是最好的,尤其是現在頻寬跟過去相比大上許多
ofy: 為了做到stateless,每次連線所送的session在現今網路可被忽略
ofy: HTTP/2 新特性 HTTP pipelining表示:發展倒退中???
ofy: 阿~要加上HTTP persistent connection
ofy: 然後是multiplexing
tjjh89017: 小弟看過jserv大大實作的簡易http server7F 07/24 16:13
tjjh89017: 真的覺得http超級麻煩Orz
filiaslayers: http server端應該比client簡單很多9F 07/24 16:57
filiaslayers: client端感覺像就在做編譯器啊...
abcdefghi: 我講的telnet是指 rfc 854, 不是 telnet 這個程式11F 07/24 20:55
abcdefghi: 我講的 http 是指 rfc2616, 不是指web browser和server
abcdefghi: 手寫簡單的http server讓常見的browser連線,或是手寫簡
abcdefghi: 單的browser去連常見的網站我也做過, 事情就事論事就可
abcdefghi: 以, 不需要執疑對方的經驗. 自定protocol是不錯的選擇,
abcdefghi: 但是最好先對既有作法的優缺點都分析清楚後再定比較好.
abcdefghi: 花了5分鐘左右google並測試一個簡單的http server, 全
abcdefghi: 部 187 行 c code, http://0rz.tw/CYzsE
EdwardGJLee: 用c寫沒什麼了不起,用 ps 寫才厲害:19F 07/25 06:15
EdwardGJLee: http://www.pugo.org:8080/
EdwardGJLee: 行數差不多。XD21F 07/25 06:17
lsc36: 寫RESTful不好嗎 別自己造輪子...22F 07/25 18:49
EdwardGJLee: 學習、練習的時候,自己造輪子是必要的。實戰另議!23F 07/26 14:19
EdwardGJLee: 當大家都被現成的框架框住時,就代表不會進步了!

--
※ 看板: xxxx9659 文章推薦值: 0 目前人氣: 0 累積人氣: 222 
分享網址: 複製 已複製
guest
x)推文 r)回覆 e)編輯 d)刪除 M)收藏 ^x)轉錄 同主題: =)首篇 [)上篇 ])下篇