樱桃视频大全免费高清版,张柏芝阿娇全套无删减1313,国产久热精品无码激情,国产成人久久777777

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

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

13605185909

新聞資訊

NEWS CENTER
欄目導(dǎo)航

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

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

計(jì)算機(jī)網(wǎng)絡(luò)協(xié)議

操作系統(tǒng)概念

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

注:計(jì)算機(jī)(硬件)---->OS----->應(yīng)用軟件

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

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

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

基本組成:

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

計(jì)算機(jī)網(wǎng)絡(luò)的性能指標(biāo)

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

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

帶寬

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

吞吐量

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

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

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

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

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

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

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

往返時(shí)間

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

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

網(wǎng)絡(luò)通信原理

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

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

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

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

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

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

(2)一套統(tǒng)一的通信標(biāo)準(zhǔn)---->互聯(lián)網(wǎng)通信協(xié)議(計(jì)算機(jī)界的英語(yǔ))

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

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

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

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

1、物理層

  底層物理連接介質(zhì)。負(fù)責(zé)發(fā)送電信號(hào)高電壓對(duì)應(yīng)數(shù)字1,低電壓對(duì)應(yīng)數(shù)字0。兩個(gè)物理層通過光纜電纜雙絞纜等介質(zhì)連接

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

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

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

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

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

廣播:

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

3、網(wǎng)絡(luò)層

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

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

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

標(biāo)識(shí)地址的方式:

  ip+mac就能標(biāo)識(shí)全世界范圍內(nèi)獨(dú)一無二的一臺(tái)計(jì)算機(jī)
  ip+mac+port就能標(biāo)識(shí)全世界范圍內(nèi)獨(dú)一無二的一個(gè)基于網(wǎng)絡(luò)通信的應(yīng)用軟件

  url地址:標(biāo)識(shí)全世界范圍內(nèi)獨(dú)一無二的一個(gè)資源

ARP協(xié)議:

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

  例如:主機(jī)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的前三段,以此判斷是不是在同一個(gè)子網(wǎng)

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

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

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

傳輸層

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

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

補(bǔ)充: 端口范圍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ù)傳輸

通信過程:

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

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

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

  • 目標(biāo)IP地址決定了數(shù)據(jù)包最終到達(dá)那個(gè)計(jì)算機(jī);

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

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

小結(jié)

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

  Telnet是TCP/IP中的一種應(yīng)用協(xié)議,可以為終端仿真提供支持。可使用戶連接到主機(jī)上,使主機(jī)響應(yīng)起來就像它直接連接在終端上一樣。Telnet在發(fā)送端和接收端使用TCP的23號(hào)端口以進(jìn)行專用的通信。

FTP協(xié)議

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

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

SMTP協(xié)議

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

DNS服務(wù)

  DNS是域名解析服務(wù)(Domain Name Service, DNS),作用是將域名轉(zhuǎn)換為IP地址,或?qū)P地址轉(zhuǎn)換為域名,用于解析完全合格域名(FQDN)。使用53號(hào)端口。

三次握手和四次揮手

TCP報(bào)頭

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

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

確認(rèn)ACK: 占1位,僅當(dāng)ACK=1時(shí),確認(rèn)號(hào)字段才有效。ACK=0時(shí),確認(rèn)號(hào)無效

同步SYN: 連接建立時(shí)用于同步序號(hào)。當(dāng)SYN=1,ACK=0時(shí)表示:這是一個(gè)連接請(qǐng)求報(bào)文段。若同意連接,則在響應(yīng)報(bào)文段中使得SYN=1,ACK=1。因此,SYN=1表示這是一個(gè)連接請(qǐng)求,或連接接受報(bào)文。SYN這個(gè)標(biāo)志位只有在TCP建產(chǎn)連接時(shí)才會(huì)被置1,握手完成后SYN標(biāo)志位被置0。

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

目標(biāo)端口號(hào): 表示接收端口號(hào),字段長(zhǎng)為16位。

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

保留: 該字段主要是為了以后擴(kuò)展時(shí)使用,其長(zhǎng)度為4位。一般設(shè)置為0,即使收到的包在該字段不為0,此包也不會(huì)丟棄。

控制位: 字段長(zhǎng)為6,每一位從左到右分別為:URG、ACK、PSH、RST、SYN、FIN。當(dāng)對(duì)應(yīng)的值為1,表示有具體含義。

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

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

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

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

三次握手

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

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

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

四次揮手

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

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

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

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

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

6)服務(wù)器只要收到了客戶端發(fā)出的確認(rèn),立即進(jìn)入CLOSED狀態(tài)。同樣,撤銷TCB后,就結(jié)束了這次的TCP連接??梢钥吹?,服務(wù)器結(jié)束TCP連接的時(shí)間要比客戶端早一些。

常見問題

【問題1】為什么連接的時(shí)候是三次握手,關(guān)閉的時(shí)候卻是四次握手?

  因?yàn)楫?dāng)Server端收到Client端的SYN連接請(qǐng)求報(bào)文后,可以直接發(fā)送SYN+ACK報(bào)文。其中ACK報(bào)文是用來應(yīng)答的,SYN報(bào)文是用來同步的。但是關(guān)閉連接時(shí),當(dāng)Server端收到FIN報(bào)文時(shí),很可能并不會(huì)立即關(guān)閉SOCKET,所以只能先回復(fù)一個(gè)ACK報(bào)文,告訴Client端,“你發(fā)的FIN報(bào)文我收到了”。只有等到我Server端所有的報(bào)文都發(fā)送完了,我才能發(fā)送FIN報(bào)文,因此不能一起發(fā)送。故需要四步握手。

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

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

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

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

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

  總結(jié):第三次握手是為了防止:如果客戶端遲遲沒有收到服務(wù)器返回確認(rèn)報(bào)文,這時(shí)會(huì)放棄連接,重新啟動(dòng)一條連接請(qǐng)求,但問題是:服務(wù)器不知道客戶端沒有收到,所以他會(huì)收到兩個(gè)連接,浪費(fèi)連接開銷。如果每次都是這樣,就會(huì)浪費(fèi)多個(gè)連接開銷。

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

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

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

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

總結(jié):
  (1)為了保證客戶端發(fā)送的最后一個(gè)ACK報(bào)文段能夠到達(dá)服務(wù)器。即最后一個(gè)確認(rèn)報(bào)文可能丟失,服務(wù)器會(huì)超時(shí)重傳,然后服務(wù)器發(fā)送FIN請(qǐng)求關(guān)閉連接,客戶端發(fā)送ACK確認(rèn)。一個(gè)來回是兩個(gè)報(bào)文生命周期。

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

Copyright © 2020-2022 南京傾心軟件技術(shù)有限公司 版權(quán)所有     蘇ICP備2020070309號(hào)-1
QQ在線咨詢
13605185909
返回頂部