好了,我的初衷是學習websocket,但是發(fā)現(xiàn)自己對TCP/IP協(xié)議不是很清楚,覺得自己還是要好好了解一下,因此老套路嘍,先上網(wǎng)查一下啦!我找到這樣一本書:
《TCP/IP詳解》
本書一共有三卷,太長了,最后呢我發(fā)現(xiàn)一位總結(jié)寫的很好,好吧看總結(jié)吧!
http://blog.csdn.net/goodboy1881/article/category/204448
其中的一些概念只需要了解就好了,但是有的東西是要好好學習的:
比如說連接流程:
1.連接的建立
? ? ? ? ?在建立連接的過程之中,客戶端首先向服務(wù)器申請打開一個端口(用SYN段等于1的TCP報文),然后服務(wù)器端發(fā)回一個ACK報文通知客戶端請求報文收到,客戶端收到確認報文以后再次發(fā)出確認報文確認剛才服務(wù)器端發(fā)出的確認報文,至此,連接的建立完成。這就叫做三次握手(三次握手哦)。如果打算讓雙方都做好準備的話,一定要發(fā)送三次報文,而且只需要三次報文就可以了??梢韵胍?,如果再加上TCP的超時重傳機制,那么TCP就完全可以保證一個數(shù)據(jù)包被送到目的地。
2.結(jié)束連接
? ? ? ?TCP的連接是全雙工(可以同時發(fā)送和接收)連接,因此在關(guān)閉連接的時候,必須關(guān)閉傳和送兩個方向上的連接??蛻魴C給服務(wù)器一個FIN為1的TCP報文,然后服務(wù)器返回給客戶端一個確認ACK報文,并且發(fā)送一個FIN報文,當客戶機回復(fù)ACK報文后(四次握手),連接就結(jié)束了。
好啦。。。。很多東西還要自己琢磨啦。。。。