亚洲熟女综合色一区二区三区,亚洲精品中文字幕无码蜜桃,亚洲va欧美va日韩va成人网,亚洲av无码国产一区二区三区,亚洲精品无码久久久久久久

Linux基礎(chǔ)教程之TCP協(xié)議詳解

批處理應(yīng)用程序

????FTP 、TFTP 、庫(kù)存更新

????無(wú)需直接人工交互

????帶寬很重要,但并非關(guān)鍵性因素

交互式應(yīng)用程序

????庫(kù)存查詢、數(shù)據(jù)庫(kù)更新。

????人機(jī)交互。

????因?yàn)橛脩粜璧却憫?yīng),所以響應(yīng)時(shí)間很重要,但并非關(guān)鍵性因素,除非要等待很長(zhǎng)時(shí)間。

實(shí)時(shí)應(yīng)用程序

????VoIP 、視頻

????人與人的交互

????端到端的延時(shí)至關(guān)重要

拓?fù)浣Y(jié)構(gòu)

物理拓?fù)洌?/span>

總線拓?fù)?所有設(shè)備均可接收信號(hào)

環(huán)狀拓?fù)?信號(hào)繞環(huán)傳輸,單一故障點(diǎn)

星型拓?fù)?通過(guò)中心點(diǎn)傳輸,單一故障點(diǎn)

擴(kuò)展星型拓?fù)?比星型拓?fù)涞膹?fù)原能力更強(qiáng)

邏輯拓?fù)?

雙環(huán)拓?fù)?信號(hào)沿相反方向傳輸,比單環(huán)的復(fù)原能力更強(qiáng)

全網(wǎng)狀拓?fù)?容錯(cuò)能力強(qiáng),實(shí)施成本高

部分網(wǎng)狀拓?fù)?在容錯(cuò)能力與成本之間尋求平衡

網(wǎng)絡(luò)模型分層:七層

1-4層通信子網(wǎng) ? ? ?5-7層資源子網(wǎng)

1.物理層:

二進(jìn)制傳輸;為啟動(dòng),維護(hù)以及關(guān)閉物理鏈路定義了電氣規(guī)范,機(jī)械規(guī)范,過(guò)程規(guī)范和功能規(guī)范

2.數(shù)據(jù)鏈路層:

訪問(wèn)介質(zhì);定義如何格式化數(shù)據(jù)以便進(jìn)行傳輸以及如何控制對(duì)網(wǎng)絡(luò)的訪問(wèn)

支持錯(cuò)誤檢測(cè)

3.網(wǎng)絡(luò)層;數(shù)據(jù)傳輸

路由數(shù)據(jù)包

選擇傳遞數(shù)據(jù)的最佳路徑

支持邏輯尋址和路徑選擇

4.傳輸層;傳輸問(wèn)題

確保數(shù)據(jù)傳輸?shù)目煽啃?/span>

建立,維護(hù)和終止虛擬電路

通過(guò)錯(cuò)誤檢查和恢復(fù)

信息流控制來(lái)保障可靠性

5.會(huì)話層;主機(jī)間通信

建立,管理和終止在應(yīng)用程序之間的會(huì)話

6.表示層;數(shù)據(jù)表示

確保接受系統(tǒng)可以讀出該數(shù)據(jù)

格式化數(shù)據(jù)

構(gòu)建數(shù)據(jù)

協(xié)商用于應(yīng)用層的數(shù)據(jù)傳輸語(yǔ)法

提供加密

7.應(yīng)用層;網(wǎng)絡(luò)進(jìn)程訪問(wèn)應(yīng)用層

為應(yīng)用程序進(jìn)程提供網(wǎng)絡(luò)服務(wù)(電子郵件,文件傳輸和終端仿真)

提供用戶身份驗(yàn)證

對(duì)等通信

三種通訊模式

1.單播:兩臺(tái)計(jì)算機(jī)通過(guò)特有的通道進(jìn)行通信。

2.廣播:多臺(tái)計(jì)算機(jī)在一定的范圍內(nèi)通信(本地子網(wǎng)范圍),當(dāng)某一計(jì)算機(jī)發(fā)送消息,其他所有的計(jì)算機(jī)都會(huì)受到信息。

3.組播:即發(fā)送者和接受者可以實(shí)現(xiàn)多種通信方式,這種方式以小組的形式存在,既可以是同一物理網(wǎng)絡(luò),也可以是不同的物理網(wǎng)絡(luò)。這樣一來(lái),就能極大地提升通信的速率。

LAN 組成 ????局域網(wǎng) Local Area Network

Computers

????PCs 計(jì)算機(jī)

????Servers 服務(wù)器

Interconnections

????NICs 網(wǎng)卡

????Media 媒體

Network devices 網(wǎng)絡(luò)設(shè)備

????Hubs 集線器

????Switches 交換機(jī)

????Routers 路由器

Protocols 協(xié)議

????Ethernet 以太網(wǎng)

????IP

????ARP

????DHCP

網(wǎng)絡(luò)線纜和接口

雙絞線 Twisted-Pair

線纜 Coaxal

光纖 Fiber-Optic

UTP

線序:T568B標(biāo)準(zhǔn) ???????橙白 ?橙綠白藍(lán)藍(lán)白綠棕白棕

100M實(shí)際用1/2(發(fā)數(shù)據(jù)) 3/6(收數(shù)據(jù))兩組線

1000M實(shí)際用1/2 3/6 4/5 7/8(都可收發(fā)數(shù)據(jù))四組線

UTP 直通線(Straight-Through)

以太網(wǎng)橋

交換式以太網(wǎng)的優(yōu)勢(shì)

擴(kuò)展了網(wǎng)絡(luò)帶寬

分割了網(wǎng)絡(luò)沖突域,使網(wǎng)絡(luò)沖突被限制在最小的范圍內(nèi)

交換機(jī)作為更加智能的交換設(shè)備,能夠提供更多用戶所要求的功能:優(yōu)先級(jí)、虛擬網(wǎng)、遠(yuǎn)程檢測(cè)……

以太網(wǎng)橋的工作原理

以太網(wǎng)橋監(jiān)聽(tīng)數(shù)據(jù)幀中源MAC 地址,學(xué)習(xí)MAC ,建立MAC表 表

對(duì)于未知MAC 地址,網(wǎng)橋?qū)⑥D(zhuǎn)發(fā)到除接收該幀的端口之外的所有端口

????當(dāng)網(wǎng)橋接到一個(gè)數(shù)據(jù)幀時(shí),如果該幀的目的位于接收端口所在網(wǎng)段上,它就過(guò)濾掉該數(shù)據(jù)幀;如果目的MAC 地址在位于另外一個(gè)端口,網(wǎng)橋就將該幀轉(zhuǎn)發(fā)到該端口

????當(dāng)網(wǎng)橋接到廣播幀時(shí)候,它立即轉(zhuǎn)發(fā)到除接收端口之外的所有其他端口

路由器

為了實(shí)現(xiàn)路由, 路由器需要做下列事情:

????分隔廣播域

????選擇路由表中到達(dá)目標(biāo)最好的路徑

????維護(hù)和檢查路由信息

????連接廣域網(wǎng)

路由

路由:把一個(gè)數(shù)據(jù)包從一個(gè)設(shè)備發(fā)送到不同網(wǎng)絡(luò)里的另一個(gè)設(shè)備上去。這些工作依靠路由器來(lái)完成。路由器只關(guān)心網(wǎng)絡(luò)的狀態(tài)和決定網(wǎng)絡(luò)中的最佳路徑。路由的實(shí)現(xiàn)依靠路由器中的路由表來(lái)

VLAN

分隔廣播域

安全

靈活管理

VLAN = ?廣播域= 絡(luò)邏輯網(wǎng)絡(luò) (Subnet)

分層的網(wǎng)絡(luò)架構(gòu)

核心層Core Layer??????????企業(yè)級(jí)應(yīng)用快速轉(zhuǎn)發(fā)

分布層Distribution?Layer????廣播域,路由,安全,遠(yuǎn)程接入,訪問(wèn)層匯聚

訪問(wèn)層Access?Layer????????終端接入

TCP/IP 協(xié)議棧

Transmission Control Protocol/Internet Protocol

傳輸控制協(xié)議/ 因特網(wǎng)互聯(lián)協(xié)議

TCP/IP 是一個(gè)Protocol Stack ,包括TCP、IP 、UDP 、ICMP 、RIP 、TELNET、FTP 、SMTP 、ARP 等許多協(xié)議

最早發(fā)源于美國(guó)國(guó)防部(縮寫(xiě)為DoD )的因特網(wǎng)的前身ARPA 網(wǎng)項(xiàng)目,1983 年1 月1

日,TCP/IP 取代了舊的網(wǎng)絡(luò)控制協(xié)議NCP,成為今天的互聯(lián)網(wǎng)和局域網(wǎng)的基石和標(biāo)準(zhǔn)。由互聯(lián)網(wǎng)工程任務(wù)組負(fù)責(zé)維護(hù)。

共定義了四層

和ISO 參考模型的分層有對(duì)應(yīng)關(guān)系

TCP/IP 協(xié)議棧和 OSI 模型

TCP/IP 應(yīng)用層

Application

File transfer 文件傳輸

FTP FTP協(xié)議 傳載大文件

TFTP 輕量級(jí)FTP 傳載小文件

Network File System 網(wǎng)絡(luò)文件系統(tǒng)

E-mail 電子郵件

Simple Mail Transfer Protocol 簡(jiǎn)單郵件傳輸協(xié)議

Remote login 遠(yuǎn)程登錄

Telnet

rlogin

Network management 網(wǎng)絡(luò)管理

Simple Network Management?Protocol 簡(jiǎn)單網(wǎng)絡(luò)管理協(xié)議

Name management 名稱管理

Domain Name System 域名系統(tǒng)

傳輸層

Transport

Session multiplexing 多路會(huì)話

Segmentation 分段

Flow control (when required) 流控制(必要時(shí))

Connection-oriented(when required) 面向連接(必要時(shí))

Reliability (when required) 可靠的(必要時(shí))

  Reliable可靠的 Best-Effort高效的
Connection Type連接類(lèi)型 Connection-oriented 面向連接的 Connectionless 無(wú)連接
Protocol 協(xié)議 TCP UDP
Sequencing 順序 Yes No
Uses E-mail 電子郵件

File sharing 文件共享

Downloading 下載

Voice streaming 語(yǔ)音流

Video streaming 視頻流

TCP 特性

工作在傳輸層面向連接協(xié)議

????全雙工協(xié)議

????半關(guān)閉

????錯(cuò)誤檢查

????將數(shù)據(jù)打包成段,排序

????確認(rèn)機(jī)制

????數(shù)據(jù)恢復(fù),重傳

????流量控制,滑動(dòng)窗口

????擁塞控制,慢啟動(dòng)和擁塞避免算法

TCP包頭

源端口、目標(biāo)端口:計(jì)算機(jī)上的進(jìn)程要和其他進(jìn)程通信是要通過(guò)計(jì)算機(jī)端口的,而一個(gè)計(jì)算機(jī)端口某個(gè)時(shí)刻只能被一個(gè)進(jìn)程占用,所以通過(guò)指定源端口和目標(biāo)端口,就可以知道是哪兩個(gè)進(jìn)程需要通信。源端口、目標(biāo)端口是用16位表示的,可推算計(jì)算機(jī)的端口個(gè)數(shù)為2^16個(gè)

???????序列號(hào):表示本報(bào)文段所發(fā)送數(shù)據(jù)的第一個(gè)字節(jié)的編號(hào)。在TCP 連接中所傳送的字節(jié)流的每一個(gè)字節(jié)都會(huì)按順序編號(hào)。由于序列號(hào)由32位表示,所以每2^32個(gè)字節(jié),就會(huì)出現(xiàn)序列號(hào)回繞,再次從0開(kāi)始

???????確認(rèn)號(hào):表示接收方期望收到發(fā)送方下一個(gè)報(bào)文段的第一個(gè)字節(jié)數(shù)據(jù)的編號(hào)。也就是告訴發(fā)送發(fā):我希望你(指發(fā)送方)下次發(fā)送的數(shù)據(jù)的第一個(gè)字節(jié)數(shù)據(jù)的編號(hào)是這個(gè)確認(rèn)號(hào)。也就是告訴發(fā)送方:我希望你(指發(fā)送方)下次發(fā)送給我的TCP 報(bào)文段的序列號(hào)字段的值是這個(gè)

???????數(shù)據(jù)偏移:由于TCP 首部包含一個(gè)長(zhǎng)度可變的選項(xiàng)部分,所以需要這么一個(gè)值來(lái)指定這個(gè)TCP出報(bào)文段到底有多長(zhǎng)。它指出TCP報(bào)文段的數(shù)據(jù)起始處距離TCP報(bào)文段的起始處有多遠(yuǎn),即TCP 報(bào)文段的首部長(zhǎng)度。該字段的單位是32 位字,即:4個(gè)字節(jié)

URG :表示本報(bào)文段中發(fā)送的數(shù)據(jù)是否包含緊急數(shù)據(jù)。后面的緊急指針字段(urgent pointer)只有當(dāng)URG=1時(shí)才有效

ACK :表示是否前面的確認(rèn)號(hào)字段是否有效。ACK=1 ,表示有效。只有當(dāng)ACK=1時(shí),前面的確認(rèn)號(hào)字段才有效。TCP 規(guī)定,連接建立后,ACK 必須為1, 帶ACK 標(biāo)志的TCP 報(bào)文段稱為確認(rèn)報(bào)文段

???????PSH :提示接收端應(yīng)用程序應(yīng)該立即從TCP 接收緩沖區(qū)中讀走數(shù)據(jù),為接收后續(xù)數(shù)據(jù)騰出空間。如果為1 ,則表示對(duì)方應(yīng)當(dāng)立即把數(shù)據(jù)提交給上層應(yīng)用,而不是緩存起來(lái),如果應(yīng)用程序不將接收到的數(shù)據(jù)讀走,就會(huì)一直停留在TCP 接收緩沖區(qū)中

???????RST :如果收到一個(gè)RST=1 的報(bào)文,說(shuō)明與主機(jī)的連接出現(xiàn)了嚴(yán)重錯(cuò)誤(如主機(jī)崩潰),必須釋放連接,然后再重新建立連接?;蛘哒f(shuō)明上次發(fā)送給主機(jī)的數(shù)據(jù)有問(wèn)題,主機(jī)拒絕響應(yīng),帶RST 標(biāo)志的TCP 報(bào)文段稱為復(fù)位報(bào)文段

???????SYN :在建立連接時(shí)使用,用來(lái)同步序號(hào)。當(dāng)SYN=1 ,ACK=0 時(shí),表示這是一個(gè)請(qǐng)求建立連接的報(bào)文段;當(dāng)SYN=1,ACK=1 時(shí),表示對(duì)方同意建立連接。SYN=1,說(shuō)明這是一個(gè)請(qǐng)求建立連接或同意建立連接的報(bào)文。只有在前兩次握手中SYN才置為1 ,帶SYN 標(biāo)志的TCP 報(bào)文段稱為同步報(bào)文段

v FIN :表示通知對(duì)方本端要關(guān)閉連接了,標(biāo)記數(shù)據(jù)是否發(fā)送完畢。如果FIN=1,即告訴對(duì)方:“我的數(shù)據(jù)已經(jīng)發(fā)送完畢,你可以釋放連接了”,帶FIN 標(biāo)志的TCP報(bào)文段稱為結(jié)束報(bào)文段

窗口大小:表示現(xiàn)在運(yùn)行對(duì)方發(fā)送的數(shù)據(jù)量,也就是告訴對(duì)方,從本報(bào)文段的確認(rèn)號(hào)開(kāi)始允許對(duì)方發(fā)送的數(shù)據(jù)量

????校驗(yàn)和:提供額外的可靠性

????緊急指針:標(biāo)記緊急數(shù)據(jù)在數(shù)據(jù)字段中的位置。

????選項(xiàng)部分:其最大長(zhǎng)度可根據(jù)TCP 首部長(zhǎng)度進(jìn)行推算。TCP首部長(zhǎng)度用4 位表示,選項(xiàng)部分最長(zhǎng)為:(2^4-1)*4-20=40 字節(jié)

TCP 協(xié)議

傳輸層通過(guò)port 號(hào),確定應(yīng)用層協(xié)議

Port number:

tcp :傳輸控制協(xié)議,面向連接的協(xié)議;通信前需要建立虛擬鏈路;結(jié)束后拆除鏈路

0-65535

udp :User Datagram Protocol ,無(wú)連接的協(xié)議

0-65535

IANA: 互聯(lián)網(wǎng)數(shù)字分配機(jī)構(gòu)(負(fù)責(zé)域名,數(shù)字資源,協(xié)議分配)

0-1023 :系統(tǒng)端口或特權(quán)端口( 僅管理員可用) ?,眾所周知,永久的分配給固定的系統(tǒng)應(yīng)用使用,22/tcp(ssh), 80/tcp(http), 443/tcp(https)

1024-49151 :用戶端口或注冊(cè)端口,但要求并不嚴(yán)格,分配給程序注冊(cè)為某應(yīng)用使用,1433/tcp(SqlServer,1521/tcp(oracle),3306/tcp(mysql),11211/tcp/udp (memcached)

49152-65535: : 動(dòng)態(tài)端口或私有端口,客戶端程序隨機(jī)使用的端口其范圍的定義:/proc/sys/net/ipv4/ip_local_port_range

TCP 三次握手

第一次握手:建立連接。客戶端發(fā)送連接請(qǐng)求報(bào)文段,將SYN位置為1,Sequence Number為x;然后,客戶端進(jìn)入SYN_SEND狀態(tài),等待服務(wù)器的確認(rèn)

第二次握手:服務(wù)器收到SYN報(bào)文段。服務(wù)器收到客戶端的SYN報(bào)文段,需要對(duì)這個(gè)SYN報(bào)文段進(jìn)行確認(rèn),設(shè)置Acknowledgment Number為x+1(Sequence Number+1);同時(shí),自己自己還要發(fā)送SYN請(qǐng)求信息,將SYN位置為1,Sequence Number為y;服務(wù)器端將上述所有信息放到一個(gè)報(bào)文段(即SYN+ACK報(bào)文段)中,一并發(fā)送給客戶端,此時(shí)服務(wù)器進(jìn)入SYN_RECV狀態(tài)

第三次握手:客戶端收到服務(wù)器的SYN+ACK報(bào)文段。然后將Acknowledgment Number設(shè)置為y+1,向服務(wù)器發(fā)送ACK報(bào)文段,這個(gè)報(bào)文段發(fā)送完畢以后,客戶端和服務(wù)器端都進(jìn)入ESTABLISHED狀態(tài),完成TCP三次握手

為什么要三次握手

已失效的連接請(qǐng)求報(bào)文段”的產(chǎn)生在這樣一種情況下:client發(fā)出的第一個(gè)連接請(qǐng)求報(bào)文段并沒(méi)有丟失,而是在某個(gè)網(wǎng)絡(luò)結(jié)點(diǎn)長(zhǎng)時(shí)間的滯留了,以致延誤到連接釋放以后的某個(gè)時(shí)間才到達(dá)server。本來(lái)這是一個(gè)早已失效的報(bào)文段。但server收到此失效的連接請(qǐng)求報(bào)文段后,就誤認(rèn)為是client再次發(fā)出的一個(gè)新的連接請(qǐng)求。于是就向client發(fā)出確認(rèn)報(bào)文段,同意建立連接。假設(shè)不采用“三次握手”,那么只要server發(fā)出確認(rèn),新的連接就建立了。由于現(xiàn)在client并沒(méi)有發(fā)出建立連接的請(qǐng)求,因此不會(huì)理睬server的確認(rèn),也不會(huì)向server發(fā)送數(shù)據(jù)。但server卻以為新的運(yùn)輸連接已經(jīng)建立,并一直等待client發(fā)來(lái)數(shù)據(jù)。這樣,server的很多資源就白白浪費(fèi)掉了。采用“三次握手”的辦法可以防止上述現(xiàn)象發(fā)生。例如剛才那種情況,client不會(huì)向server的確認(rèn)發(fā)出確認(rèn)。server由于收不到確認(rèn),就知道client并沒(méi)有要求建立連接。

防止服務(wù)器端一直等待而浪費(fèi)資源

TCP四次揮手

第一次分手:主機(jī)1(可以使客戶端,也可以是服務(wù)器端),設(shè)置Sequence Number和Acknowledgment Number,向主機(jī)2發(fā)送一個(gè)FIN報(bào)文段;此時(shí),主機(jī)1進(jìn)入FIN_WAIT_1狀態(tài);這表示主機(jī)1沒(méi)有數(shù)據(jù)要發(fā)送給主機(jī)2了

第二次分手:主機(jī)2收到了主機(jī)1發(fā)送的FIN報(bào)文段,向主機(jī)1回一個(gè)ACK報(bào)文段,Acknowledgment Number為Sequence Number加1;主機(jī)1進(jìn)入FIN_WAIT_2狀態(tài);主機(jī)2告訴主機(jī)1,我“同意”你的關(guān)閉請(qǐng)求

第三次分手:主機(jī)2向主機(jī)1發(fā)送FIN報(bào)文段,請(qǐng)求關(guān)閉連接,同時(shí)主機(jī)2進(jìn)入LAST_ACK狀態(tài)

第四次分手:主機(jī)1收到主機(jī)2發(fā)送的FIN報(bào)文段,向主機(jī)2發(fā)送ACK報(bào)文段,然后主機(jī)1進(jìn)入TIME_WAIT狀態(tài);主機(jī)2收到主機(jī)1的ACK報(bào)文段以后,就關(guān)閉連接;此時(shí),主機(jī)1等待2MSL后依然沒(méi)有收到回復(fù),則證明Server端已正常關(guān)閉,那好,主機(jī)1也可以關(guān)閉連接了

TCP協(xié)議是一種面向連接的、可靠的、基于字節(jié)流的運(yùn)輸層通信協(xié)議。TCP是全雙工模式,這就意味著,當(dāng)主機(jī)1發(fā)出FIN報(bào)文段時(shí),只是表示主機(jī)1已經(jīng)沒(méi)有數(shù)據(jù)要發(fā)送了,主機(jī)1告訴主機(jī)2,它的數(shù)據(jù)已經(jīng)全部發(fā)送完畢了;但是,這個(gè)時(shí)候主機(jī)1還是可以接受來(lái)自主機(jī)2的數(shù)據(jù);當(dāng)主機(jī)2返回ACK報(bào)文段時(shí),表示它已經(jīng)知道主機(jī)1沒(méi)有數(shù)據(jù)發(fā)送了,但是主機(jī)2還是可以發(fā)送數(shù)據(jù)到主機(jī)1的;當(dāng)主機(jī)2也發(fā)送了FIN報(bào)文段時(shí),這個(gè)時(shí)候就表示主機(jī)2也沒(méi)有數(shù)據(jù)要發(fā)送了,就會(huì)告訴主機(jī)1,我也沒(méi)有數(shù)據(jù)要發(fā)送了,之后彼此就會(huì)愉快的中斷這次TCP連接。

FIN_WAIT_1: 這個(gè)狀態(tài)要好好解釋一下,其實(shí)FIN_WAIT_1和FIN_WAIT_2狀態(tài)的真正含義都是表示等待對(duì)方的FIN報(bào)文。而這兩種狀態(tài)的區(qū)別是:FIN_WAIT_1狀態(tài)實(shí)際上是當(dāng)SOCKET在ESTABLISHED狀態(tài)時(shí),它想主動(dòng)關(guān)閉連接,向?qū)Ψ桨l(fā)送了FIN報(bào)文,此時(shí)該SOCKET即進(jìn)入到FIN_WAIT_1狀態(tài)。而當(dāng)對(duì)方回應(yīng)ACK報(bào)文后,則進(jìn)入到FIN_WAIT_2狀態(tài),當(dāng)然在實(shí)際的正常情況下,無(wú)論對(duì)方何種情況下,都應(yīng)該馬上回應(yīng)ACK報(bào)文,所以FIN_WAIT_1狀態(tài)一般是比較難見(jiàn)到的,而FIN_WAIT_2狀態(tài)還有時(shí)常常可以用netstat看到。(主動(dòng)方) FIN_WAIT_2:上面已經(jīng)詳細(xì)解釋了這種狀態(tài),實(shí)際上FIN_WAIT_2狀態(tài)下的SOCKET,表示半連接,也即有一方要求close連接,但另外還告訴對(duì)方,我暫時(shí)還有點(diǎn)數(shù)據(jù)需要傳送給你(ACK信息),稍后再關(guān)閉連接。(主動(dòng)方)

CLOSE_WAIT:這種狀態(tài)的含義其實(shí)是表示在等待關(guān)閉。怎么理解呢?當(dāng)對(duì)方close一個(gè)SOCKET后發(fā)送FIN報(bào)文給自己,你系統(tǒng)毫無(wú)疑問(wèn)地會(huì)回應(yīng)一個(gè)ACK報(bào)文給對(duì)方,此時(shí)則進(jìn)入到CLOSE_WAIT狀態(tài)。接下來(lái)呢,實(shí)際上你真正需要考慮的事情是察看你是否還有數(shù)據(jù)發(fā)送給對(duì)方,如果沒(méi)有的話,那么你也就可以 close這個(gè)SOCKET,發(fā)送FIN報(bào)文給對(duì)方,也即關(guān)閉連接。所以你在CLOSE_WAIT狀態(tài)下,需要完成的事情是等待你去關(guān)閉連接。(被動(dòng)方)

LAST_ACK: 這個(gè)狀態(tài)還是比較容易好理解的,它是被動(dòng)關(guān)閉一方在發(fā)送FIN報(bào)文后,最后等待對(duì)方的ACK報(bào)文。當(dāng)收到ACK報(bào)文后,也即可以進(jìn)入到CLOSED可用狀態(tài)了。(被動(dòng)方)

TIME_WAIT: 表示收到了對(duì)方的FIN報(bào)文,并發(fā)送出了ACK報(bào)文,就等2MSL后即可回到CLOSED可用狀態(tài)了。如果FINWAIT1狀態(tài)下,收到了對(duì)方同時(shí)帶FIN標(biāo)志和ACK標(biāo)志的報(bào)文時(shí),可以直接進(jìn)入到TIME_WAIT狀態(tài),而無(wú)須經(jīng)過(guò)FIN_WAIT_2狀態(tài)。(主動(dòng)方)

CLOSED: 表示連接中斷。

例:

????1.OSI 模型中物理層,數(shù)據(jù)鏈路層,網(wǎng)絡(luò)層,傳輸層中的數(shù)據(jù)傳輸單位分別是什么?其他三個(gè)層的名稱是什么?

????答:物理層單位為比特bit,數(shù)據(jù)鏈路層單位為幀,網(wǎng)絡(luò)層單位為包,傳輸層單位為段,其他三個(gè)層分別是會(huì)話層,表示層,應(yīng)用層。

????2.簡(jiǎn)述為什么說(shuō) TCP 是可靠連接而 UDP 是不可靠連接?

????答:TCP是面向連接的協(xié)議(三次握手,四次揮手),全雙工,半關(guān)閉,將數(shù)據(jù)打成段,排序,錯(cuò)誤檢查,確認(rèn)機(jī)制,數(shù)據(jù)恢復(fù),重傳,流量控制,滑動(dòng)窗口,擁塞控制,慢啟動(dòng)和擁塞避免算法。

TCP 超時(shí)重傳

異常網(wǎng)絡(luò)狀況下(開(kāi)始出現(xiàn)超時(shí)或丟包),TCP 控制數(shù)據(jù)傳輸以保證其承諾的可靠服務(wù)

TCP 服務(wù)必須能夠重傳超時(shí)時(shí)間內(nèi)未收到確認(rèn)的TCP 報(bào)文段。為此,TCP 模塊為每個(gè)TCP 報(bào)文段都維護(hù)一個(gè)重傳定時(shí)器,該定時(shí)器在TCP 報(bào)文段第一次被發(fā)送時(shí)啟動(dòng)。如果超時(shí)時(shí)間內(nèi)未收到接收方的應(yīng)答,TCP 模塊將重傳TCP 報(bào)文段并重置定時(shí)器。至于下次重傳的超時(shí)時(shí)間如何選擇,以及最多執(zhí)行多少次重傳,就是TCP 的重傳策略

與TCP 超時(shí)重傳相關(guān)的兩個(gè)內(nèi)核參數(shù):

/proc/sys/net/ipv4/tcp_retries1 ,指定在底層IP 接管之前TCP最少執(zhí)行的重傳次數(shù),默認(rèn)值是3

????/proc/sys/net/ipv4/tcp_retries2 ,指定連接放棄前TCP最多可以執(zhí)行的重傳次數(shù),默認(rèn)值15 (一般對(duì)應(yīng)13 ~30min)

擁塞控制

TCP 為提高網(wǎng)絡(luò)利用率,降低丟包率,并保證網(wǎng)絡(luò)資源對(duì)每條數(shù)據(jù)流的公平性。即所謂的擁塞控制

TCP 擁塞控制的標(biāo)準(zhǔn)文檔是RFC 5681 ,其中詳細(xì)介紹了擁塞控制的四個(gè)部分:慢啟動(dòng)(slow start )、擁塞避免(congestion avoidance )、快速重傳(fast retransmit )和快速恢復(fù)(fast recovery )。擁塞控制算法在Linux下有多種實(shí)現(xiàn),比如reno 算法、vegas 算法和cubic 算法等。它們或者部分或者全部實(shí)現(xiàn)了上述四個(gè)部分

當(dāng)前所使用的擁塞控制算法

/proc/sys/net/ipv4/tcp_congestion_control

映射第四層到應(yīng)用程序

UDP特性

工作在傳輸層

提供不可靠的網(wǎng)絡(luò)訪問(wèn)

非面向連接協(xié)議

有限的錯(cuò)誤檢查

傳輸性能高

ARP表

[root@centos7 ~]#ip neigh 192.168.74.1 dev eth0 lladdr 00:50:56:c0:00:01 REACHABLE 192.168.74.254 dev eth0 lladdr 00:50:56:e3:29:de STALE 192.168.199.1 dev eth1 lladdr d4:ee:07:52:3a:46 STALE 192.168.199.207 dev eth1 lladdr ac:c1:ee:7b:a3:5b STALE [root@centos7 ~]#arp -n Address HWtype HWaddress Flags Mask Iface 192.168.74.1 ether 00:50:56:c0:00:01 C eth0 192.168.74.254 ether 00:50:56:e3:29:de C eth0 192.168.199.1 ether d4:ee:07:52:3a:46 C eth1 192.168.199.207 ether ac:c1:ee:7b:a3:5b C eth1

Internet層

Internet Protocol (IP) 因特網(wǎng)協(xié)議(IP)

Internet Control Message 因特網(wǎng)控制消息

Protocol (ICMP) 協(xié)議(ICMP)

Address Resolution 地址解析

Protocol (ARP) 協(xié)議(ARP)

Reverse Address 反向地址

Resolution Protocol (RARP) 解析協(xié)議(RARP)

Internet協(xié)議特征????

????運(yùn)行于OSI網(wǎng)絡(luò)層

????面向無(wú)連接的協(xié)議

????獨(dú)立處理數(shù)據(jù)包

????分層編址

????盡力而為傳輸

????無(wú)數(shù)據(jù)恢復(fù)功能

IP PDU 報(bào)頭

版本: 占4位,指 IP 協(xié)議的版本目前的IP 協(xié)議版本號(hào)為4

首部長(zhǎng)度: 占4 位, 可表示的最大數(shù)值是15個(gè)單位,一個(gè)單位為4字節(jié),因此IP 的首部長(zhǎng)度的最大值是60 字節(jié)

區(qū)分服務(wù): 占8 位, 用來(lái)獲得更好的服務(wù), 在舊標(biāo)準(zhǔn)中叫做服務(wù)類(lèi)型,但實(shí)際上一直未被使用過(guò). 后改名為區(qū)分服務(wù). 只有在使用區(qū)分服務(wù)(DiffServ) 時(shí), 這個(gè)字段才起作用. 一般的情況下都不使用

總長(zhǎng)度: 占16 位, 指首部和數(shù)據(jù)之和的長(zhǎng)度, 單位為字節(jié), 因此數(shù)據(jù)報(bào)為的最大長(zhǎng)度為 65535 ?字節(jié).總長(zhǎng)度必須不超過(guò)最大傳送單元MTU

標(biāo)識(shí): 占16 位, 它是一個(gè)計(jì)數(shù)器, 通常,每發(fā)送一個(gè)報(bào)文,改值會(huì)加1,也用于數(shù)據(jù)包分片,在同一個(gè)包的若干分片中,該值是相同的

標(biāo)志(flag): 占3 位, 目前只有前兩位有意義

MF :標(biāo)志字段的最低位是MF(More Fragment),MF=1表示后面還有分片。MF=0表示最后一個(gè)分片

DF :標(biāo)志字段中間的一位是DF(Don’t Fragment)當(dāng),只有當(dāng)DF=0時(shí)才允許分片片偏移:?占12?位,?指較長(zhǎng)的分組在分片后某片在原分組中的相對(duì)位置.?片偏移以8?個(gè)字節(jié)為偏移單位

???????生存時(shí)間: 占8位, 記為T(mén)TL (Time To Live) 數(shù)據(jù)報(bào)在網(wǎng)絡(luò)中可通過(guò)的路由器數(shù)的最大值,TTL 字段是由發(fā)送端初始設(shè)置一個(gè)8 bit字段. 推薦的初始值由分配數(shù)字RFC指定, 當(dāng)前值為64.發(fā)送ICMP把回顯應(yīng)答時(shí)經(jīng)常把TTL值設(shè)為最大值255

???????協(xié)議: 占8 位, 指出此數(shù)據(jù)報(bào)攜帶的數(shù)據(jù)使用何種協(xié)議以便目的主機(jī)的IP 層將數(shù)據(jù)部分上交給哪個(gè)處理過(guò)程, 1表示為 ICMP協(xié)議, 2表示為IGMP協(xié)議, 6表示為T(mén)CP協(xié)議, 17表示為UDP協(xié)議

???????首部檢驗(yàn)和: 占16 位, 只檢驗(yàn)數(shù)據(jù)報(bào)的首部不檢驗(yàn)數(shù)據(jù)部分.這里不采用 CRC 檢驗(yàn)碼而采用簡(jiǎn)單的計(jì)算方法

???????源地址和目的地址:都各占4字節(jié), 分別記錄源地址和目的地址

IP PDU報(bào)頭示例

片偏移以8個(gè)字節(jié)為偏移單位

相關(guān)新聞

歷經(jīng)多年發(fā)展,已成為國(guó)內(nèi)好評(píng)如潮的Linux云計(jì)算運(yùn)維、SRE、Devops、網(wǎng)絡(luò)安全、云原生、Go、Python開(kāi)發(fā)專(zhuān)業(yè)人才培訓(xùn)機(jī)構(gòu)!