我想我大概是唸電腦通訊網路唸到瘋掉了,
所以才會有這首網路狂想曲...

網路狂想曲


Server是可憐的,
因為它總是開著Passive Port等別人來連,
永遠不知道是不是真的有人來連,
還是無限漫長的等待...

Client是盲目的,
因為它天真地以為Server總是為它敞開大門,
即使對方已經不見了,
它總是要在好幾次的連線失敗後才承認對方不見了...

Connection是短暫的,
Three-way handshaking就能建立一個connection,
說兒戲卻不兒戲,
而結束也只不過是Four-way handshaking就說再見...

TCP是天方夜譚的,
Reliable只是一個負擔沉重的夢想
Flow control & congestion control更是遙不可及,
更別說retransmission和Acknowledge是多麼煩人的事情,
因為連繫這種事情本來就不可靠...

Protocol是嚴格且殘忍的,
所有的connection都必須按照protocol來,
不合規矩通通踢開
或許這才是最好的方式,
因為Server和Client才不會對未定義的事件而不知所措...

UDP相較之下是和藹可親的,
即使它是Transmit and pray
但是雙方都不需要有建立connection的負擔
也不用管對方是否收到,
因為收得到收不到,
全看對方運氣好不好或是它想不想收...

IP是值得信任的,
值得信任這句話本身就是個問號,
如果本身是可靠的就不需要加上值得兩個字
因為IP永遠只會跟你說try its best effort,
and no guarantee...

Layer Architecture只是逃避責任
把不想做的事情丟給下一層去做,
即使做錯了東西丟了責任都是下一層的事情,
這樣看來TCP還比較有人性一點,
丟了錯了TCP負責retransmit...

End point是不食人間煙火的,
它永遠只知道跟對方交談,
卻不知道這交談是經過多少人的努力才傳達對方,
如果連不到,
只會很生氣地說:死網路又給我斷線了...



可能很多人看不懂我在寫什麼,
網路說穿了,
只是把人與人之間的關係電腦化數位化,
上面所有的專有名詞,
你都可以在人與人之間的關係找到相對應的詞或是動作,
例如Layer Architecture就跟公司裡的分層架構很像...
電腦比較笨,
必須把人與人的關係簡化成讓電腦看得懂的規定或規則,

人或許比較聰明,
但是不見得能處理好所有人與人的關係,
因為人與人之間的關係本來就是很難很複雜的...

其實我寫的是人與人的關係,
所以才叫做狂想曲...



**Advanced reading:
TCP: Transport Control Protocol
IP: Internet Protocol
UDP: User Datagram Protocol
Protocol: Some rules for interaction between client and server
End point: The leaf node in the network Client: End point which uses services
Server: End point which provides services
arrow
arrow
    全站熱搜

    dbi1463 發表在 痞客邦 留言(0) 人氣()