以下是上傳圖片文件時 , tcp的傳輸過程
15:38:07.695683 IP localhost.35648 > localhost.tproxy: Flags [S], seq 87768135, win 43690, options [mss 65495,sackOK,TS val 130193903 ecr 0,nop,wscale 7], length 0 15:38:07.695692 IP localhost.tproxy > localhost.35648: Flags [S.], seq 872635961, ack 87768136, win 43690, options [mss 65495,sackOK,TS val 130193903 ecr 130193903,nop,wscale 7], length 0 15:38:07.695699 IP localhost.35648 > localhost.tproxy: Flags [.], ack 1, win 342, options [nop,nop,TS val 130193903 ecr 130193903], length 0 15:38:07.695949 IP localhost.35648 > localhost.tproxy: Flags [.], seq 1:21846, ack 1, win 342, options [nop,nop,TS val 130193903 ecr 130193903], length 21845 15:38:07.695953 IP localhost.tproxy > localhost.35648: Flags [.], ack 21846, win 1365, options [nop,nop,TS val 130193903 ecr 130193903], length 0 15:38:07.696828 IP localhost.35648 > localhost.tproxy: Flags [.], seq 21846:87329, ack 1, win 342, options [nop,nop,TS val 130193903 ecr 130193903], length 65483 15:38:07.696833 IP localhost.tproxy > localhost.35648: Flags [.], ack 87329, win 2388, options [nop,nop,TS val 130193903 ecr 130193903], length 0 15:38:07.697173 IP localhost.35648 > localhost.tproxy: Flags [.], seq 87329:152812, ack 1, win 342, options [nop,nop,TS val 130193903 ecr 130193903], length 65483 15:38:07.697177 IP localhost.tproxy > localhost.35648: Flags [.], ack 152812, win 3411, options [nop,nop,TS val 130193903 ecr 130193903], length 0 15:38:07.697499 IP localhost.35648 > localhost.tproxy: Flags [P.], seq 152812:154298, ack 1, win 342, options [nop,nop,TS val 130193903 ecr 130193903], length 1486 15:38:07.697503 IP localhost.tproxy > localhost.35648: Flags [.], ack 154298, win 3625, options [nop,nop,TS val 130193903 ecr 130193903], length 0 15:38:07.698058 IP localhost.35648 > localhost.tproxy: Flags [F.], seq 154298, ack 243, win 350, options [nop,nop,TS val 130193903 ecr 130193903], length 0 15:38:07.698122 IP localhost.tproxy > localhost.35648: Flags [F.], seq 243, ack 154299, win 3625, options [nop,nop,TS val 130193903 ecr 130193903], length 0
三次握手的過程
客戶端===>服務器[S] 標誌位SYN 是1 , mss 65495 (每個包傳輸的最大數據部分是65495字節) seq序列號是87768135
服務器===>客戶端[S.] 標誌位SYN是1 , 標誌位ACK是1 , seq 序列號是872635961 , ack確認是 87768136 (上面seq+1)
客戶端===>服務器[.] 標誌位ACK是1
開始上傳文件:
客戶端===>服務器 seq 1:21846
服務器===>客戶端 ack確認收到 21846
客戶端===>服務器 seq 21846:87329
服務器===>客戶端 ack確認收到 87329
客戶端===>服務器 seq 87329:152812
服務器===>客戶端 ack確認收到 152812
客戶端===>服務器 seq 152812:154298
服務器===>客戶端 ack確認收到 154298
結束
這裏可以看到保證TCP連接的可靠性的幾種方式
1.數據包校驗,發送方計算校驗和,接收方結算校驗和,進行對比
2.應答機制,seq序列號與ack確認號
3.超時重傳機制,發送後啓動定時器,進行重傳
4.連接管理,三次和四次
5.對失序數據包重排序
6.流量控制和擁塞控制,使用滑動窗口協商大小