計算機網絡tcp三次握手,快速掌握_計算機網絡_TCP_三次握手

雖然這個話題已經是老生常談了,隨手一搜資料一堆,但是讓人快速掌握,我認為應該有幾個概念先被明確指出,再放出那張大同小異的時序圖。

01關注的字段

探討三次握手問題前,不得不先了解TCP報文段中存在的這四個位置:

dd9ad47fe196c4ddc04c0a2555d6a0a4.png注意ACK和ack的不同之處

正因為ACK、SYN是標志位,因此在不同資料中可能會用類似于“不標出ACK”的方式來表示ACK=0的狀態,此時若再標出ack的值則坑會因字母相同令人混淆誤解。下面分別解釋四個字段的含義:

序號字段seq。TCP是面向字節流的(即TCP傳送時是逐個字節傳送的),所以TCP連接傳送的數據流中的每個字節都編上一個序號。序號字段的值指的是本報文段所發送的數據的第一個字節的序號。

例如,一報文段的序號字段值是301,而攜帶的數據共有100B,表明本報文段的數據的最后一個字節的序號是400,因此下一個報文段的數據序號應從401開始。

確認號字段ack。是期望收到對方的下一個報文段的數據的第一個字節的序號。若確認號為N,則表明到序號N-1為止的所有數據都已正確收到。

例如,B正確收到了A發送過來的一個報文段,其序號字段是501,而數據長度是200B(序號501~700),這表明B正確收到了A發送的到序號700為止的數據。因此B期望收到A的下一個數據序號是701,于是B在發送給A的確認報文段中把確認號置為701。

確認位ACK。只有當ACK=1時確認號字段才有效。當ACK=0時,確認號無效。

TCP規定,在連接建立后所有傳送的報文段都必須把ACK置1。

同步位SYN。同步SYN=1表示這是一個連接請求或連接接收報文。

當SYN=1,ACK=0時,表明這是一個連接請求報文,對方若同意建立連接,則在響應報文中使用SYN=1,ACK=1。即SYN=1表示這是一個連接請求或連接接收報文。

02連接的建立

ad971b3ce775db91cdefe29c79c56f3a.png四個字段的顏色已經被區分開

1:客戶機的TCP首先向服務器的TCP發送一個連接請求報文段。這個特殊的報文段中不含應用層數據,其首部中的SYN標志位被置為1。另外,客戶機會隨機選擇一個起始序號seq=x(連接請求報文不攜帶數據,但要消耗一個序號)。

2:服務器的TCP收到連接請求報文段后,如同意建立連接,就向客戶機發回確認,并為該TCP連接分配TCP緩存和變量。在確認報文段中,SYN和ACK位都被置為1,確認號ack字段的值為x+1,并且服務器隨機產生起始序號seq=y(確認報文不攜帶數據,但也要消耗一個序號)。

3:當客戶機收到確認報文段后,還要向服務器給出確認,并且也要給該連接分配緩存和變量。這個報文段的ACK標志位被置1,序號字段seq為x+1,確認號字段ack=y于1。該報文段可以攜帶數據,若不攜帶數據則不消耗序號。

可得這樣的結論:SYN與ACK標志當前的行為,而ack是上一次對方的seq加一,seq是上一次對方的ack

03連接的釋放

d3a9ffc4477dc449316fdb4b85fde983.png釋放連接時使用終止位FIN標記狀態

1:客戶機打算關閉連接時,向其TCP發送一個連接釋放報文段,并停止發送數據,主動關閉TCP連接,該報文段的FIN標志位被置1,seq=u,它等于前面已傳送過的數據的最后一個字節的序號加1(FIN報文段即使不攜帶數據,也要消耗一個序號)。TCP是全雙工的,即可以想象為一條TCP連接上有兩條數據通路。發送FIN報文時,發送FIN的一端不能再發送數據,即關閉了其中一條數據通路,但對方還可以發送數據。

2:服務器收到連接釋放報文段后即發出確認,確認號是ack=u+1,而這個報文段自己的序號是v,等于它前面已傳送過的數據的最后一個字節的序號加1。此時,從客戶機到服務器這個方向的連接就釋放了,TCP連接處于半關閉狀態。但服務器若發送數據,客戶機仍要接收,即從服務器到客戶機這個方向的連接并未關閉。

3:若服務器已經沒有要向客戶機發送的數據,就通知TCP釋放連接,此時其發出FIN=1的連接釋放報文段。

4:客戶機收到連接釋放報文段后,必須發出確認。在確認報文段中,ACK字段被置為1,確認號ack=w+1,序號seq=u+1。此時TCP連接還未釋放,必須經過時間等待計時器設置的時間2MSL后,A才進入連接關閉狀態。

關閉連接的特點是2、3階段都是由服務器端發送消息,此時ack是不變的。交替進行的信息交換過程,仍然滿足結論:ack是上一次對方的seq加一,seq是上一次對方的ack

04例題

(2011年統考真題)主機甲向主機乙發送一個(SYN=1,seq=11220)TCP段,期望與主機乙建立TCP連接,若主機乙接受該連接請求,則主機乙向主機甲發送的正確的TCP段可能是()。

A.(SYN=0,ACK=0,seq=11221,ack=11221)

B.(SYN=1,ACK=1,seq=11220,ack=11220)

C.(SYN=1,ACK=1,seq=11221,ack=11221)

D.(SYN=0,ACK=0,seq=11220,ack=11220)

根據前文說的結論,ack為上次對方seq+1只能選A or C,應答行為ACK應取1則選C(而狀態為建立連接 同步標志應取1更應選C)

舉報/反饋

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/385751.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/385751.shtml
英文地址,請注明出處:http://en.pswp.cn/news/385751.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Java高級工程師每日面試題精選,面試經歷分享

MySQL為何不選擇平衡二叉樹 既然平衡二叉樹解決了普通二叉樹的問題,那么mysql為何不選擇平衡二叉樹作為索引呢? 索引需要存儲什么 讓我們想一想,如果我們要把索引存起來,那么應該存哪些信息呢,它應該存儲三塊信息:…

計算機考研英語詞匯書,求助:有知道電腦背考研英語單詞的

2017考研英語復習進行到今天,相信大家對背單詞都不陌生,背單詞是每個學生都會頭疼的地方,背了忘、忘了背如此惡性循環,到最后記住的單詞卻沒有幾個。面對這樣的結果,都教授想說:你背單詞的方法用對了嗎?背…

Java面試題目,java關鍵字final

1 進程 進程與程序 操作系統之中最為通用的概念就是「進程」。與此相關的面試題以及各種技術優化策略也層出不窮,足以夠證明它對于理解操作系統中舉足輕重的地位。事實上,通過「進程」,程序員可以更為直觀的理解自己所開發的軟件&#xff0…

工作組無法訪問計算機用戶,工作組計算機無法訪問,詳細教您工作組計算機無法訪問怎么解決...

電腦用戶反映稱在局域網中,查看工作組計算機時說無法訪問,沒有權限使用網絡資源。就是雙擊“查看工作組計算機”時,提示“Workgroup無法訪問。” what the fuck !!怎么解決?(泄氣)下面,小編給大…

Java面試題目,java工程師成神之路

2. ZooKeeper 介紹 2.1. ZooKeeper 由來 正式介紹 ZooKeeper 之前,我們先來看看 ZooKeeper 的由來,還挺有意思的。 下面這段內容摘自《從 Paxos 到 ZooKeeper 》第四章第一節,推薦大家閱讀一下: ZooKeeper 最早起源于雅虎研究院…

音樂計算機融合課,融合信息技術的音樂課

上一節共讀,陳蕾老師帶我們學習了雷圣峰老師如何在一堂以“生活中的青花紋飾”為主題的美術課上搭建教學腳手架并展現了信息技術與美術學科的融合。一直以來,很多教師認為像美術、音樂這樣的藝術學科在融合信息技術上是有一些困難的,上一節共…

Java面試題目,極客時間免費課程

一、對Kafka的認識 1.Kafka的基本概念 2.安裝與配置 3.生產與消費 4.服務端參數配置 二、生產者 1.客戶端開發 2.原理分析 3.重要的生產者參數 三、消費者 1.消費者與消費組 2.客戶端開發 四、主題與分區 1.主題的管理 2.初識KafkaAdminCilent 3.分區的管理 4.如何…

w7重啟計算機打印機無法使用,win7系統電腦重啟打印機服務就會被關閉的解決方法...

很多小伙伴都遇到過win7系統電腦重啟打印機服務就會被關閉的困惑吧,一些朋友看過網上零散的win7系統電腦重啟打印機服務就會被關閉的處理方法,并沒有完完全全明白win7系統電腦重啟打印機服務就會被關閉是如何解決的,今天小編準備了簡單的解決…

Java面試題!centos安裝yum

技術焦慮 現在的技術圈子很火熱,任何技術點,任何知識,只要你肯搜索,都能找到資料。但是現在技術圈確實有一個不好的地方,就是販賣焦慮。這種販賣焦慮的點并不在于形式,而是一種普遍的心態。特別是對于那種…

2016年全國計算機技術與軟件,2016年的上半年的全國計算機技術與軟件專業技術資格(水平)考.doc...

2016年的上半年的全國計算機技術與軟件專業技術資格(水平)考.doc (1頁)本資源提供全文預覽,點擊全文預覽即可全文預覽,如果喜歡文檔就下載吧,查找使用更方便哦!19.90 積分2011年上半年全國計算機技術與軟件專業技術資格(水平)考試…

Java面試題!java面向對象程序設計答案

一、對Kafka的認識 1.Kafka的基本概念 2.安裝與配置 3.生產與消費 4.服務端參數配置 二、生產者 1.客戶端開發 必要的參數配置消息的發送序列化分區器生產者攔截器 2.原理分析 整體架構元數據的更新 3.重要的生產者參數 三、消費者 1.消費者與消費組 2.客戶端開發 必要的…

測試學生成績的軟件,《軟件測試-學生成績管理系統》.doc

宿遷學院軟件測試—學生成績管理系統姓名: *****班級:計算機(3)班學號:******系部: 三 系指導老師:*****成績:目錄目錄21引言31.1開發系統目標31.2開發系統背景31.3用戶需求31.4系統組成32功能要求42.1系統…

Java面試題,java培訓北京哪家好

一、公務員都不要35歲以上的,何況大公司 這讓很多人感到惶恐,現在職場上有一種現象:很多用人單位會在招聘信息上明確標注,年齡需在35歲以下。為什么有經驗、有人脈的職場中年人會如此遭“嫌棄”呢? 首先,…

計算機輔助外文文獻,計算機輔助夾具設計外文文獻.pdf

Computer-Aided Design 42 (2010) 1085–1094Contents lists available at ScienceDirectComputer-Aided Designjournal homepage: /locate/cadComputer aided fixture design: Recent research and trendsHui Wang a,?, Yiming (Kevin) Rong a,b , Hua Li b , Price Shaun ba…

Java面試題,java工程師求職簡歷

One:JVM實踐思維圖(完整版) Two: 走近Java 概述 Java技術體系Java發展史Java虛擬機家族:(Sun Classic/Exact VM、HotSpot VM、Mobile/Embedded VM、BEA JRockit/IBM J9 VM、BEA Liquid VM/Azul VM、Apache…

配電柜測試軟件,低壓配電柜測試方法及流程.docx

PAGE \* MERGEFORMAT6Newtech MS-E-01-SAT-Rev0018.0 測試記錄表格:安裝檢查設備編號: 參考圖紙:序號項目結果備注1安裝位置是否與設計圖紙一致合格 不合格2配電柜外觀是否完好合格 不合格3電纜進線口及出線口是否加絕緣防護合格 不合格4進線…

java高分面試指南:javamvc模式簡單案例

Spring面試高頻問題 SpringMVC面試高頻問題 MyBatis面試高頻問題 SpringBoot面試高頻題 SpringCloud面試高頻問題 Redis高級面試題 Dubbo高頻常問面試問題 Java虛擬機(JVM) MySQL數據庫高頻面試問題 Java高頻面試專題合集解析: 當然在這還有更…

智能不屬于計算機理論,討論:計算機如何能提出自己的理論

該樓層疑似違規已被系統折疊 隱藏此樓查看此樓作者: 沒事少抽煙 2006-8-28 13:201、如何定義“AI自己的理論”這個命題?AI是簡單的輸出幾個單詞還是提出具體的理論體系?----------------------------------------------------------------現在…

java高分面試指南:java單例模式雙重檢查

1. CAP 的由來 要理解 CAP,首先我們要清楚,為何會有人提出 CAP?他提出 CAP 是為了解決什么問題? 時間回到 1985 年,彼時,后來證明了 CAP 理論的 Lynch 教授此時給當時的 IT 界來了一記驚雷: …

win10計算機磁盤圖標,Win10 21H1怎么更換電腦磁盤的圖標標識

導語:每臺win10電腦的磁盤圖標都是一樣的,有什么辦法可以修改硬盤圖標呢?為了讓我們的電腦更具個性化,小編給大家分享下Win10 21H1怎么更換電腦磁盤的圖標標識。方法如下:手動配置.inf文件1、首先,將要設置為驅動器圖標的圖標文件(ico格式)復…