欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費電子書(shū)等14項超值服

開(kāi)通VIP
《TCP/IP詳解》讀書(shū)筆記
http://blog.csdn.net/peter517/article/details/8953741/
2013
本書(shū)以UNIX為背景,緊貼實(shí)際介紹了數據鏈層、網(wǎng)絡(luò )層、運輸層

一、整體概念

1.各層協(xié)議的關(guān)系,只討論四層

各層常見(jiàn)的協(xié)議:

網(wǎng)絡(luò )層協(xié)議:IP協(xié)議、ICMP協(xié)議、ARP協(xié)議、RARP協(xié)議。
傳輸層協(xié)議:TCP協(xié)議、UDP協(xié)議。
應用層協(xié)議:FTP、Telnet、SMTP、HTTP、RIP、NFS、DNS。

STMP、POP3、IMAP都是郵件服務(wù)協(xié)議,STMP主要負責發(fā)送和轉發(fā),POP3和IMAP負責接收

具體如下:


2.各層之間的數據


二、數據鏈路層



三、IP層

1.報文格式


●版本(Version)字段:占4比特。用來(lái)表明IP協(xié)議實(shí)現的版本號,當前一般為IPv4,即0100。

●報頭長(cháng)度(Internet Header Length,IHL)字段:占4比特(以4字節為單位)。是頭部占32比特的數字,包括可選項。普通IP數據報(沒(méi)有任何選項),該字段的值是5,即160比特=20字節。此字段最大值為60字節。

●服務(wù)類(lèi)型(Type of Service ,TOS)字段:占8比特。其中前3比特為優(yōu)先權子字段(Precedence,現已被忽略)。第8比特保留未用。第4至第7比特分別代表延遲、吞吐量、可靠性和花費。當它們取值為1時(shí)分別代表要求最小時(shí)延、最大吞吐量、最高可靠性和最小費用。這4比特的服務(wù)類(lèi)型中只能置其中1比特為1??梢匀珵?,若全為0則表示一般服務(wù)。服務(wù)類(lèi)型字段聲明了數據報被網(wǎng)絡(luò )系統傳輸時(shí)可以被怎樣處理。例如:TELNET協(xié)議可能要求有最小的延遲,FTP協(xié)議(數據)可能要求有最大吞吐量,SNMP協(xié)議可能要求有最高可靠性,NNTP(Network News Transfer Protocol,網(wǎng)絡(luò )新聞傳輸協(xié)議)可能要求最小費用,而ICMP協(xié)議可能無(wú)特殊要求(4比特全為0)。實(shí)際上,大部分主機會(huì )忽略這個(gè)字段,但一些動(dòng)態(tài)路由協(xié)議如OSPF(Open Shortest Path First Protocol)、IS-IS(Intermediate System to Intermediate System Protocol)可以根據這些字段的值進(jìn)行路由決策。

●總長(cháng)度字段:占16比特。指明整個(gè)數據報的長(cháng)度(以字節為單位)。最大長(cháng)度為65535字節。

●標識字段:占16比特。用來(lái)唯一地標識主機發(fā)送的每一份數據報。通常每發(fā)一份報文,它的值會(huì )加1。

●標志位字段:占3比特。標志一份數據報是否要求分段。

●段偏移字段:占13比特。如果一份數據報要求分段的話(huà),此字段指明該段偏移距原始數據報開(kāi)始的位置。

●生存期(TTL:Time to Live)字段:占8比特。用來(lái)設置數據報最多可以經(jīng)過(guò)的路由器數。由發(fā)送數據的源主機設置,通常為32、64、128等。每經(jīng)過(guò)一個(gè)路由器,其值減1,直到0時(shí)該數據報被丟棄。

●協(xié)議字段:占8比特。指明IP層所封裝的上層協(xié)議類(lèi)型,如ICMP(1)、IGMP(2) 、TCP(6)、UDP(17)等。

●頭部校驗和字段:占16比特。內容是根據IP頭部計算得到的校驗和碼。計算方法是:對頭部中每個(gè)16比特進(jìn)行二進(jìn)制反碼求和。(和ICMP、IGMP、TCP、UDP不同,IP不對頭部后的數據進(jìn)行校驗)。

●源IP地址、目標IP地址字段:各占32比特。用來(lái)標明發(fā)送IP數據報文的源主機地址和接收IP報文的目標主機地址。
可選項字段:占32比特。用來(lái)定義一些任選項:如記錄路徑、時(shí)間戳等。這些選項很少被使用,同時(shí)并不是所有主機和路由器都支持這些選項??蛇x項字段的長(cháng)度必須是32比特的整數倍,如果不足,必須填充0以達到此長(cháng)度要求。

2.ip分片

鏈路層具有最大傳輸單元MTU這個(gè)特性,它限制了數據幀的最大長(cháng)度,不同的網(wǎng)絡(luò )類(lèi)型都有一個(gè)上限值。以太網(wǎng)的MTU是1500。如果IP層有數據包要傳,而且數據包的長(cháng)度超過(guò)了MTU,那么IP層就要對數據包進(jìn)行分片(fragmentation)操作,使每一片的長(cháng)度都小于或等于MTU。我們假設要傳輸一個(gè)UDP數據包,以太網(wǎng)的MTU為1500字節,一般IP首部為20字節,UDP首部為8字節,數據的凈荷(payload)部分預留是1500-20-8=1472字節。如果數據部分大于1472字節,就會(huì )出現分片現象。

傳輸層的首部只出現在第一片數據中,ip的每個(gè)片段都包含一個(gè)首部,其中有一個(gè)偏移量屬性,表示該片段在整個(gè)數據中的位置

TCP也會(huì )進(jìn)行分片,TCP分段產(chǎn)生原因是MSS(TCP數據包每次能夠傳輸的最大數據分段),TCP協(xié)議在實(shí)現的時(shí)候往往用MTU值代替(需要減去IP數據包包頭的大小20Bytes和TCP數據段的包頭20Bytes)所以一般MSS值1460,故采用TCP協(xié)議進(jìn)行數據傳輸,是不會(huì )造成IP分片的。若數據過(guò)大,只會(huì )在傳輸層進(jìn)行數據分段,到了IP層就不用分片。而我們常提到的IP分片是由于UDP傳輸協(xié)議造成的,因為UDP傳輸協(xié)議并未限定傳輸數據報的大小。

3.路由器內部選路協(xié)議

路由器內部選路協(xié)議即是在路由器路由表給定的情況下進(jìn)行選路
路由器或者主機將會(huì )用如下的方式來(lái)處理某一個(gè)IP數據包:

如果IP數據包的TTL(生命周期)以到,則該IP數據包就被拋棄。

a.搜索匹配的主機地址:搜索路由表,尋找與目的IP地址完全匹配的表項(網(wǎng)絡(luò )號和主機號都匹配)。如果找到,則把報文發(fā)送給指定的下一跳路由器。
b.搜索匹配的網(wǎng)絡(luò )地址:搜索路由表,尋找與目的IP地址的網(wǎng)絡(luò )號相匹配的表項。如果找到,則把報文發(fā)送給指定的下一跳路由器。
c.搜索默認表項:尋找默認路由表項。如果找到,則把報文發(fā)送給表項指定的下一跳路由器。

4.路由器外部選路協(xié)議

路由器內部選路協(xié)議即是更新路由表
DV和LS

5.ICMP協(xié)議

為提高IP數據包交付成功的機會(huì ),網(wǎng)際層使用了因特網(wǎng)控制報文協(xié)議ICMP(Internet Control Message Protocol)。ICMP允許主機或路由器報告差錯情況和提供有關(guān)異常情況的報告,ICMP是因特網(wǎng)標準協(xié)議,但不是高層協(xié)議,而是網(wǎng)絡(luò )層協(xié)議。ICMP報文作為IP層數據包的數據,加上數據包的首部,組成數據包發(fā)送出去。
ICMP主要完成以下2個(gè)功能:

(1)不能到達目的地警告:如果網(wǎng)絡(luò )上的主機檢測到其目的是不可達的,不管是因為目的地址與網(wǎng)絡(luò )上的機器操作不匹配,還是因為連接錯誤,它都將向發(fā)送方發(fā)送一個(gè)“目的地址不可達”的報文。

(2)重定向路由:網(wǎng)關(guān)發(fā)送ICMP重定向報文,以告訴發(fā)送方使用另一個(gè)網(wǎng)關(guān)。比如,網(wǎng)關(guān)A接收來(lái)自某主機的一個(gè)報文,該報文要發(fā)送到某一指定的網(wǎng)絡(luò ),如果網(wǎng)關(guān)A知道主機如果使用網(wǎng)關(guān)B能夠更快地到達目的網(wǎng)絡(luò ),網(wǎng)關(guān)A就將發(fā)送一個(gè)ICMP重定向報文,告訴發(fā)送主機將報文發(fā)送到網(wǎng)關(guān)B。

這種機制使得所有智能特性放在的路由器,主機只要通過(guò)重定向報文逐步學(xué)習來(lái)完善路由器選路

6.IGMP協(xié)議

它讓一個(gè)物理網(wǎng)絡(luò )上的所有系統知道主機當前所在的多播組。多播路由器需要這些信息以便知道多播數據報應該向哪些接口轉發(fā)。正如ICMP一樣, IGMP 也被當作IP 層的一部分。IGMP報文通過(guò)IP數據報進(jìn)行傳輸。





四、運輸層

1.tcp首部格式



序列號用來(lái)標識從TCP發(fā)端向TCP收端發(fā)送的數據字節流,它表示在這個(gè)報文段中的第一個(gè)數據字節。反過(guò)來(lái),確認序列號是表示TCP發(fā)端期望從TCP收端收到的下一個(gè)字節。

首部長(cháng)度給出首部中32bit字的數目,跟IP首部一樣,TCP最多有60字節的首部。

接下來(lái)是6個(gè)標志比特,它們中的多個(gè)可以被同時(shí)設置為1:
URG:緊急指針有效,與后面的緊急指針結合起來(lái)
ACK:確認序號有效
PSH:接收方盡快將這個(gè)報文段交給應用層
RST:重建連接
SYN:同步序號用來(lái)發(fā)起一個(gè)連接
FIN:發(fā)端完成發(fā)送任務(wù),將要關(guān)閉連接

檢驗和的計算方法和UDP中的檢驗和一樣,也要加上偽首部,也要填充奇數字節,與UDP不同的是,TCP強制要求計算檢驗和,而UDP的檢驗和是可選的。

窗口大小表明接收端當前的接收能力,以字節為單位,16位窗口限制了最大值為65535字節,在選項字段中,有一個(gè)窗口刻度選項,允許這個(gè)值按比例放大。

緊急指針是一個(gè)正的偏移量,和序號中的值相加表示緊急指針最后一個(gè)字節的序號。

選項字段可以包括最長(cháng)報文大?。∕SS),這是最常見(jiàn)的可選字段。每個(gè)連接方通常都在通信的第一個(gè)報文段中指明這個(gè)選項,表明本端所能接收的最大長(cháng)度的報文段;還有上面我們提到的窗口擴大選項以及時(shí)間戳選項,我們將在后面看到時(shí)間戳選項的作用。


2.UDP格式

offset (bits)0 – 1516 – 31
0Source Port NumberDestination Port Number
32LengthChecksum
64+ 
Data
 


3.三次握手

這里之所以需要三次是因為,無(wú)論是客戶(hù)端還是服務(wù)端,都需要對自己發(fā)出的包文進(jìn)行確認

狀態(tài)轉移圖:

4.TCP的傳輸控制

a.流量控制:根據發(fā)送方和接收反方的緩存空間,控制端到端的流量,以免會(huì )產(chǎn)生發(fā)送過(guò)快導致收端溢出,或者因收端處理太快而浪費時(shí)間的狀態(tài)。用的策略是:滑動(dòng)窗口,以字節為單位,與網(wǎng)絡(luò )大環(huán)境無(wú)關(guān)

滑動(dòng)窗口有兩種操作:

合攏:表示已經(jīng)收到相應字節的確認了(左邊界向右邊界移動(dòng))
展開(kāi):表示允許緩存發(fā)送更多的字節(右邊界向右移動(dòng))

某些時(shí)候,由于發(fā)端或收端的數據很慢,會(huì )引起大量的1字節數據窗口,浪費很多資源,有以下兩種情況:

(1)發(fā)端的進(jìn)程產(chǎn)生數據很慢時(shí)候,時(shí)不時(shí)的來(lái)個(gè)1字節數據,那么TCP就會(huì )1字節1字節的發(fā)送,效率很低。
解決方法(Nagle算法):TCP連接上只能有一個(gè)未被確認的小分組,在該分組確認前不能發(fā)送其它小分組
  • 將第一塊數據發(fā)出去
  • 然后等到發(fā)送緩存有足夠多的數據(最大報文段長(cháng)度),或者等到收端確認的ACK時(shí)再發(fā)送數據。
  • 重復b的過(guò)程
(2)收端進(jìn)程由于消耗數據很慢,所以可能會(huì )有這么一種情況,收端會(huì )發(fā)送其窗口大小為1的信息,然后有是1字節的傳輸
解決辦法(2種)
  • Clark方法:在接收緩存的一半變空,或者有足夠空間放最大報文長(cháng)度之前,宣告接收窗口大小為0
  • 推遲確認:在對收到的報文段確認之前等待到足夠的接收緩存,或者等待到一個(gè)時(shí)間段


b.擁塞控制:根據網(wǎng)絡(luò )的擁塞情況,控制兩端的流量,擁塞的三種策略:慢啟動(dòng)(指數增大),擁塞避免(加法增大),擁塞檢測(除2減少,或叫做乘法減少),與網(wǎng)絡(luò )大環(huán)境有關(guān)

擁塞窗口機制

擁塞窗口:發(fā)送方使用的流量控制,每收到一個(gè)ACK,就增加一個(gè)報文段
通告窗口:接收方使用的流量控制

發(fā)送方取擁塞窗口和通告窗口的最小值最為發(fā)送上限

(1)慢啟動(dòng):指數增大
/* ssthresh是慢開(kāi)始門(mén)限,cwnd是擁塞窗口 */
cwnd = 1;(1表示一個(gè)MSS報文段,滑動(dòng)窗口是一個(gè)字節)
while ( cwnd < ssthresh )
    if( 發(fā)出的報文段確認 )
       cwd *= 2;

(2)擁塞避免:加法增大
當到達ssthresh之后,就是加法階段了,每收到一個(gè)確認,cwd += 1;       
(3)擁塞檢測:乘法減少(除2減少)
當報文需要重傳時(shí),說(shuō)明擁塞可能發(fā)生了,由于重傳有2種情況,所以也分兩種處理

  由于沒(méi)有收到ACK,超時(shí)重傳,這是擁塞的可能性比較大,如下做強反映調整
  • ssthresh /= 2;
  • cwnd = 1;
  • 重新慢啟動(dòng)過(guò)程
  由于收到3個(gè)重復的ACK的重傳,采取弱反映
  • ssthresh /= 2;
  • cwnd = ssthresh;
  • 開(kāi)始擁塞避免過(guò)程

c.差錯控制:保證數據:按序,沒(méi)有差錯,沒(méi)有部分丟失,沒(méi)有重復的交給應用層。方法就是:校驗和,確認,超時(shí)重傳

(1)校驗和(段內部):和UDP的做法一樣,也要偽首部,和UDP不同的是這個(gè)功能在TCP中是必須的

(2)確認:ACK的確認機制(下面是一些原則)
  • ACK報文不需要確認,也不消耗序號
  • 當一端發(fā)送數據時(shí),盡量包含捎帶確認。
  • 收端推遲發(fā)送ACK報文段,如果僅有一個(gè)未確認的按序報文段;延遲到500ms,或者有第二個(gè)報文段接收時(shí)(下一條),或者有數據要發(fā)送時(shí)(下一條)
  • 任何時(shí)候,不能有兩個(gè)(以上)未確認的報文段(就是說(shuō)如果收端有兩個(gè)未確認的按序報文段,就馬上發(fā)送ACK報文段進(jìn)行確認)
  • 當收到一個(gè)序號比期望序號還大的報文段時(shí),馬上發(fā)送ACK,讓發(fā)端進(jìn)行快重傳
  • 收到重復的報文段,就立即發(fā)送確認(解決ACK丟失問(wèn)題)
(3)確認類(lèi)型
  • 累計確認:收端忽略掉所有失序報文,告知發(fā)端他期待下一個(gè)收到的序號,叫做肯定累計ACK??隙ㄊ钦f(shuō):丟棄的,丟失的,重復的都不報告。(累積是什么意思?累積就是我連著(zhù)發(fā)送了兩個(gè)1024的數據包,收到一個(gè)(只一個(gè))ACK確認包,序號為2049,則表示我發(fā)送的兩個(gè)1024的數據都已收到了)
  • 選擇確認(SACK):在某些新TCP實(shí)現里面實(shí)現了這個(gè)東西,報告失序和重復的數據,作偽TCP首部選項字段的一部分。
(4)重傳(兩種情況) : 重傳定時(shí)器時(shí)間到 或者 發(fā)端收到重復的三個(gè)ACK(快重傳)


5.TCP三種計時(shí)器

A:重傳計時(shí)器  為了控制丟失的或丟棄的數據段,TCP采用重傳記時(shí)器來(lái)保障的
當發(fā)送方發(fā)送一個(gè)數據后,就立即啟用重傳記時(shí)器。1:如果在記時(shí)器截止時(shí)間前收到了確認,就撤消。  2:如果沒(méi)有收到就重新發(fā)送數據。同時(shí)也起用記時(shí)器。

B:堅持計時(shí)器:為了對付零窗口,假如接受端宣布窗口關(guān)閉了,發(fā)送端則停止發(fā)送數據了,直到接收端從新開(kāi)始打開(kāi)并發(fā)送一個(gè)確認。 但這個(gè)確認有可能丟棄。這樣就會(huì )造成發(fā)送端在“死等待”。雙方進(jìn)入死鎖狀態(tài)。為了防止這種現象的發(fā)生,發(fā)送端就起用了堅持記時(shí)器,等記時(shí)器到期限時(shí),就會(huì )主動(dòng)的發(fā)送探測包文。
C:?;钣嫊r(shí)器  ?;钣洉r(shí)器是用來(lái)防止在兩個(gè)tcp之間的連接長(cháng)時(shí)間空閑。假如客戶(hù)打開(kāi)服務(wù)器的連接就傳了一部分數據。然后就不傳輸了,不管客戶(hù)是什么原因,這個(gè)連接還是打開(kāi)的。如果永遠這樣,就浪費資源了。為解決這個(gè)問(wèn)題,我們使用了?;钣洉r(shí)器。如果超過(guò)兩個(gè)小時(shí)了,還沒(méi)有信息傳輸,則會(huì )發(fā)探測數據段,連續發(fā)10個(gè)(每個(gè)隔75s) 假如還是沒(méi)有,就關(guān)閉


6.TCP關(guān)閉狀態(tài)轉移




幾個(gè)重要的狀態(tài):

FIN_WAIT_2:
上面已經(jīng)詳細解釋了這種狀態(tài),實(shí)際上FIN_WAIT_2狀態(tài)下的SOCKET,表示半連接,也即有一方要求close連接,但另外還告訴對方,我暫時(shí)還有點(diǎn)數據需要傳送給你(如圖中的服務(wù)器),稍后再關(guān)閉連接。

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

TIME_WAIT
保證發(fā)送端的最后一個(gè)ACK可以被正確的接收到

RST:(Reset the connection)用于復位因某種原因引起出現的錯誤連接,也用來(lái)拒絕非法數據和請求。會(huì )直接關(guān)閉連接

五、應用層

常見(jiàn)的基于TCP協(xié)議的應用有:HTTP、SMTP、Telnet、FTP等
常見(jiàn)的基于UDP協(xié)議的應用有:DNS、SNMP等

具體的如下圖所示:



本站僅提供存儲服務(wù),所有內容均由用戶(hù)發(fā)布,如發(fā)現有害或侵權內容,請點(diǎn)擊舉報。
打開(kāi)APP,閱讀全文并永久保存 查看更多類(lèi)似文章
猜你喜歡
類(lèi)似文章
計算機網(wǎng)絡(luò )知識梳理(4)——TCP/UDP、TCP三次握手與四次揮手
網(wǎng)絡(luò )編程 - TCP/IP協(xié)議
【期末復習】計算機網(wǎng)絡(luò ) 謝希仁版(五)運輸層(重點(diǎn))
計算機網(wǎng)絡(luò )03-傳輸層、可靠數據傳輸、UDP與TCP
UC頭條:計算機網(wǎng)絡(luò )
UC頭條:TCP為什么安全
更多類(lèi)似文章 >>
生活服務(wù)
分享 收藏 導長(cháng)圖 關(guān)注 下載文章
綁定賬號成功
后續可登錄賬號暢享VIP特權!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服

欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久