一:tcp基本概念
二:tcp特點
三:tcp連線
一:tcp基本概念:
從計算機網路體系結構(五層協議如下)上講,運輸層向他上面的應用層提供通訊服務,即程序間的邏輯通訊。
應用層-- http協議
運輸層-- tcp協議
網路層-- ip協議
資料鏈路層--
物理層--
傳輸控制協議tcp是位於傳輸層的三種協議之一,其他兩種udp和流控制傳輸協議sctp和udp,tcp是可靠的,面向連線的協議--->可靠的通道,(udp不可靠,無連線)。sctp具有其它兩者共同優點
下圖為tcp/ip體系中的運輸層協議
二:tcp特點:
1)面向連線:即應用程式使用tcp協議前必須建立tcp連線。資料傳送完後必須釋放建立的連線。
2)連線只有兩個端點,每條連線只能是點對點一對一的。
3)可靠交付:無差錯,不丟失,不重複且按序到達。確認,重傳,檢錯,序號四種機制實現可靠通訊。
4)全雙工通訊:連線雙方均有傳送和接收快取,任何時候都可傳送。
5)面向位元組流:
三:tcp連線:
前面講過tcp連線兩個端點,連線的既不是主機,不是主機ip位址,不是應用程式,也不是運輸層協議埠,而是socket或插口,rfc793定義:埠號連線到ip位址即構成套接字。
tcp傳輸連線分三個階段:建立連線,資料傳送和釋放連線。
1)建立連線:採用c/s方式,主動發起連線的程序叫客戶,被動等待連線的叫伺服器。
建立過程如下,即我們熟知的三次握手:
2)資料傳送:tcp傳送單元為報文段。報文分首部,資料兩部分,收到後去掉首部。
若確認號為n,表明到虛耗n-1為止到所有資料都已正確收到。
3)釋放連線,即四次握手,此處不做多餘解釋。
注意很多時候我們在說的socket,也許有多種意思,比如:
我們平時說的最多的
socket實際上是對tcp/ip協議的封裝,socket本身並不是協議,而是乙個呼叫介面(api),通過socket,我們才能使用tcp/ip協議。 實際上,socket跟tcp/ip協議沒有必然的聯絡。socket
程式設計介面在設計的時候,就希望也能適應其他的網路協議。所以說,socket的出現 只是使得程式設計師更方便地使用tcp/ip協議棧而已,是對tcp/ip協議的抽象,從而形成了我們知道的一些最基本的函式介面,比如create、 listen、connect、accept、send、read和write等等。網路有一段關於socket和tcp/ip協議關係的說法比較容易理解:
「tcp/ip只是乙個協議棧,就像作業系統的執行機制一樣,必須要具體實現,同時還要提供對外的操作介面。這個就像作業系統會提供標準的程式設計介面,比如win32程式設計介面一樣,tcp/ip也要提供可供程式設計師做網路開發所用的介面,這就是socket程式設計介面。」
實際上,傳輸層的tcp是基於網路層的ip協議的,而應用層的http協議又是基於傳輸層的tcp協議的,而socket本身不算是協議,就像上面所說,它只是提供了乙個針對tcp或者udp程式設計的介面。socket是對埠通訊開發的工具,它要更底層一些.
TCP的簡單總結
1.tcp是面向連線的,兩台主機想要通過tcp則必須先建立連線 2.tcp提供了可靠性 reliability 當tcp想另一端傳送資料時,它要求對端返回乙個確認,如果沒有收到確認,tcp就會自動重傳資料並等待更長時間。注 tcp並不保證資料一定會被對方端點接收。如果不能成功傳送資料就會通知使用者,...
人工智慧不是單純的經驗和總結
人工智慧始於經驗,超於經驗 直到現在,還有很多人認為現在的人工智慧只意味著對現有知識的經驗和總結。其實近年基於深度神經網路的人工智慧,在解決問題的能力上早已超出簡單的經驗和總結,人工智慧始於經驗,超於經驗。人類智慧型也是始於經驗超於經驗 以前的人工智慧 在人工智慧發展史上,對現有可能性的經驗和總結,...
TCP協議總結
mss maximum segment size 只能出現在syn包中,通訊雙方在syn包和syn ack包中互相通告各自能接收的mss syn包不能攜帶data,占用seq ack包能攜帶data,攜帶data時占用seq,不攜帶data時不占用seq fin包能攜帶data,不論是否攜帶data...