1、網路層提供主機之間的邏輯通訊,運輸層提供的的是應用程序間的邏輯通訊。運輸層的復用和分用2、運輸車層對報文的差錯檢測,網路層只有對ip首部的檢測
3、傳輸層的主要協議:tcp udp。故傳輸層 不一定是面向連線的
復用:多個應用程序都可以同時通過傳輸層進行通訊 ,
分用:運輸層從ip層收到資料後分發給各應用程序
應用應用層協議
運輸層協議
dnsudp
tftp
udprip(路由資訊協議)
udpdhcp
udp網路管理
snmp
udp遠端檔案伺服器
nfsudp
ip**
udp流式**
通訊時不僅要知道ip位址,還要知道埠號(用於尋找相應的程序)。
tcp ip 16位埠號:
0-1024:服務端使用的埠號
1024-49151:登記埠號
49152-65535:客戶端使用的埠號
特點:1、無連線
2、不可靠
3、面向報文
4、沒有擁塞控制
5、支援一對
一、一對多、多對一和多對多的通訊
5、udp首部小,8個位元組
udp首部:源埠、目的埠、長度、檢驗和,各佔2個位元組
udp校驗和方法:用到12個位元組的偽首部,二進位制反碼和放入校驗和字段,傳送之後在目的端檢驗是否相等。
特點:20位元組的固定首部(沒有選項時)1、面向連線 (它的連線是一條虛連線)
2、點對點
3、可靠
4、全雙工
5、面向位元組流
1、源埠和目的埠 各佔2個位元組mss:資料段的最大長度,預設536位元組,mss太小利用率不高,太大ip層還得分片。2、序號 4位元組 每個位元組都按順序編號
3、確認號 4位元組
4、資料偏移 4位 指明資料起始處對於報文段起始處的偏移大小,即首部大小最大15*4=60位元組
5、保留 6位
6、urg 緊急指標位
ack 此位為1 確認號才有效,連線後所有報文段都置1
psh 推送操作
rst 嚴重差錯,斷開連線,復位
syn 置1表示這是乙個連線請求
fin 請求釋放連線
7、視窗 2位元組 本傳送報文段的接收視窗,告訴對方,從確認號開始自己還可以接受的最大資料量
8、校驗和 2位元組 檢驗首部和資料,和udp類似,只不過偽首部中的第四個欄位17改為tcp的協議號6
9、緊急指標 2位元組 指出緊急資料的位元組數
10、選項 長度可變 最多40位元組,有mss、視窗擴**項、時間戳(可用來計算rtt)、選擇確認選項;
11、填充
tcp可靠傳輸的工作原理
停止等待協議:滑動視窗 : 點對點通訊量的控制,所做的是抑制傳送端傳送資料的速率,是乙個端對端的問題,即只要考慮對方傳送的資料即可。擁塞控制:防止過多的資料注入網路,使網路中的路由器或鏈路不致過載若傳送方位a,接收方為b。每次傳送方傳送乙個分組等待b確認後才再次傳送。
出現差錯呢?就涉及到了超時重傳,每次傳送後需要設定乙個計時器,等待一段時間沒有收到確認後,再次傳送。這裡涉及一下三點:
1、a每次傳送後,必須儲存已傳送的副本,收到確認後清楚
2、分組和確認分組都要有編號。
3、超時計時器的時間必須比資料往返的時間要長。這個時間如何確定。
若確認丟失,或遲到?自己想一下就知道了。自動重傳請求arq
停止等待通道利用率太低。於是就出現了:
連續arq協議:
乙個傳送視窗,每收到乙個確認,就將視窗向前移動;
滑動視窗協議:
擁塞:\sum 對資源的需求 > 可用資源
採用的四種演算法:
擁塞視窗cwnd,傳送方一般讓自己的傳送視窗=擁塞視窗,當然也要取決於對方的接收視窗。
慢開始:開始時,cwnd=乙個mss(最大報文段長度),每次收到對方確認,cwnd+1,即每經過乙個傳輸輪次(即收到最後乙個確認號),cwnd翻倍。慢開始演算法有乙個慢開始門限k,當cwnd小於k時,採用慢開始演算法,大於k時採用擁塞避免演算法。
擁塞避免演算法:沒收到乙個確認讓cwnd加一(乙個mss),而不是加倍。每當判斷出發生擁塞時,慢開始門限減半,cwnd設為一。
快重傳:接收方收到失序報文,立即重**送確認,當傳送方收到三個確認後立即重傳待傳送報文段。
快恢復:當傳送方收到三個確認後,立即執行乘法減小演算法,將慢開始門限減半,但接下來不執行慢開始演算法而是將cwnd變為和慢開始門限相同的數值(也可能是咋此基礎上+3*mss),執行擁塞避免演算法。
採用客戶端伺服器
三次握手:
1、開始時處於closed狀態,服務端(b)建立tcb傳輸控制塊,進入listen狀態。a建立tcb,發出請求報文段,syn=1,序號seq=x,tcp規定,syn報文段不能攜帶資料,但消耗序號,客戶程序進入syn-sent(同步已傳送狀態)
2、b收到連線請求報文段,如同意,syn和ack位置1,確認號ack = x+1,選擇初始序號seq = y, 不能攜帶資料,伺服器程序進入syn-rcvd狀態
3、客戶程序收到確認後,再次給b確認,ack置1,確認號ack=y+1,序號seq = x+1,客戶進入established狀態。
為什麼要三次呢?防止已失效的鏈結請求報文段突然又傳到b,那麼b發出確認連線訊息後,就一直等待a的訊息,而a不鳥b的確認,故一直占用b的資源,造成浪費!
a和b都處於established狀態,
1、a應用程序先向tcp發出連線釋放報文段,並停止傳送資料,a將fin置1,序號seq=u(前面已傳送的資料最後乙個位元組序號加1),此時a進入fin-wait(終止等待1)
2、b傳送確認號ack=u+1,seq=v,b進入close-wait(關閉等待狀態),a到b方向的連線釋放,tcp處於半關閉狀態。a收到b的確認後,進入fin-wait-2狀態
3、b傳送完資料後,通知tcp釋放連線,傳送報文段,fin=1,b序號w,重複上次確認號ack=u+1,b進入last-ack狀態,等待a的確認。
4、a收到訊息,置ack=1,確認號ack = w+1,自己的序號u+1(據tcp標準,前面傳送的fin報文段消耗乙個序號),進入time-wait狀態。在等待2msl時間後進入closed狀態。
msl:最長報文段壽命。
等待2msl時間的原因:1、保證a傳送的最後乙個ack報文段能夠到達b,若b沒有收到處於last-ack狀態的b會重發fin報文,a收到後重發確認,並重新計時2msl。
2、防止已失效的連線請求報文段出現在本連線中
《運輸層》知識點總結
只有主機才有的層次 為應用層提供通訊服務 使用網路層的服務 運輸層提供程序和程序之間的邏輯通訊 復用和分用 運輸層對收到的報文進行差錯檢測 運輸層有兩種協議 大哥tcp和二弟udp 大哥靠譜,二弟不靠譜 面向連線的傳輸控制協議tcp 傳送資料之前必須建立連線,資料傳送結束後要釋放連線。不提供廣播或多...
Model層和dal層全部知識點
模板 windows 類庫 引用 無 原則 一張表乙個類,一列乙個屬性 表名 類名,列名 屬性名 常用快捷鍵 proppropfull 常見型別轉換 可以借助linq或其他工具查詢轉換後的資料型別 sql資料型別 c 基礎資料型別 整數 int bit int小數 float decimal mon...
TestLink知識點Mantis知識點
testlink知識點 1 testlink系統提供了六種角色 a guest 只有讀的許可權,適合於檢視測試用例和測試需求,以及專案分析的使用者。b testdesigner 可以開展測試用例和測試需求的所有工作。c tester 只能執行測試用例。d senior tester 可以檢視和維護測...