世貿網工班第九天
今天再小玩了一下封包解析,發現資料連結層(Ethernet or IEEE 802.3)屬於硬體裝置的通訊,所以看到的都是mac address互連,但也可以說這部份的資料都是在區網的資料。
今天開始講TCP、UDP。UDP稍微提一下就帶過去了,其他時間都在講TCP的部份。在講解的時候,老師用了很多怪異的例子,例如用小狗來比喻UDP,用大哥大姊來比喻TCP。在郵差來送信的時候,小狗汪汪叫了幾聲,然後郵差把信丟著就被嚇跑了。小狗就把信件給叨了進家裡隨意放置,代表UDP是一種不可靠的協定。而大哥大姊則會把家裡小弟小妹要送出的信件先檢番一番,不符規定的要要求他們重新再寫過一次,確定可以寄再寄出,而收進來的信也會一一的放置到小弟小妹專屬的信箱裡,這樣代表TCP是一種可靠的協定。
另外,老師在舉例來描述TCP時還用了蒼蠅頭,因為TCP在收到封包後會像貴賓一樣對待它,把他們分別安排至專屬的位置用餐,包括蒼蠅頭。像UDP就是客人進來全部集中到一桌,吃同樣的菜。
在tcp的連線模型時,一開始對於sequence和acknowledge兩個num有點頭大,其實是被搞混。簡單的說,發送的時候就是會送sequence num,而對方回應的時候會把收到的資料大小再加上接收到的sequence num當成acknowledge num回應回去。所以說,sequence就是代表此次發送的序號,而acknowledge則代表要求對方下次回應時的sequence。原本不懂tcp/ip的要看懂這段敘述,那真是厲害了。
另外學到一個新的,就是ctr+c送出的就是一種緊急封包。
概念大概是如此,不過tcp在可靠度控制的方法還有很多種,有一種叫go back N,另一種叫selected。當發生逾期狀況時,前者是會把第一個未回應封包後的封包全部再送一次,不管是不是有回應,而後者只會將沒有回應的封包再傳一次。簡單講是如此,不過我好像有些概念還是搞不太清楚。
跟tcp、udp相關的應用就是socket程式的設計,有看過小企鵝的書裡有寫到相關的應用,還沒實際試過,但之前令我焦慮的簡訊發送也是socket程式的應用。我想,也許可以利用這個來寫個即時通訊軟體。