TCP協議詳解

TCP協議詳解。

    I,TCP數據段報文解釋捕獲.PNG

TCP協議詳解

1,tcp數據段頭部20(固定)+40(可變)字節構成,此數據由報頭偏移位構成,計算單位為四個字節
表示TCP報文段的首部長度,共4位,由于TCP首部包含一
個長度可變的選項部分,需要指定這個TCP報文段到底有多長。它指
出 TCP 報文段的數據起始處距離 TCP 報文段的起始處有多遠。該字
段的單位是32位(即4個字節為計算單位), 4位二進制最大表示15,
所以數據偏移也就是TCP首部最大60字節

2,源始port16位,范圍是0-65535


TCP協議詳解

        代理服務器常用以下端口:
(1). HTTP協議代理服務器常用端口號:80/8080/3128/8081/9080
(2). SOCKS代理協議服務器常用端口號:1080
(3). FTP(文件傳輸)協議代理服務器常用端口號:21
(4). Telnet(遠程登錄)協議代理服務器常用端口:23
HTTP服務器,默認的端口號為80/tcp(木馬Executor開放此端口);
HTTPS(securely transferring web pages)服務器,默認的端口號為443/tcp 443/udp;
Telnet(不安全的文本傳送),默認端口號為23/tcp(木馬Tiny Telnet Server所開放的端口);
FTP,默認的端口號為21/tcp(木馬Doly Trojan、Fore、Invisible FTP、WebEx、WinCrash和Blade 
Runner所開放的端口);
TFTP(Trivial File Transfer Protocol ),默認的端口號為69/udp;
SSH(安全登錄)、SCP(文件傳輸)、端口重定向,默認的端口號為22/tcp;
SMTP Simple Mail Transfer Protocol (E-mail),默認的端口號為25/tcp(木馬Antigen、Email
Password Sender、Haebu Coceda、Shtrilitz Stealth、WinPC、WinSpy都開放這個端口);
POP3 Post Office Protocol (E-mail) ,默認的端口號為110/tcp;
WebLogic,默認的端口號為7001;
Webshpere應用程序,默認的端口號為9080;
webshpere管理工具,默認的端口號為9090;
JBOSS,默認的端口號為8080;
TOMCAT,默認的端口號為8080;
WIN2003遠程登陸,默認的端口號為3389;
Symantec AV/Filter for MSE ,默認端口號為 8081;
Oracle 數據庫,默認的端口號為1521;
ORACLE EMCTL,默認的端口號為1158;
Oracle XDB( XML 數據庫),默認的端口號為8080;
Oracle XDB FTP服務,默認的端口號為2100;
MS SQL*SERVER數據庫server,默認的端口號為1433/tcp 1433/udp;
MS SQL*SERVER數據庫monitor,默認的端口號為1434/tcp 1434/udp;
QQ,默認的端口號為1080/udp
3,數據序號32位,TCP為發送的每一個字節都編一個號碼,這里存儲當前數據包數據第一個字節的序號,對應于wireshark(Seq)
    確認序號32位,為了安全,TCP告訴接受者希望他下次接到數據包的第一個字節的序號。對應于wireshark(Ack)
4,確認比特ACK—僅僅有當ACK=1時確認號字段才有效。當ACK=0時,確認號無效
正常通信,ACK號除了三次握手時,第一二次握手不帶ACK位,其余正常通信過程都應帶有ACK位。
?同步比特SYN—同步比特SYN置為1,就表示這是一個連接請求或連接接受報文,
只有三次握手前兩次才會使用。
    復位比特RST(Reset) —當RST=1時,表明TCP連接中出現嚴重差錯(如因為主機崩潰或其它原因),必須釋放連接,然后再又一次建立運輸連接
    終止比特FIN(FINal)—用來釋放一個連接。當FIN=1時,表明此報文段的發送端的數據已發送完成,并要求釋放運輸連接
5,窗體字段16位,窗體字段用來控制對方發送的數據量,單位為字節。TCP連接的一端依據設置的緩存空間大小確定自己的接收窗體大小,然后通知對方以確定對方的發送窗體的上限。
6,可選選項24位     最大報文段長度: Maxium Segment Size, MSS
     窗口擴大: Windows Scaling
     時間戳: Timestamps
II,TCP三次握手和四次握手
TCP協議詳解
三次握手.PNG
TCP過程.PNG
四次握手.PNG
三次握手:
   第一次握手:建立連接。客戶端發送連接請求報文段,將SYN位置為1,Sequence Number為x;然后,客戶端進入SYN_SEND狀態,等待服務器的確認;
   第二次握手:服務器收到SYN報文段。服務器收到客戶端的SYN報文段,需要對這個SYN報文段進行確認,設置Acknowledgment Number為x+1(Sequence Number+1);同時,自己自己還要發送SYN請求信息,將SYN位置為1,Sequence Number為y;服務器端將上述所有信息放到一個報文段(即SYN+ACK報文段)中,一并發送給客戶端,此時服務器進入SYN_RECV狀態;
   第三次握手:客戶端收到服務器的SYN+ACK報文段。然后將Acknowledgment Number設置為y+1,向服務器發送ACK報文段,這個報文段發送完畢以后,客戶端和服務器端都進入ESTABLISHED狀態,完成TCP三次握手。
四次揮手:
    第一次分手:主機1(可以使客戶端,也可以是服務器端),設置Sequence Number和Acknowledgment Number,向主機2發送一個FIN報文段;此時,主機1進入FIN_WAIT_1狀態;這表示主機1沒有數據要發送給主機2了;
   第二次分手:主機2收到了主機1發送的FIN報文段,向主機1回一個ACK報文段,Acknowledgment Number為Sequence Number加1;主機1進入FIN_WAIT_2狀態;主機2告訴主機1,我“同意”你的關閉請求;
   第三次分手:主機2向主機1發送FIN報文段,請求關閉連接,同時主機2進入LAST_ACK狀態;
   第四次分手:主機1收到主機2發送的FIN報文段,向主機2發送ACK報文段,然后主機1進入TIME_WAIT狀態;主機2收到主機1的ACK報文段以后,就關閉連接;此時,主機1等待2MSL后依然沒有收到回復,則證明Server端已正常關閉,那好,主機1也可以關閉連接了。
III,TCP有限狀態機
 CLOSED 沒有任何連接狀態
 LISTEN 偵聽狀態,等待來自遠方TCP端口的連接請求
 SYN-SENT 在發送連接請求后,等待對方確認
 SYN-RECEIVED 在收到和發送一個連接請求后,等待對方確認
 ESTABLISHED 代表傳輸連接建立,雙方進入數據傳送狀態
FIN-WAIT-1 主動關閉,主機已發送關閉連接請求,等待對方確認
FIN-WAIT-2 主動關閉,主機已收到對方關閉傳輸連接確認,等待對方發送關閉傳輸連接請求
TIME-WAIT 完成雙向傳輸連接關閉,等待所有分組消失
CLOSE-WAIT 被動關閉,收到對方發來的關閉連接請求,并已確認
 LAST-ACK 被動關閉,等待最后一個關閉傳輸連接確認,并等待所有分組消失
CLOSING 雙方同時嘗試關閉傳輸連接,等待對方確認

原創文章,作者:919022966,如若轉載,請注明出處:http://www.www58058.com/78578

(0)
919022966919022966
上一篇 2017-06-26 04:20
下一篇 2017-06-26 08:43

相關推薦

  • Nginx反向代理的常用調度算法

    upstream 調度算法 1.rr 按客戶端請求順序把客戶端的請求逐一分配到不同的后端的服務器,這相當于lvs中的rr算法。如果后端服務器巖機(默認情況下只檢測80端口,如果后端報502,404,403,503,還是會直接返給用戶),巖機服務器會被自動剔除,使用戶訪問不受影響,請求會分配給正常的服務器 2.weight(權重) 在輪詢算法的基礎上加上權重(…

    Linux干貨 2016-06-01
  • 《 Git 權威指南 》學習筆記

    這個沒辦法直接發博客了,篇幅太長,無法直接在 Blog 上排版了,直接發上 pdf 文檔了。 接 《LNAMP Shell 部署腳本》 博文的內容,線上測試系統的 Git 環境部署。 整個 Git 環境包括了:     Git / Gitweb     Gitolite / Gerrit &nbsp…

    Linux干貨 2015-10-27
  • 計算機的組成及其功能

        計算機是一種能接受和存儲信息,并按照存儲在其內部的程序對輸入的信息進行加工、處理,然后把處理結果輸出的高度自動化的電子設備。計算機是由運算器,控制器,存儲器,輸入裝置和輸出裝置五大部件組成,每一部件分別按要求執行特定的基本功能。如下圖所示: (1)  運算器或稱算術邏輯單元(Arithmetical and Logica…

    Linux干貨 2016-10-30
  • 第三周學習總結之用戶管理

    寫在前面 我們知道作為一個系統管理員,對系統內人員的管理是非常頻繁的,今天給張三添加某個權限,明天李四離職需要刪除賬號、回收權限,后天王五部門調動,都需要涉及到人員賬號的相應調整。因此用戶的管理就變得尤其重要。 用戶管理 Linux系統的用戶有普通用戶和特權用戶之分,特權用戶是可以執行特權操作的一個或一類用戶,而普通用戶則只能執行普通的操作,沒有特權操作權利…

    2017-12-19
  • N26-第九周作業-邢巖

    馬哥門徒-N26-邢巖 相信自己、勤奮努力、不斷總結!shell腳本練習需要重復、重復、再重復!那么,我就繼續來寫、寫、寫。 1、寫一個腳本,判斷當前系統上所有用戶的shell是否為可登錄shell(即用戶的shell不是/sbin/nologin);分別這兩類用戶的個數;通過字符串比較來實現; #******************************…

    Linux干貨 2017-04-03
  • Linux基礎——文件管理

    Linux基礎——文件管理 文件管理及常用命令詳解       Linux文件系統是以/為基本的倒置樹狀結構,我們來進一步學習下文件或者目錄的操作和管理命令:  目錄相關操作:cd、pwd、mkdir、rmdir 目錄及文件檢索:ls 復制、移動、刪除:cp、mv、rm…

    Linux干貨 2016-09-27
欧美性久久久久