TCP協議三次握手四次揮手

2021-09-13 14:28:09 字數 1937 閱讀 6673

1.什麼是tcp協議

tcp協議是作用在傳輸層的傳輸控制協議

tcp 提供一種面向連線的、可靠的位元組流服務

在乙個 tcp 連線中,僅有兩方進行彼此通訊。廣播和多播不能用於 tcp

tcp 使用校驗和,確認和重傳機制來保證可靠傳輸

tcp 給資料分節進行排序,並使用累積確認保證資料的順序不變和非重複

tcp 使用滑動視窗機制來實現流量控制,通過動態改變視窗的大小進行擁塞控制

注意:tcp 並不能保證資料一定會被對方接收到,因為這是不可能的。tcp 能夠做到的是,如果有可能,就把資料遞送到接收方,否則就(通過放棄重傳並且中斷連線這一手段)通知使用者。因此準確說 tcp 也不是 100% 可靠的協議,它所能提供的是資料的可靠遞送或故障的可靠通知。

2.tcp協議與udp協議的關係

tcp與udp都是作用在傳輸層的兩種協議

udp 缺乏可靠性。udp 本身不提供確認,序列號,超時重傳等機制。udp 資料報可能在網路中被複製,被重新排序。即 udp 不保證資料報會到達其最終目的地,也不保證各個資料報的先後順序,也不保證每個資料報只到達一次

udp 資料報是有長度的。每個 udp 資料報都有長度,如果乙個資料報正確地到達目的地,那麼該資料報的長度將隨資料一起傳遞給接收方。而 tcp 是乙個位元組流協議,沒有任何(協議上的)記錄邊界。

udp 是無連線的。udp 客戶和伺服器之前不必存在長期的關係。udp 傳送資料報之前也不需要經過握手建立連線的過程。

udp 支援多播和廣播。

總結:tcp:面向連線,全雙工,半關閉,錯誤檢查,確認機制,資料恢復重傳,流量控制,擁塞控制,有序傳輸,可靠性低效率。例如:e-mail,file sharing,downloading,傳輸檔案

​ 小知識點:在區域網網路穩定的情況下採用udp協議可以同時滿足可靠性和高速度

​ 在網際網路上程序資料傳輸為了保證資料的完整性還是採用tcp比較合適

小知識點: sync半連線和accept全連線佇列

ss -lnt

可以通過下面兩個檔案檢視最大連線數

/proc/sys/net/ipv4/tcp_max_syn_backlog 未完成連線佇列大小,建議調整大小為1024以上

/proc/sys/net/core/somaxconn 完成連線佇列大小,建議調整大小為1024以上

3.tcp協議的三次握手與四次揮手

1.三次握手

在這裡插入描述

1.客戶端傳送syn=1,seq=x請求

2.伺服器傳送syn=1,ack=1,seq=y,ack=x+1 確認收到

3.客戶端傳送ack=1,seq=x+1,ack=y+1 同步收到

建立連線

syn=1請求同步, seq=x 傳送的包的序號x

ack=1確認請求 ,seq=y 傳送的包的序號y ack=x=1 希望收到下乙個包

ack=1確認請求 ,seq=x+1 傳送的包的序號是x+1,ack=y+1 希望收到下乙個包

連線建立

2.四次揮手

在這裡插入描述

四次揮手

1.客戶端傳送fin=1, seq=u

2.服務端傳送ack=1,seq=v ,ack =u+1

3.服務端傳送fin=1, ack=1 ,seq=w,ack=u+1

4.客戶端傳送ack=1,seq=u+1,ack=w+1

fin=1傳送結束請求, seq=u 傳送乙個u的包

ack=1確認請求 , seq=v 傳送乙個v的包, ack =u+1表示u這個包收到了

fin=1傳送結束請求, ack=1 確認結束請求 , seq=w傳送乙個w的包 , ack=u+1表示收到了u這個包

ack=1確認結束請求,seq=u+1 傳送乙個u+1的包 ,ack=w+1表示收到了w這個包

斷開連線

hope that this helps 。♪(・ω・)ノ

tcp協議三次握手 四次揮手

起初,伺服器和客戶端都為closed狀態。在通訊開始前,雙方都得建立各自的傳輸控制塊 tcb 伺服器建立完tcb後遍進入listen狀態,此時準備接收客戶端發來的連線請求。第一次握手 客戶端向服務端傳送連線請求報文段。該報文段的頭部中syn 1,ack 0,seq x。請求傳送後,客戶端便進入syn...

TCP協議三次握手四次揮手

tcp有哪些過程?a.建立連線 b.資料傳輸 c.終止連線 tcp三次握手和四次揮手的過程?syn,ack是什麼?syn 請求建立連線 含有同步序列號的標誌位的資料,tcp建立連線時,將這個 位 置1 ack 針對syn的確認應答 fin是什麼?fin 傳送端完成傳送任務 位 當tcp完成資料傳輸需...

TCP協議三次握手,四次揮手

乙個tcp連線的建立是通過三次握手來實現的 假如伺服器b和客戶機a通訊。當a要和b通訊時,首先a先向b傳送乙個syn標記的包,seq x為這個包的序列號 x一般為1 以此為這個包進行乙個標識,a告訴b請求建立連線。注意 乙個syn包就是僅syn標記設為1的tcp包,只有當b受都a發來的syn包,才可...