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