TCP協議
==> TCP首部
??? 源端口號、目的端口號、位序號、位確認序號、首部長度、標志位、窗口大小、檢驗和、緊急指針和其它選項。
???
??? 一個IP地址和一個端口號也成為一個插口(socket)。插口對可唯一確定互聯網中每個TCP連接的雙方。
==> TCP連接的建立與終止
??? TCP是一個面向連接的協議,無論哪方向另一方發送數據之前,都必須先在雙方之間建立一條連接。
??? TCP連接的建立——三次握手。
??? TCP連接的終止——四次握手。這是由TCP的半關閉造成的。因為TCP是全雙工的,因此每個方向必須單獨的進行關閉。
==> 最大報文段長度MSS
??? MSS越大,允許每個報文段傳遞的數據越多,相對TCP和IP的首部有更高的利用率。
??? 有些情況下,MSS是可以在建立TCP連接時進行協商的選項,但是有些情況下不行 。
??? * 如果是本地網絡,TCP可以根據網絡外出接口處的MTU值減去固定的IP首部(20)和TCP長度(20),對于以太網,可以達到1460。
??? * 如果IP地址為非本地的,則MSS通常定為默認值536字節(允許20字節的IP首部和20字節的TCP首部以適合576字節的IP數據報)。
??? MSS讓主機限制另一端發送數據的長度,同時也能控制它自己發送數據報的長度,避免較小MTU發生分片。
==> TCP的半關閉
??? TCP連接的一端在結束它的發送后還能接收來自另一端數據(直到它也發送FIN)的能力,這就是所謂的半關閉。應用程序很少用到。
==> 復位報文段
??? * 不存在的端口(目的端口沒有進程監聽)。目的主機將對SYN請求返回一個RST報文段。(UDP則將產生一個端口不可達的信息)
??? * 異常終止。
??? * 檢測半打開的連接。
==> TCP服務器的設計
??? * 大多數TCP服務器的進程是并發的.
??? * 只有處于監聽的進程才能處理客戶端的連接請求.
??? * TCP服務器可以對本地IP地址進行限制,但是一般不能對遠程IP地址進行限制.
Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=561075