首先先了解序列號,確認好和標誌位
序列號seq佔4個位元組,用來標記資料段的順序,tcp把連線中傳送的所有資料位元組都編上乙個序號,第乙個位元組的編號由本地隨機產生,給位元組編上序號後,就給每乙個報文段指派乙個序號,序列號seq就是這個報文段中的第乙個位元組的資料編號。
確認號ack佔4個位元組,期待收到對方下乙個報文段的第乙個資料位元組的序號,序列號表示報文段攜帶資料的第乙個位元組的編號,而確認號指的是期望接受到下乙個位元組的編號,因此擋牆報文段最後乙個位元組的編號+1即是確認號。
##3. 確認ack
佔1個位元位,僅當ack=1,確認號字段才有效。ack=0,確認號無效。
同步syn連線建立時用於同步序號。當syn=1,ack=0表示:這是乙個連線請求報文段。若同意連線,則在響應報文段中使用syn=1,ack=1.因此,syn=1表示這是乙個連線請求,或連線接收報文,syn這個標誌位只有在tcp建立連線
才會被置為1,握手完成後syn標誌位被置為0.
終止fin表示關閉連線請求,為1時有效
面試題:1.為什麼需要三次握手,兩次不可以嗎?或者四次、五次可以嗎? 我們來分析一種特殊情況,如果是兩次握手,假設客戶端請求建立連線,發給伺服器syn包等待伺服器確認,伺服器接收到syn包後,(假設兩次握手)會給客戶端傳送syn包和ack包確認連線請求,這是伺服器認為連線已經建立,但是無法確認客戶端是否收到請求,如果傳送的資料在傳送過程中丟失,客戶端會認為連線沒有建立,會進行重傳。假設每次傳送的資料一直在丟失,客戶端一直syn,伺服器就會產生多個無效連線,占用資源,這時候伺服器就會掛掉,這種現實就是「syn的洪水攻擊」;而對於四次、五次握手而言,三次握手已經足夠,多餘的握手次數會降低連線的效率和速度。
總結:第三次握手是為了防止:如果客戶端遲遲沒有收到伺服器返回確認報文,這時會放棄連線,重新啟動一條連線請求,但問題是:伺服器不知道客戶端沒有收到,所以他會收到兩個連線,浪費連線開銷。如果每次都是這樣,就會浪費多個連線開銷。
客戶端傳送fin後,進入終止等待狀態,伺服器收到客戶端連線釋放報文段後,就立即給客戶端傳送確認,伺服器就進入close_wait狀態,此時tcp伺服器程序就通知高層應用程序,因而從客戶端到伺服器的連線就釋放了。此時是「半關閉狀態」,即客戶端不可以傳送給伺服器,伺服器可以傳送給客戶端。
此時,如果伺服器沒有資料報傳送給客戶端,其應用程式就通知tcp釋放連線,然後伺服器端傳送給客戶端連線釋放資料報文,並等待確認。客戶端傳送確認後,進入time_wait狀態,但是此時tcp連線還沒有釋放,然後經過等待計時器設定的2msl後,才進入到closed狀態
為什麼需要2msl的時間 首先,msl即maximum segment lifetime,就是最大報文生存時間,是任何報文在網路上的存在的最長時間,超過這個時間報文將被丟棄。《tcp/ip詳解》中是這樣描述的:msl是任何報文段被丟棄前在網路內的最長時間。rfc 793中規定msl為2分鐘,實際應用中常用的是30秒、1分鐘、2分鐘等。
tcp的time_wait需要等待2msl,當tcp的一端發起主動關閉,三次揮手完成後傳送第四次揮手的ack包後就進入這個狀態,等待2msl時間主要目的是:防止最後乙個ack包對方沒有收到,那麼對方在超時後將重發第三次揮手的fin包,主動關閉端接收到重發的fin包後可以再發乙個ack應答包。在time_wait狀態時兩端的埠不能使用,要等到2msl時間結束才可以繼續使用。當連線處於2msl等待階段時任何遲到的報文段都將被丟棄。
為什麼時三次握手而不是四次、五次或者六次如果是三次揮手,那麼只能將第二次揮手和第三次揮手合併,但這樣合併是有問題。第二次伺服器端傳送確認報文只是確認客戶端發來的端來連線請求,但不代表自身的資料傳送完畢。乙個方向發來端來連線請求,說明傳送方的資料已經傳送完畢,但被動關閉放的資料可能還沒有全部傳送完畢,所以應該等待被動關閉方將資料全部傳送完畢再關閉連線,即傳送第三次揮手
http與https介紹 超文字傳輸協議http協議被用於在web瀏覽器和**伺服器之間傳遞資訊,http協議以明文方式傳送內容,不提供任何方式的資料加密,如果攻擊者擷取了web瀏覽器和**伺服器之間的傳輸報文,就可以直接讀懂其中的資訊,因此,http協議不適合傳輸一些敏感資訊,比如:信用卡號、密碼等支付資訊。
為了解決http協議的這一缺陷,需要使用另一種協議:安全套接字層超文字傳輸協議https,為了資料傳輸的安全,https在http的基礎上加入了ssl/tls協議,ssl/tls依靠證書來驗證伺服器的身份,並為瀏覽器和伺服器之間的通訊加密。
https協議是由ssl/tls+http協議構建的可進行加密傳輸、身份認證的網路協議,要比http協議安全
https和http的主要區別https的加密機制是一種共享金鑰加密和公開金鑰加密的混合加密機制。
tcp提供一種面向連線的、可靠的的位元組流服務。其中,面向連線意味著兩個使用tcp的應用(通常是乙個客戶和乙個伺服器)在彼此交換資料之前必須先建立乙個tcp連線。在乙個tcp連線中,僅有兩方進行彼此通訊;而位元組流服務意味著兩個應用程式通過tcp鏈結交換8bit位元組構成的位元組流,tcp不在位元組流中插入記錄識別符號。
對於可靠性,tcp通過以下方式來保證:
tcp (transmission control protocol)和udp(user datagram protocol)協議屬於傳輸層協議,它們之間的區別包括:
(3). tcp/ip鏈結建立起來後,瀏覽器向伺服器傳送http請求;
(4). 伺服器接收到這個請求,並根據路徑引數對映到特定的請求處理器進行處理,並將處理結果及相應的檢視返回給瀏覽器;
(5). 瀏覽器解析並渲染檢視,若遇到對js檔案、css檔案及等靜態資源的引用,則重複上述步驟並向伺服器請求這些資源;
(6). 瀏覽器根據其請求到的資源、資料渲染頁面,最終向使用者呈現乙個完整的頁面。
http請求結構: 請求方式 + 請求uri + 協議及其版本
http響應結構: 狀態碼 + 原因短語 + 協議及其版本
計算機網路9 計算機網路效能
1.網路效能的衡量指標 2.速率 3.頻寬 4.延遲 5.丟包率 6.時延頻寬積 7.吞吐率 網路效能的好壞可以由網路的速率 頻寬 延遲 丟包率 網路頻寬積 吞吐率等方面來判斷,下面讓我們一一詳細介紹。速率 資料率 data rate 也稱 資料傳輸速率或位元率 bit rate 指的是 單位時間 ...
計算機網路 計算機網路的效能
目錄 1.網路效能的衡量指標 2.速率 3.頻寬 4.延遲 5.丟包率 6.時延頻寬積 7.吞吐率 網路效能的好壞可以由網路的速率 頻寬 延遲 丟包率 網路頻寬積 吞吐率等方面來判斷,下面讓我們一一詳細介紹。速率 資料率 data rate 也稱 資料傳輸速率或位元率 bit rate 指的是 單位...
計算機網路學習 計算機網路效能
出自 1.網路效能的衡量指標 2.速率 3.頻寬 4.延遲 5.丟包率 6.時延頻寬積 7.吞吐率 網路效能的好壞可以由網路的速率 頻寬 延遲 丟包率 網路頻寬積 吞吐率等方面來判斷,下面讓我們一一詳細介紹。速率 資料率 data rate 也稱 資料傳輸速率或位元率 bit rate 指的是 單位...