網(wǎng)站開發(fā)畢業(yè)論文范文微博推廣方法有哪些
文章目錄
- 運(yùn)輸層
- 運(yùn)輸層協(xié)議概述
- 進(jìn)程之間的通信
- 運(yùn)輸層的兩個(gè)主要協(xié)議
- 運(yùn)輸層的端口
- 用戶數(shù)據(jù)報(bào)協(xié)議 UDP
- UDP 概述
- UDP 的首部格式
- 傳輸控制協(xié)議 TCP 概述
- TCP 最主要的特點(diǎn)
- TCP 的連接
- 可靠傳輸?shù)墓ぷ髟?/li>
- 停止等待協(xié)議
- 連續(xù) ARQ協(xié)議
- TCP 報(bào)文段的首部格式
- TCP 可靠傳輸?shù)膶?shí)現(xiàn)
- 以字節(jié)為單位的滑動(dòng)窗口
- 超時(shí)重傳時(shí)間的選擇
- 選擇確認(rèn) SACK
- TCP的流量控制
- 利用滑動(dòng)窗口實(shí)現(xiàn)流量控制
- TCP 的傳輸效率
- TCP 的擁塞控制
- 擁塞控制的一般原理
- TCP 的擁塞控制方法
- 主動(dòng)隊(duì)列管理AQM
- TCP 的運(yùn)輸連接管理
- TCP 的連接建立
- TCP 的連接釋放
- TCP 的有限狀態(tài)機(jī)
運(yùn)輸層
運(yùn)輸層協(xié)議概述
進(jìn)程之間的通信
運(yùn)輸層向它上面的應(yīng)用層提供通信服務(wù),它屬于面向通信部分的最高層,同時(shí)也是用戶功能中的最低層。
網(wǎng)絡(luò)層為主機(jī)之間的通信提供服務(wù),而運(yùn)輸層則在網(wǎng)絡(luò)層的基礎(chǔ)上,為應(yīng)用進(jìn)程之間的通信提供服務(wù)。
運(yùn)輸層向高層用戶屏蔽了下面網(wǎng)絡(luò)核心的細(xì)節(jié)(如網(wǎng)絡(luò)拓?fù)?、所采用的路由選擇協(xié)議等),它使應(yīng)用進(jìn)程看見的就是好像在兩個(gè)運(yùn)輸層實(shí)體之間有一條端到端的邏輯通信信道當(dāng)運(yùn)輸層采用面向連接的 TCP 協(xié)議時(shí),盡管下面的網(wǎng)絡(luò)是不可靠的(只提供盡最大努力服務(wù)),但這種邏輯通信信道就相當(dāng)于一條全雙工的可靠信道。但當(dāng)運(yùn)輸層采用無連接的UDP 協(xié)議時(shí),這種邏輯通信信道仍然是一條不可靠信道。
運(yùn)輸層的兩個(gè)主要協(xié)議
(1) 用戶數(shù)據(jù)報(bào)協(xié)議 UDP (User Datagram Protocol)
(2) 傳輸控制協(xié)議 TCP (Transmjssion Control Protocol)
運(yùn)輸層的端口
每一個(gè)端口用一個(gè)稱為端口號(hào)(port number) 的正整數(shù)來標(biāo)志。主機(jī)的操作系統(tǒng)提供了接口機(jī)制,使得進(jìn)程能夠通過這種機(jī)制找到所要找的端口。
這種在協(xié)議棧層間的抽象的協(xié)議端口是軟件端口,和路由器或交換機(jī)上的硬件端口是完全不同的概念。硬件端口是不同硬件設(shè)備進(jìn)行交互的接口,而軟件端口是應(yīng)用層的各種協(xié)議進(jìn)程與運(yùn)輸實(shí)體進(jìn)行層間交互的地點(diǎn)。
(I) 服務(wù)器端使用的端口號(hào) 這里又分為兩類,最重要的一類叫作熟知端口號(hào)(wellknown port number)或全球通用端口號(hào).
另一類叫作登記端口號(hào),數(shù)值為 1024~49151 。這類端口號(hào)是為沒有熟知端口號(hào)的應(yīng)用程序使用的。要使用這類端口號(hào)必須存 IANA 按照規(guī)定的手續(xù)登記,以防止重復(fù)。
(2) 客戶端使用的端口號(hào) 數(shù)值為 49152~65535 。由于這類端口號(hào)僅在客戶進(jìn)程運(yùn)行時(shí)才動(dòng)態(tài)選擇,因此又叫作短暫端口號(hào)°。這類端口號(hào)就是臨時(shí)端口號(hào),留給客戶進(jìn)程選擇臨時(shí)使用。當(dāng)服務(wù)器進(jìn)程收到客戶進(jìn)程的報(bào)文時(shí),就知道了客戶進(jìn)程所使用的端口號(hào),因而可以把數(shù)據(jù)發(fā)送給客戶進(jìn)程。通信結(jié)束后,剛才已使用過的客戶端口號(hào)就被系統(tǒng)收回,以便給其他客戶進(jìn)程使用。
用戶數(shù)據(jù)報(bào)協(xié)議 UDP
UDP 概述
(1) UDP 是無連接的,因此減少了開銷和發(fā)送數(shù)據(jù)之前的時(shí)延。
(2) UDP 使用盡最大努力交付,即不保證可靠交付,因此主機(jī)不需要維持復(fù)雜的連接狀態(tài)表。
(3) UDP 是面向報(bào)文的。發(fā)送方的 UDP 對(duì)應(yīng)川程序交下來的報(bào)文,在添加首部后就向下交付 IP 層。
(4) UDP 沒有擁塞控制,因此網(wǎng)絡(luò)出現(xiàn)的擁塞不會(huì)使源主機(jī)的發(fā)送速率降低。
(5) UDP 支持一對(duì)一、一對(duì)多、多對(duì)一和多對(duì)多的交互通信。
(6) UDP 的首部開銷小,只有8個(gè)字節(jié),比 TCP 20 個(gè)字節(jié)的首部要短。
復(fù)用示意圖
UDP 的首部格式
UDP 用戶數(shù)據(jù)報(bào)首部中檢驗(yàn)和的計(jì)算方法有些特殊。在計(jì)箕檢驗(yàn)和時(shí),要在 UDP 用戶數(shù)據(jù)報(bào)之前增加 12 個(gè)字節(jié)的偽首部。所謂“偽首部”是因?yàn)檫@種偽首部并不是 UDP 用戶數(shù)據(jù)報(bào)真正的首部。只是在計(jì)算檢驗(yàn)和時(shí),臨時(shí)添加在 UDP 用戶數(shù)據(jù)報(bào)前面,得到一個(gè)臨時(shí)UDP 用戶數(shù)據(jù)報(bào)。檢驗(yàn)和就是按照這個(gè)臨時(shí)的 UDP 用戶數(shù)據(jù)報(bào)來計(jì)算的。偽首部既不向下傳送也不向上遞交,而僅僅是為了計(jì)算檢驗(yàn)和。
傳輸控制協(xié)議 TCP 概述
TCP 最主要的特點(diǎn)
(I) TCP 是面向連接的運(yùn)輸層協(xié)議。這就是說,應(yīng)用程序在使用TCP 協(xié)議之前,必須先建立 TCP 連接。在傳送數(shù)據(jù)完畢后,必須釋放已經(jīng)建立的 TCP 連接。
(2) TCP 連接只能有兩個(gè)端點(diǎn)。
(3) TCP 提供可靠交付的服務(wù)。通過過 TCP 連接傳送的數(shù)據(jù),無差錯(cuò)、不丟失、不重復(fù),井且按序到達(dá)。
(4) TCP 提供全雙工通信。
(5) 面向字節(jié)流。 TCP 中的“流”(stream)指的是流入到進(jìn)程或從進(jìn)程流出的字節(jié)序列。“面向字節(jié)流”的含義是:雖然應(yīng)用程子和 TCP 的交互是一次幾個(gè)數(shù)據(jù)塊(大小不等),但TCP 把應(yīng)用程序交下來的數(shù)據(jù)僅僅看成是一連串的無結(jié)構(gòu)的字節(jié)流。
TCP 的連接
TCP 連接的端點(diǎn)叫作套接字(socket)或插口
套接字 socket = (IP 地址:端號(hào))
每一條 TCP 連接唯一地被通信兩端的兩個(gè)端點(diǎn)(即套接字對(duì) socket pair) 所確定。
可靠傳輸?shù)墓ぷ髟?/h3>
停止等待協(xié)議
-
無差錯(cuò)情況
停止等待協(xié)議是最簡單的無差錯(cuò)情況。

-
出現(xiàn)差錯(cuò)
第一, 在發(fā)送完一個(gè)分組后,必須暫時(shí)保留已發(fā)送的分組的副本(在發(fā)生超時(shí)直傳時(shí)使用)。只有在收到相應(yīng)的確認(rèn)后才能消除暫時(shí)保衍的分組副本。
第二,分組和確認(rèn)分組都必須進(jìn)行編號(hào)。。這樣才能明確是哪一個(gè)發(fā)送出去的分組收到了確認(rèn),而哪一個(gè)分組還沒有收到確認(rèn)。
第二,超時(shí)計(jì)時(shí)器設(shè)置的重傳時(shí)間應(yīng)當(dāng)比數(shù)據(jù)在分組傳輸?shù)钠骄禃r(shí)間更長一些。
-
確認(rèn)丟失和確認(rèn)遲到

-
信道利用率
停止等待協(xié)議的優(yōu)點(diǎn)是簡單,但缺點(diǎn)是信追利用率太低.

無差錯(cuò)情況
停止等待協(xié)議是最簡單的無差錯(cuò)情況。
出現(xiàn)差錯(cuò)
第一, 在發(fā)送完一個(gè)分組后,必須暫時(shí)保留已發(fā)送的分組的副本(在發(fā)生超時(shí)直傳時(shí)使用)。只有在收到相應(yīng)的確認(rèn)后才能消除暫時(shí)保衍的分組副本。
第二,分組和確認(rèn)分組都必須進(jìn)行編號(hào)。。這樣才能明確是哪一個(gè)發(fā)送出去的分組收到了確認(rèn),而哪一個(gè)分組還沒有收到確認(rèn)。
第二,超時(shí)計(jì)時(shí)器設(shè)置的重傳時(shí)間應(yīng)當(dāng)比數(shù)據(jù)在分組傳輸?shù)钠骄禃r(shí)間更長一些。
確認(rèn)丟失和確認(rèn)遲到
信道利用率
停止等待協(xié)議的優(yōu)點(diǎn)是簡單,但缺點(diǎn)是信追利用率太低.
U=Td/Td+RTT+Ta
連續(xù) ARQ協(xié)議
示發(fā)送方維待的發(fā)送接口,它的意義是:位于發(fā)送窗口內(nèi)的5個(gè)分組都可連續(xù)發(fā)送出去,而不需要等待對(duì)方的確認(rèn)。這樣,信道利用率就提高了。
TCP 報(bào)文段的首部格式
TCP 報(bào)文段首部的前 20 個(gè)字節(jié)是固定的,后面有 4n字節(jié)是。因此 TCP 首部的最小長度是 20 字節(jié)。
首部固定部分各字段的意義如下:
(1) 源端口和目的端口 各占2個(gè)字節(jié),
(2) 序號(hào) 4字節(jié)。TCP向字節(jié)流的。在一個(gè) TCP 連接中傳送的字節(jié)流中的每一個(gè)字節(jié)都按順序編號(hào)。整個(gè)要傳送的字節(jié)流的起始序號(hào)必須在連接建立時(shí)設(shè)置。首部中的序號(hào)字段們則指的是本報(bào)文段所發(fā)送的數(shù)據(jù)的第一個(gè)字節(jié)的序號(hào)。
(3) 確認(rèn)號(hào) 4字節(jié),是期望收到對(duì)方下一個(gè)報(bào)文段的第一個(gè)數(shù)據(jù)字節(jié)的序號(hào)。
(4) 數(shù)據(jù)偏移 4位,它指出 TCP 報(bào)文段的數(shù)據(jù)起始處距離 TCP 報(bào)文段的起始處有多遠(yuǎn)。。這個(gè)字段實(shí)際上是指出 TCP 報(bào)文段的首部長度.
(5) 保留 6位,保留為今后使用,但目前應(yīng)設(shè)為0下面打6個(gè)控制位,用來說明木報(bào)文段的性質(zhì)它們的,意義見下面的(6)~(11)
(6) 緊急 URG (URGent) URG = 1時(shí),表明緊急指針字段有效。它告訴系統(tǒng)此報(bào)文段中有緊急數(shù)據(jù),應(yīng)盡快傳送(相當(dāng)干高優(yōu)先級(jí)的據(jù)),而不要按原來的排隊(duì)順序傳送。
URG 時(shí),發(fā)送應(yīng)用進(jìn)桯就告訴發(fā)送方的 TCP 有緊急數(shù)據(jù)婓傳送。于是發(fā)送方TCP 就把緊急數(shù)據(jù)插入到本報(bào)文段數(shù)據(jù)的最前面,而在緊急數(shù)據(jù)后面的數(shù)據(jù)仍是普通數(shù)據(jù)。這時(shí)要與首部中緊急指針(Urgent Pointer)字段配合使用。
(7) 確認(rèn) ACK (ACKnowledgment) TCP 規(guī)定,在連接建立后所有傳送的報(bào)文段都必須把 ACK 置為
(8) *推送 PSH (PuSH)*當(dāng)兩個(gè)應(yīng)用進(jìn)程進(jìn)行交互式的通信時(shí),有時(shí)在一端的應(yīng)用進(jìn)程希望在鍵入一個(gè)命令后守即就能夠收到對(duì)方的響應(yīng)。
(9) 復(fù)位 RST (ReSeT) 表明 TCP 連接中出現(xiàn)嚴(yán)重差錯(cuò)(如主機(jī)崩潰或其他原因),必須釋放連接,然后再重新建立運(yùn)輸連接。
(10) 同步 SYN (SYNchronization) 在連接建立時(shí)用來同步序號(hào)。表明這是一個(gè)連接諸求報(bào)文段。
(11) 終止 FIN (FINish) 用來釋放一個(gè)連接。
(12) 窗口 2字節(jié)。窗口值是[0, 2^16- l] 之間的整數(shù)。窗口指的是發(fā)送本報(bào)文段的一方的接收窗口(而不是自己的發(fā)送窗口)。接收方的緩存容量單位字節(jié)。
(13) 檢驗(yàn)和 2字節(jié)。檢驗(yàn)和字段檢驗(yàn)的范圍包括首部和數(shù)據(jù)這兩部分。和 UDP用戶數(shù)據(jù)報(bào)一樣,在計(jì)算檢驗(yàn)和時(shí),要在 TCP 報(bào)文段的前面加上 12 字節(jié)的偽首部。
(14) 緊急指針 2字節(jié)。它指出本報(bào)文段中的緊急數(shù)據(jù)的字節(jié)數(shù)(緊急數(shù)據(jù)結(jié)束后就是普通數(shù)據(jù))。
(15) 選項(xiàng) 長度可變,最長可達(dá) 40 字節(jié)。
TCP 可靠傳輸?shù)膶?shí)現(xiàn)
以字節(jié)為單位的滑動(dòng)窗口
第一,緩存空間和序號(hào)空間都是有限的,并且都是循環(huán)使用的
第二,由于緩存或窗口中實(shí)際的字節(jié)數(shù)可能很大
發(fā)送緩存用來暫時(shí)存放:
(1)發(fā)送應(yīng)用程序傳送給發(fā)送方 TCP 準(zhǔn)備發(fā)送的數(shù)據(jù);
(2) TCP 已發(fā)送出但尚未收到確認(rèn)的數(shù)據(jù)。
接收緩存用來暫時(shí)存放:
(1)按序到達(dá)的、但尚未被接收應(yīng)用程序讀取的數(shù)據(jù);
(2)未按序到達(dá)的數(shù)據(jù)。
超時(shí)重傳時(shí)間的選擇
TCP 采用了一種自適應(yīng)算法,它記錄一個(gè)報(bào)文段發(fā)出的時(shí)間,以及收到相應(yīng)的確認(rèn)的時(shí)間。這兩個(gè)時(shí)間之差就是報(bào)文段的往返時(shí)間 RTT TCP 保留了 RTT 的一個(gè)加權(quán)平均往返時(shí)間 RTTs
新的 RTTs = (1- a) (舊的 RTTs) + a*新的 RTT 樣本)
選擇確認(rèn) SACK
描述邊界,防止重傳,只傳輸未被確認(rèn)的
TCP的流量控制
利用滑動(dòng)窗口實(shí)現(xiàn)流量控制
流量控制(flowcontrol)就是讓發(fā)送方的發(fā)送速率不要太快,要讓接收方來得及接收。
![TCP 連接的一方收到零窗口通知,啟動(dòng)持續(xù)計(jì)時(shí)器(persisence timer),就發(fā)送一個(gè)零窗口探測報(bào)文段(僅攜帶1字節(jié)的數(shù)據(jù)),而對(duì)方就在確認(rèn)這個(gè)探測報(bào)文段時(shí)給出了現(xiàn)在的窗口值。
TCP 的傳輸效率
第一種機(jī)制是 TCP 維持一個(gè)變量,它等于最大報(bào)文段長度 MSS 心嚇
只要緩存中存放的數(shù)據(jù)達(dá)到 MISS 字節(jié)時(shí),就組裝成一個(gè) TCP 報(bào)文段發(fā)送出去。第二種機(jī)制是發(fā)送方的應(yīng)用進(jìn)程指明要求發(fā)送報(bào)文段,即 TCP 支持的推送(push)橾作。第三種機(jī)制是發(fā)送方的一個(gè)計(jì)時(shí)器期限到了,這時(shí)就把當(dāng)前已有的緩存數(shù)據(jù)裝入報(bào)文段(但長度不能超過
MSS) 發(fā)送出去。
TCP 的擁塞控制
擁塞控制的一般原理
若對(duì)網(wǎng)絡(luò)中某一資源的需求超過了該資源所能提供的可用部分,網(wǎng)絡(luò)的性能就要變壞。這種情況就叫作擁塞(congestion) 。
擁塞控制就是防止過多的數(shù)據(jù)注入到網(wǎng)絡(luò)中,這樣可以使網(wǎng)絡(luò)中的路由器或鏈路不至于過載。擁塞控制所要做的都有一個(gè)前提,就是網(wǎng)絡(luò)能夠承受現(xiàn)有的網(wǎng)絡(luò)負(fù)荷。流量控制往往是指點(diǎn)對(duì)點(diǎn)通信量的控制。
TCP 的擁塞控制方法
TCP 進(jìn)行擁塞控制的算法有四種,即慢開始(slow-start)、擁塞避免(congestion avoidance) 、快重傳(fast retransmit)和快恢復(fù)(fast recovery)
- 慢開始和擁塞避免
作基于窗口的擁塞控制。為此,發(fā)送方維持一個(gè)叫作擁塞窗
cwnd (congestion winndow) 的狀態(tài)變量。擁塞餅口的大小取決千網(wǎng)絡(luò)的擁塞程度,并且是動(dòng)態(tài)變化著的。發(fā)送方自己的發(fā)送窗口等于擁塞窗口。
只要為在超時(shí)時(shí)間內(nèi)收到確認(rèn)消息就可以認(rèn)為網(wǎng)絡(luò)擁塞。
慢開始算法的思路是這樣的:當(dāng)主機(jī)在已建立的 TCP 連接上開始發(fā)送數(shù)由小到大逐漸增大注入到網(wǎng)絡(luò)中的數(shù)據(jù)字節(jié),也就是說,由小到大逐漸增大擁塞窗口數(shù)值。
為了防止擁塞窗口 cwnd 增長過大引起網(wǎng)絡(luò)擁塞,還需要設(shè)置一個(gè)慢開始門限 ss hresh狀態(tài)變量(可以把門限 ss hresh 的數(shù)值設(shè)置大些,
采用快重傳算法可以讓發(fā)送方盡早知道發(fā)生了個(gè)別報(bào)文段的丟失。
接收方窗口又稱為通知窗口(advertised ndow) 。因此,從接收方對(duì)發(fā)送方的流護(hù)控制的角度考慮,發(fā)送方的發(fā)送窗口一定不能超過對(duì)方給出的接收方窗口值 rwnd
主動(dòng)隊(duì)列管理AQM
網(wǎng)絡(luò)層的策略對(duì) TCP 擁塞控制影響最大的就是路由器的分組丟棄策略。在最簡單的情況下,路由器的隊(duì)列通常都按照“先進(jìn)先出 “FIFO (First In First Out)的規(guī)則處理到來的分組。
應(yīng)當(dāng)在隊(duì)列長度達(dá)到某個(gè)值得警惕的數(shù)值時(shí)(即當(dāng)網(wǎng)絡(luò)擁塞有了某些擁塞征兆時(shí)),就主動(dòng)丟棄到達(dá)的分組。這樣就提醒了發(fā)送方放慢發(fā)送的速率,因而有可能使網(wǎng)絡(luò)擁塞的程度減輕,
TCP 的運(yùn)輸連接管理
TCP 的連接建立
三次握手
TCP 的連接釋放
TCP 還設(shè)有個(gè)?;钣?jì)時(shí)器keepalive timer) 。設(shè)想有這樣的情況:
客戶已啟動(dòng)與服務(wù)器建立CP 連核。但后來客戶端的主機(jī)突然出故障。