本文是學習java Socket整理的資料,供參考。
應用層相當於OSI中的會話層,表示層,應用層。
區別參考:http://blog.chinaunix.net/uid-22166872-id-3716751.html
(1)序號:Seq序號,占32位,用來標識從TCP源端向目的端發送的字節流,發起方發送數據時對此進行標記。
(2)確認序號:Ack序號,占32位,只有ACK標志位為1時,確認序號字段才有效,Ack=Seq+1。
(3)標志位:共6個,即URG、ACK、PSH、RST、SYN、FIN等,具體含義如下:
(A)URG:緊急指針(urgent pointer)有效。
(B)ACK:確認序號有效。
(C)PSH:接收方應該盡快將這個報文交給應用層。
(D)RST:重置連接。
(E)SYN:發起一個新連接。
(F)FIN:釋放一個連接。
需要注意的是:
(A)不要將確認序號Ack與標志位中的ACK搞混了。
(B)確認方Ack=發起方Req+1,兩端配對。
Socket是應用層與TCP/IP協議族通信的中間軟件抽象層,它是一組接口。在設計模式中,Socket其實就是一個門面模式,它把復雜的TCP/IP協議族隱藏在Socket接口後面,對用戶來說,一組簡單的接口就是全部,讓Socket去組織數據,以符合指定的協議。
Socket連接建立和關閉,詳見:http://www.2cto.com/net/201310/251896.html
連接->傳輸數據->關閉連接
短連接是指SOCKET連接,發送數據,接收數據後,馬上斷開連接。
比如:
HTTP1.0默認是短連接,無狀態的,浏覽器和服務器每進行一次HTTP操作,就建立一次連接,但任務結束就中斷連接。 、
Http1.1默認是長連接
無狀態:協議對於事務處理沒有記憶能力;