国产欧美另类精品又又欠钱_免费自慰AV_免费观看全部A片大全不卡_国产成人综合久久精品小说,Chinese 中国 XXXX 乱子 a,免费AV无码一区二区,国产三级久久,91在线无,免费黄片视频观看,亚洲国产精品人人做人人爱,中文一区在线

南京軟件定制開發(fā)

南京傾心軟件歡迎您訪問本站

13605185909

新聞資訊

NEWS CENTER
欄目導航

南京軟件開發(fā)之計算機網(wǎng)絡協(xié)議

發(fā)布時間:Mar 18, 2021         已有 人瀏覽

計算機網(wǎng)絡協(xié)議

操作系統(tǒng)概念

  操作系統(tǒng):(Operating System,,簡稱OS)是管理和控制計算機硬件與軟件資源的計算機程序,是直接運行在“裸機”上的最基本的系統(tǒng)軟件,,任何其他軟件都必須在操作系統(tǒng)的支持下才能運行,。

注:計算機(硬件)---->OS----->應用軟件

互聯(lián)網(wǎng)的相關概念

  • 計算機網(wǎng)絡: 由若干節(jié)點和連接這些節(jié)點的鏈路組成,網(wǎng)絡中的節(jié)點可以是計算機,、集線器,、交換機、或路由器等,;
  • 網(wǎng)絡之間可以通過路由器相互連接,,這就構成了一個更大范圍的計算機網(wǎng)路,這樣的網(wǎng)路稱為互連網(wǎng),,因此互連網(wǎng)是網(wǎng)路的網(wǎng)路,;
  • 因特網(wǎng)(互聯(lián)網(wǎng)): 全球最大的特定互連網(wǎng);
    在這里插入圖片描述
  • 路由器(Router),,是連接因特網(wǎng)中各局域網(wǎng),、廣域網(wǎng)的設備,它會根據(jù)信道的情況自動選擇和設定路由,,以最佳路徑,,按前后順序發(fā)送信號。
  • 路由器是互聯(lián)網(wǎng)絡的樞紐,,“交通警察”,。路由和交換機之間的主要區(qū)別就是交換機發(fā)生在OSI參考模型第二層(數(shù)據(jù)鏈路層),而路由發(fā)生在第三層,,即網(wǎng)絡層,。這一區(qū)別決定了路由和交換機在移動信息的過程中需使用不同的控制信息,所以說兩者實現(xiàn)各自功能的方式是不同的,。
  • 路由器(Router)又稱網(wǎng)關設備(Gateway)是用于連接多個邏輯上分開的網(wǎng)絡,,所謂邏輯網(wǎng)絡是代表一個單獨的網(wǎng)絡或者一個子網(wǎng)。當數(shù)據(jù)從一個子網(wǎng)傳輸?shù)搅硪粋€子網(wǎng)時,,可通過路由器的路由功能來完成。因此,,路由器具有判斷網(wǎng)絡地址和選擇IP路徑的功能,。
  • 交換機是將不同IP地址的電腦連在一起,,共享一根網(wǎng)線;路由器是將同一個IP給不同的電腦使用,,就像一條大路分成很多條小路,。一句話,路由器用于連接內網(wǎng)和外網(wǎng),,將內網(wǎng)的數(shù)據(jù)包通過路由功能轉發(fā)到外網(wǎng),,實現(xiàn)內網(wǎng)和外網(wǎng)的互通;交換機用于連接內網(wǎng)的終端,,使用了同一個網(wǎng)段,,比如192.168.1.0,不同主機之間交換數(shù)據(jù)通過MAC地址識別,。兩個主機通信,,首先發(fā)送ARP數(shù)據(jù)包,就IP地址轉換為MAC地址才能進行相互通信,。(交換機沒有開關,,路由器有開關)
    [外鏈圖片轉存失敗(img-jrPhQaXW-1565255927613)(01img/003.png)]

互聯(lián)網(wǎng)組成

基本組成:

  • ①邊緣部分: 由所有連接在互聯(lián)網(wǎng)上的主機組成,這部分是用戶直接使用的,,用來進行通信(傳送數(shù)據(jù),,音頻或視頻)和資源共享;
  • ②核心部分: 由大量網(wǎng)絡和連接這些網(wǎng)絡的路由器 組成,,這部分是為邊緣部分提供服務的(提供連通性和交換),;
    [外鏈圖片轉存失敗(img-6fSY25xb-1565255927620)(01img/004.png)]
    [外鏈圖片轉存失敗(img-dzSpn768-1565255927623)(01img/005.png)]
    [外鏈圖片轉存失敗(img-VmhSjhqC-1565255927627)(01img/006.png)]

計算機網(wǎng)絡的性能指標

[外鏈圖片轉存失敗(img-i6iC7sYJ-1565255927630)(01img/007.png)]
速率

  • 網(wǎng)絡技術中的速率是指每秒鐘傳輸?shù)谋忍財?shù)量,稱為數(shù)據(jù)率或比特率,,速率的單位是bit/s,,或b/s(比特每秒);
  • 速率較高時,,就可以使用kb/s,,Mb/s,Gb/s,,Tb/s,,人們現(xiàn)在所說的10M網(wǎng)速,其實是10Mb/s,;
  • 360等可以顯示網(wǎng)速的軟件,,測試你電腦的那個網(wǎng)速,這里單位是B/秒,,大寫的B是字節(jié)(byte),,8bit = 1byte,也就是說如果測速為3.82MB/s,,則下載速率為3.82 * 8Mb/s,。

帶寬

  • 帶寬用來表示網(wǎng)絡通信線路傳輸數(shù)據(jù)的能力(數(shù)字信道所能傳送的最高數(shù)據(jù)率),,即最高速率;
  • 比如說家里使用ADSL撥號,,有4M帶寬,、8M帶寬,這里說的帶寬就是你訪問Internet的最高帶寬,,你家里的帶寬由電信運營商控制,;

吞吐量

  • 吞吐量表示在單位時間內通過某個網(wǎng)絡或接口的數(shù)據(jù)量,包括全部上傳和下載的流量,;
  • 吞吐量受網(wǎng)絡帶寬或網(wǎng)絡額定速率的限制,,計算機的網(wǎng)卡如果連接交換機,網(wǎng)卡就可以工作在全雙工模式,,即能夠同時接收和發(fā)送數(shù)據(jù),;如果計算機的網(wǎng)卡連接的是集線器,網(wǎng)卡就只能工作在半雙工模式,,即不能同時發(fā)送和接收數(shù)據(jù),;

[外鏈圖片轉存失敗(img-IxvNejax-1565255927636)(01img/008.png)]
時延

  • 時延(delay)是指數(shù)據(jù)(一個數(shù)據(jù)包或bit)從網(wǎng)絡的一段傳送到另一端所需要的時間,是一個很重要的性能指標,;
  • 時延包括: 發(fā)送時延,、傳播時延、處理時延,、排隊時延,;(數(shù)據(jù)在網(wǎng)絡中經(jīng)歷的的總時延就是這四種時延的累加和);

發(fā)送時延
[外鏈圖片轉存失敗(img-jki67E8q-1565255927638)(01img/009.png)]
傳播時延

  • 傳播時延是是電磁波在信道中傳播一定的距離要花費的時間,;
    [外鏈圖片轉存失敗(img-ry0Rh83n-1565255927639)(01img/010.png)]

排隊時延和處理時延
[外鏈圖片轉存失敗(img-RWCtyZb3-1565255927642)(01img/011.png)]

時延帶寬積
[外鏈圖片轉存失敗(img-KqXEDERp-1565255927642)(01img/012.png)]

往返時間

  表示從發(fā)送端發(fā)送數(shù)據(jù)開始,,到發(fā)送端接收到來自接收端的確認(發(fā)送端收到確認立即發(fā)送確認),總共經(jīng)歷的時間,;

利用率
[外鏈圖片轉存失敗(img-aHxuyVtf-1565255927645)(01img/013.png)]

網(wǎng)絡通信原理

互聯(lián)網(wǎng)的本質就是一系列的網(wǎng)絡協(xié)議

協(xié)議: 是網(wǎng)絡中計算機或設備之間進行通信的一系列規(guī)則的集合,。網(wǎng)絡協(xié)議的作用主要有兩個:一是建立對等層之間的虛擬通信,二是實現(xiàn)層次之間的無關性,。

協(xié)議棧: 在網(wǎng)絡中,,為了完成通信,必須使用多層上的多種協(xié)議,。這些協(xié)議按照層次順序組合在一起,,構成了協(xié)議棧(Protocol Stack),也稱為協(xié)議族(Protocol Suite),。

層次間的無關性: 所謂層次間無關性,,就是指較高層次和相鄰的相低層次進行通信時,只是利用較低層次提供的接口和服務,,而不需了解底層實現(xiàn)該功能所采用的算法和協(xié)議的細節(jié),;較低層次也僅是使用從高層系統(tǒng)傳送來的參數(shù)和控制信息,,這就是層次間的無關性。

互聯(lián)網(wǎng)兩大要素

(1)底層的物理連接介質,,是為通信鋪好道路的

(2)一套統(tǒng)一的通信標準---->互聯(lián)網(wǎng)通信協(xié)議(計算機界的英語)

OSI參考模型以及TCP/IP四層模型、五層協(xié)議

互聯(lián)網(wǎng)協(xié)議按照功能不同分為osi七層或tcp/ip五層或tcp/ip四層
[外鏈圖片轉存失敗(img-5klWjqsi-1565255927649)(01img/014.png)]
[外鏈圖片轉存失敗(img-MjGkOTCQ-1565255927652)(01img/015.png)]
[外鏈圖片轉存失敗(img-3rCFWRSk-1565255927653)(01img/016.png)]
[外鏈圖片轉存失敗(img-Ytow7pmb-1565255927655)(01img/017.png)]
用戶感知到的只是最上面一層應用層,,自上而下每層都依賴于下一層,,所以我們從最下一層開始切入,比較好理解

  用戶在用戶層輸入命令(數(shù)據(jù)),,到傳輸層包上tcp協(xié)議頭,,再到網(wǎng)絡層包裹上ip頭,再到數(shù)據(jù)鏈路層包上以太網(wǎng)頭,,通過client物理層經(jīng)過線路被server物理層接收,,然后一層層反解到server的應用層,server應用層拿到命令后請求操作系統(tǒng)去調用硬盤里面的數(shù)據(jù),,最后再返回到數(shù)據(jù)層,。

數(shù)據(jù)(可以加http協(xié)議等)----》傳輸層(包上tcp/udp協(xié)議)----》網(wǎng)絡層(包上ip協(xié)議)----》數(shù)據(jù)鏈接層(包上以太網(wǎng)協(xié)議)----》物理層

1、物理層

  底層物理連接介質,。負責發(fā)送電信號高電壓對應數(shù)字1,,低電壓對應數(shù)字0。兩個物理層通過光纜電纜雙絞纜等介質連接

2,、數(shù)據(jù)連接層

  數(shù)據(jù)鏈路層的功能:定義了電信號的分組方式

ethernet規(guī)定
  一組電信號構成一個數(shù)據(jù)包,,叫做‘幀’
  每一數(shù)據(jù)幀分成:報頭head(固定18個字節(jié))和數(shù)據(jù)data兩部分

數(shù)據(jù)包的具體內容
  head長度+data長度=最短64字節(jié),最長1518字節(jié),,超過最大限制就分片發(fā)送

mac地址(網(wǎng)卡的地址,,接入internet的設備都必須有網(wǎng)卡,即可找到某個具體的設備):
  head中包含的源和目標地址由來:ethernet規(guī)定接入internet的設備都必須具備網(wǎng)卡,,發(fā)送端和接收端的地址便是指網(wǎng)卡的地址,,即mac地址

廣播:

  有了mac地址,同一網(wǎng)絡內的兩臺主機就可以通信了(一臺主機通過arp協(xié)議獲取另外一臺主機的mac地址,,該主機再回應時就不用吼了,,交換機的‘學習’特性)
[外鏈圖片轉存失敗(img-chuX6AUc-1565255927656)(01img/018.png)]
pc1通過廣播方式發(fā)送以太網(wǎng)包給pc2,pc3,pc4,pc5,大家收到pc1發(fā)來的包,,拆開后如果發(fā)現(xiàn)不是自己的就丟棄,,是自己的就響應,并返回給pc1自己的mac地址,。

3,、網(wǎng)絡層

網(wǎng)絡層功能: 引入一套新的地址用來區(qū)分不同的廣播域/子網(wǎng),這套地址即網(wǎng)絡地址
IP協(xié)議

  規(guī)定網(wǎng)絡地址的協(xié)議叫ip協(xié)議,,它定義的地址稱之為ip地址,,廣泛采用的v4版本即ipv4,,它規(guī)定網(wǎng)絡地址由32位2進制表示
范圍0.0.0.0-255.255.255.255

  一個ip地址通常寫成四段十進制數(shù),例:172.16.10.1

標識地址的方式:

  ip+mac就能標識全世界范圍內獨一無二的一臺計算機
  ip+mac+port就能標識全世界范圍內獨一無二的一個基于網(wǎng)絡通信的應用軟件

  url地址:標識全世界范圍內獨一無二的一個資源

ARP協(xié)議:

  arp協(xié)議功能:廣播的方式發(fā)送數(shù)據(jù)包,,獲取目標主機的mac地址
  協(xié)議工作方式:每臺主機ip都是已知的

  例如:主機172.16.10.10/24訪問172.16.10.11/24

  一:首先通過ip地址和子網(wǎng)掩碼區(qū)分出自己所處的子網(wǎng),,子網(wǎng)掩碼固定為255.255.255.0(1111 1111.1111 1111.1111 1111.0000 0000),即取ip的前三段,,以此判斷是不是在同一個子網(wǎng)

  場景 數(shù)據(jù)包地址
  同一子網(wǎng) 目標主機mac,,目標主機ip
  不同子網(wǎng) 網(wǎng)關mac,目標主機ip

  二:分析172.16.10.10/24與172.16.10.11/24處于同一網(wǎng)絡(如果不是同一網(wǎng)絡,,那么下表中目標ip為172.16.10.1,通過arp獲取的是網(wǎng)關的mac)
  源mac     目標mac     源ip            目標ip             數(shù)據(jù)部分
  發(fā)送端主機   發(fā)送端mac   FF:FF:FF:FF:FF:FF   172.16.10.10/24 172.16.10.11/24     數(shù)據(jù)

  三:這個包會以廣播的方式在發(fā)送端所處的自網(wǎng)內傳輸,,所有主機接收后拆開包,發(fā)現(xiàn)目標ip為自己的,,就響應,,返回自己的mac

傳輸層

傳輸層的由來: 網(wǎng)絡層的ip幫我們區(qū)分子網(wǎng),以太網(wǎng)層的mac幫我們找到主機,,然后大家使用的都是應用程序,,你的電腦上可能同時開啟qq,暴風影音,,等多個應用程序,,那么我們通過ip和mac找到了一臺特定的主機,如何標識這臺主機上的應用程序,,答案就是端口,,端口即應用程序與網(wǎng)卡關聯(lián)的編號。

傳輸層功能: 建立端口到端口的通信

補充: 端口范圍0-65535,,0-1023為系統(tǒng)占用端口,,1024-65535給軟件用

tcp協(xié)議(可靠傳輸):

以太網(wǎng)頭-------ip 頭---------tcp頭---------數(shù)據(jù)

udp協(xié)議(不可靠傳輸):

以太網(wǎng)頭-------ip 頭---------udp頭---------數(shù)據(jù)

通信過程、數(shù)據(jù)傳輸

通信過程:

[外鏈圖片轉存失敗(img-thM46iSt-1565255927658)(01img/019.png)]

注意: MAC地址由48位二進制數(shù)組成,,在Windows操作系統(tǒng)命令提示符下,, 輸入"ipconfig / all"能夠看到計算機網(wǎng)卡的MAC地址,物理地址… : C8-60-00-2E-6E-EB,,這里顯示的是十六進制表示的MAC地址,,使用MA和MB代替MAC地址是為了簡化說明。
[外鏈圖片轉存失敗(img-DodLEVRK-1565255927658)(01img/020.png)]
[外鏈圖片轉存失敗(img-7z6Eu0gv-1565255927660)(01img/021.png)]
[外鏈圖片轉存失敗(img-eeIX0FAd-1565255927662)(01img/022.png)]

  • 目標MAC地址決定了數(shù)據(jù)幀下一跳由哪個設備接收,;

  • 目標IP地址決定了數(shù)據(jù)包最終到達那個計算機,;

  • 不同的網(wǎng)絡數(shù)據(jù)鏈路層使用不同的協(xié)議,幀格式也不相同,,路由器在不同網(wǎng)絡轉發(fā)數(shù)據(jù)包,,需要將數(shù)據(jù)包重新封裝;

數(shù)據(jù)封裝和解封(數(shù)據(jù)傳輸)
[外鏈圖片轉存失敗(img-GdK4Ewuj-1565255927665)(01img/023.png)]
[外鏈圖片轉存失敗(img-KYGH0m8s-1565255927666)(01img/024.png)]
[外鏈圖片轉存失敗(img-3DT30fu1-1565255927667)(01img/025.png)]
[外鏈圖片轉存失敗(img-7IF7HXPi-1565255927669)(01img/026.png)]

小結

[外鏈圖片轉存失敗(img-7mlYIBwN-1565255927670)(01img/027.png)]
網(wǎng)絡通信協(xié)議的作用是負責在網(wǎng)絡上建立通信通道和控制通過通道的信息流的規(guī)則。為了進行網(wǎng)絡通信,,通信雙方必須遵守通信協(xié)議
[外鏈圖片轉存失敗(img-hwd115LE-1565255927672)(01img/028.png)]
Telnet協(xié)議

  Telnet是TCP/IP中的一種應用協(xié)議,,可以為終端仿真提供支持??墒褂脩暨B接到主機上,,使主機響應起來就像它直接連接在終端上一樣。Telnet在發(fā)送端和接收端使用TCP的23號端口以進行專用的通信,。

FTP協(xié)議

  FTP協(xié)議使用TCP20號和21號端口,,20號端口用于數(shù)據(jù)交換,21號端口用于建立連接,,允許目錄和文件訪問,上傳下載,,不能遠程執(zhí)行文件,。

  TFTP是簡單文件傳輸協(xié)議(Trivial File Transfer Protocol,TFTP),,TFTP是無連接的,,使用UDP的69號端口,用于當數(shù)據(jù)傳輸錯誤無關緊要而且無須安全性時的小型文件的傳輸,。

SMTP協(xié)議

  SMTP是簡單郵件傳輸協(xié)議(Simple Mail Transfer Protocol,,SMTP)是為網(wǎng)絡系統(tǒng)間的電子郵件交換而設計的。使用 25 端口,。SMTP只需要在接收端的一個電子郵件地址即可發(fā)送郵件,。POP3 協(xié)議用來接收郵件.使用110端口

DNS服務

  DNS是域名解析服務(Domain Name Service, DNS),作用是將域名轉換為IP地址,,或將IP地址轉換為域名,,用于解析完全合格域名(FQDN)。使用53號端口,。

三次握手和四次揮手

TCP報頭

[外鏈圖片轉存失敗(img-R1OBjeIi-1565255927673)(01img/029.png)]
[外鏈圖片轉存失敗(img-uYjKE0Bj-1565255927674)(01img/030.png)]
序列號seq: 占4個字節(jié),,用來標記數(shù)據(jù)段的順序,TCP把連接中發(fā)送的所有數(shù)據(jù)字節(jié)都編上一個序號,,第一個字節(jié)的編號由本地隨機產生,;給字節(jié)編上序號后,就給每一個報文段指派一個序號,;序列號seq就是這個報文段中的第一個字節(jié)的數(shù)據(jù)編號,。

確認號ack: 占4個字節(jié),期待收到對方下一個報文段的第一個數(shù)據(jù)字節(jié)的序號,;序列號表示報文段攜帶數(shù)據(jù)的第一個字節(jié)的編號,;而確認號指的是期望接收到下一個字節(jié)的編號;因此當前報文段最后一個字節(jié)的編號+1即為確認號。

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

同步SYN: 連接建立時用于同步序號,。當SYN=1,ACK=0時表示:這是一個連接請求報文段,。若同意連接,,則在響應報文段中使得SYN=1,ACK=1,。因此,,SYN=1表示這是一個連接請求,或連接接受報文,。SYN這個標志位只有在TCP建產連接時才會被置1,,握手完成后SYN標志位被置0。

終止FIN: 用來釋放一個連接,。FIN=1表示:此報文段的發(fā)送方的數(shù)據(jù)已經(jīng)發(fā)送完畢,,并要求釋放運輸連接
[外鏈圖片轉存失敗(img-mr3cdgEX-1565255927678)(01img/031.png)]
源端口號: 表示發(fā)送端端口號,字段長為16位,。

目標端口號: 表示接收端口號,,字段長為16位。

首部長度: 該字段長度為4位,,單位為4字節(jié)(32位),。TCP首部長度不包括選項的話,是20個字節(jié),,20/4=5,,5的二進制序列:0101,報頭長度也叫數(shù)據(jù)偏移,,所以該字段可以設置為5,,選項字段最大的是40字節(jié),所以,,TCP首部長度為最大為20+40=60字節(jié),,該字段可以設置的最大長度為60/4=15。

保留: 該字段主要是為了以后擴展時使用,,其長度為4位,。一般設置為0,即使收到的包在該字段不為0,,此包也不會丟棄,。

控制位: 字段長為6,每一位從左到右分別為:URG、ACK,、PSH,、RST、SYN,、FIN,。當對應的值為1,表示有具體含義,。

窗口大?。?/span> 接收緩沖區(qū)的大小,TCP不允許發(fā)送超過此處所示大小的數(shù)據(jù),。

校驗和: 發(fā)送端填充,,CRC校驗,接收校驗不通過,,則認為數(shù)據(jù)有問題,。和UDP的區(qū)別是,UDP校驗的是數(shù)據(jù)本身,,TCP校驗的不僅包含TCP首部,而且包含TCP數(shù)據(jù)部分,。

緊急指針: 只有在URG為1時有效,,該字段為1表示本報文的段中的緊急數(shù)據(jù)的指針。

選項: 用于提高TCP的傳輸性能,。需要根據(jù)首部長度進行控制,,其最大長度為40字節(jié)。

三次握手

[外鏈圖片轉存失敗(img-TAIDYsSY-1565255927680)(01img/032.png)]
第一次握手: 建立連接時,,客戶端發(fā)送syn包(syn=j)到服務器,,并進入SYN_SENT狀態(tài),等待服務器確認,;SYN:同步序列編號(Synchronize Sequence Numbers),。

第二次握手: 服務器收到syn包,必須確認客戶的SYN(ack=j+1),,同時自己也發(fā)送一個SYN包(syn=k),,即SYN+ACK包,此時服務器進入SYN_RECV狀態(tài),;

第三次握手: 客戶端收到服務器的SYN+ACK包,,向服務器發(fā)送確認包ACK(ack=k+1),此包發(fā)送完畢,,客戶端和服務器進入ESTABLISHED(TCP連接成功)狀態(tài),,完成三次握手。

四次揮手

[外鏈圖片轉存失敗(img-Yuhaw31Q-1565255927680)(01img/033.png)]
1)客戶端進程發(fā)出連接釋放報文,并且停止發(fā)送數(shù)據(jù),。釋放數(shù)據(jù)報文首部,,F(xiàn)IN=1,其序列號為seq=u(等于前面已經(jīng)傳送過來的數(shù)據(jù)的最后一個字節(jié)的序號加1),,此時,,客戶端進入FIN-WAIT-1(終止等待1)狀態(tài)。 TCP規(guī)定,,F(xiàn)IN報文段即使不攜帶數(shù)據(jù),,也要消耗一個序號。

2)服務器收到連接釋放報文,,發(fā)出確認報文,,ACK=1,ack=u+1,,并且?guī)献约旱男蛄刑杝eq=v,,此時,服務端就進入了CLOSE-WAIT(關閉等待)狀態(tài),。TCP服務器通知高層的應用進程,,客戶端向服務器的方向就釋放了,這時候處于半關閉狀態(tài),,即客戶端已經(jīng)沒有數(shù)據(jù)要發(fā)送了,,但是服務器若發(fā)送數(shù)據(jù),客戶端依然要接受,。這個狀態(tài)還要持續(xù)一段時間,,也就是整個CLOSE-WAIT狀態(tài)持續(xù)的時間。

3)客戶端收到服務器的確認請求后,,此時,,客戶端就進入FIN-WAIT-2(終止等待2)狀態(tài),等待服務器發(fā)送連接釋放報文(在這之前還需要接受服務器發(fā)送的最后的數(shù)據(jù)),。

4)服務器將最后的數(shù)據(jù)發(fā)送完畢后,,就向客戶端發(fā)送連接釋放報文,F(xiàn)IN=1,,ack=u+1,,由于在半關閉狀態(tài),服務器很可能又發(fā)送了一些數(shù)據(jù),,假定此時的序列號為seq=w,,此時,服務器就進入了LAST-ACK(最后確認)狀態(tài),,等待客戶端的確認,。

5)客戶端收到服務器的連接釋放報文后,,必須發(fā)出確認,ACK=1,,ack=w+1,,而自己的序列號是seq=u+1,此時,,客戶端就進入了TIME-WAIT(時間等待)狀態(tài),。注意此時TCP連接還沒有釋放,必須經(jīng)過2∗∗MSL(最長報文段壽命)的時間后,,當客戶端撤銷相應的TCB后,,才進入CLOSED狀態(tài)。

6)服務器只要收到了客戶端發(fā)出的確認,,立即進入CLOSED狀態(tài),。同樣,撤銷TCB后,,就結束了這次的TCP連接,。可以看到,,服務器結束TCP連接的時間要比客戶端早一些,。

常見問題

【問題1】為什么連接的時候是三次握手,關閉的時候卻是四次握手,?

  因為當Server端收到Client端的SYN連接請求報文后,,可以直接發(fā)送SYN+ACK報文。其中ACK報文是用來應答的,,SYN報文是用來同步的。但是關閉連接時,,當Server端收到FIN報文時,,很可能并不會立即關閉SOCKET,所以只能先回復一個ACK報文,,告訴Client端,,“你發(fā)的FIN報文我收到了”。只有等到我Server端所有的報文都發(fā)送完了,,我才能發(fā)送FIN報文,,因此不能一起發(fā)送。故需要四步握手,。

【問題2】為什么TIME_WAIT狀態(tài)需要經(jīng)過2MSL(最大報文段生存時間)才能返回到CLOSE狀態(tài),?

  MSL即Maximum Segment Lifetime,就是最大報文生存時間,,是任何報文在網(wǎng)絡上的存在的最長時間,,超過這個時間報文將被丟棄,。《TCP/IP詳解》中是這樣描述的:MSL是任何報文段被丟棄前在網(wǎng)絡內的最長時間,。RFC 793中規(guī)定MSL為2分鐘,,實際應用中常用的是30秒、1分鐘,、2分鐘等,。

  TCP的TIME_WAIT需要等待2MSL,當TCP的一端發(fā)起主動關閉,,三次揮手完成后發(fā)送第四次揮手的ACK包后就進入這個狀態(tài),,等待2MSL時間主要目的是:防止最后一個ACK包對方?jīng)]有收到,那么對方在超時后將重發(fā)第三次握手的FIN包,,主動關閉端接到重發(fā)的FIN包后可以再發(fā)一個ACK應答包,。在TIME_WAIT狀態(tài)時兩端的端口不能使用,要等到2MSL時間結束才可以繼續(xù)使用,。當連接處于2MSL等待階段時任何遲到的報文段都將被丟棄,。

【問題3】為什么需要三次握手,兩次不可以嗎,?或者四次,、五次可以嗎?

  我們來分析一種特殊情況,,假設客戶端請求建立連接,,發(fā)給服務器SYN包等待服務器確認,服務器收到確認后,,如果是兩次握手,,假設服務器給客戶端在第二次握手時發(fā)送數(shù)據(jù),數(shù)據(jù)從服務器發(fā)出,,服務器認為連接已經(jīng)建立,,但在發(fā)送數(shù)據(jù)的過程中數(shù)據(jù)丟失,客戶端認為連接沒有建立,,會進行重傳,。假設每次發(fā)送的數(shù)據(jù)一直在丟失,客戶端一直SYN,,服務器就會產生多個無效連接,,占用資源,這個時候服務器可能會掛掉,。這個現(xiàn)象就是我們聽過的“SYN的洪水攻擊”,。

  總結:第三次握手是為了防止:如果客戶端遲遲沒有收到服務器返回確認報文,這時會放棄連接,,重新啟動一條連接請求,,但問題是:服務器不知道客戶端沒有收到,,所以他會收到兩個連接,浪費連接開銷,。如果每次都是這樣,,就會浪費多個連接開銷。

【問題4】如果已經(jīng)建立了連接,,但是客戶端突然出現(xiàn)故障了怎么辦,?

  TCP還設有一個保活計時器,,顯然,,客戶端如果出現(xiàn)故障,服務器不能一直等下去,,白白浪費資源,。服務器每收到一次客戶端的請求后都會重新復位這個計時器,時間通常是設置為2小時,,若兩小時還沒有收到客戶端的任何數(shù)據(jù),,服務器就會發(fā)送一個探測報文段,以后每隔75秒鐘發(fā)送一次,。若一連發(fā)送10個探測報文仍然沒反應,,服務器就認為客戶端出了故障,接著就關閉連接,。

【問題5】為什么是四次揮手,,而不是三次或是五次、六次,?

  雙方關閉連接要經(jīng)過雙方都同意,。所以,首先是客服端給服務器發(fā)送FIN,,要求關閉連接,,服務器收到后會發(fā)送一個ACK進行確認。服務器然后再發(fā)送一個FIN,,客戶端發(fā)送ACK確認,,并進入TIME_WAIT狀態(tài),。等待2MSL后自動關閉,。

總結:
  (1)為了保證客戶端發(fā)送的最后一個ACK報文段能夠到達服務器。即最后一個確認報文可能丟失,,服務器會超時重傳,,然后服務器發(fā)送FIN請求關閉連接,客戶端發(fā)送ACK確認,。一個來回是兩個報文生命周期,。

如果沒有等待時間,,發(fā)送完確認報文段就立即釋放連接的話,服務器就無法重傳,,因此也就收不到確認,,就無法按步驟進入CLOSED狀態(tài),即必須收到確認才能close,。
  (2)防止已經(jīng)失效的連接請求報文出現(xiàn)在連接中,。經(jīng)過2MSL,在這個連續(xù)持續(xù)的時間內,,產生的所有報文段就可以都從網(wǎng)絡消失,。

Copyright © 2020-2022 南京傾心軟件技術有限公司 版權所有     蘇ICP備2020070309號-1
QQ在線咨詢
13605185909
返回頂部