推 abcdefghi: telnet要一直佔著tcp connection不放,真的不適合繼續用 07/21 11:13
推 abcdefghi: http是stateless喜歡佔住tcp或是一次就斷線都可以,serv 07/22 05:02
→ abcdefghi: er或client可以根據自己的情況選擇最適合的方式,但tel 07/22 05:03
→ abcdefghi: net就只能永遠佔住tcp來保持自己的state, ssh也是有同 07/22 05:05
→ abcdefghi: 樣的缺點. 07/22 05:05
推 abcdefghi: tcp有太多情況會斷線,NAT被reset,手機從3G切到wifi,電 07/23 07:13
→ abcdefghi: 腦進standby. 如果系統的連線數只有幾百個,那tcp確 07/23 07:18
→ abcdefghi: 實不怕被佔用,如果是幾萬人的同時在線上,那差異就很大 07/23 07:19
→ abcdefghi: 了,每個tcp連線OS都要花幾KB的記憶體來維持,一堆沒有在 07/23 07:22
→ abcdefghi: 動作的連線等於就是白白浪費記憶體,幫你找了別人的實驗 07/23 07:23
→ abcdefghi: http://0rz.tw/sLMr6 , websocket是不是爛東西要看使 07/23 07:24
→ abcdefghi: 用的地方,而且websocket並沒有要取代http,而是補足過去 07/23 07:30
→ abcdefghi: http在雙向傳送資料沒有效率的缺點,在一般的情況下,一 07/23 07:33
→ abcdefghi: 樣是用http. 07/23 07:49
在命令列打下面這三行指令,再多空一行
把中間的網站改成隨便一個網站
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端保持連線
而不是每傳輸一次資料就斷開