今天再小玩了一下封包解析，發現資料連結層(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程式的應用。我想，也許可以利用這個來寫個即時通訊軟體。