TCP/IP總略複習

源端口號隨機 1024~5000之間。大於5000的端口號爲其他服務器預留的,Internet上並不常用的服務。

以太網是一般PC使用的標準,速度10Mb/s,地址是48bit。

環回接口:一般是判斷是否是127.0.0.1,就給環回驅動程序,回去了。

有了mac地址,纔會有包。沒有物理地址,不會向網絡裏發包。

MTU是出接口上看,以太網是1500,802.3是1492.路徑MTU是整個路徑上最小的MTU,小於他纔不分片。

來回的MTU不一定是相同的。

TTL來回是兩個初始值減,原來是時間,現在是跳轉數。

127開頭都是環回口

0.0.0.0作爲源,dhcp

255.255.255.255是全網廣播,路由器可以ping。PC不行,當成了主機名。

ARP

地址解析協議,將IP地址轉換成MAC地址。

no ip route設備訪問任何地址都會做arp請求

地址重疊會讓免費arp迴應,發現重疊。

 

網橋與路由器區別

網橋是在鏈路層上對網絡進行互連,路由器則是在網絡層上對網絡進行互連,網橋使得多個局域網(LAN)組合在一起,這樣對上層來說是一個局域網。

ICMP是IP協議的附屬協議。IP層用它來與其他主機或者路由器交換錯誤報文和其他重要信息。除了IP,其他程序也可能訪問它,比如Ping和Traceroute。

IGMP是Internet組管理協議。用來吧一個UDP數據報多播到多個主機。

ICMP

傳遞差錯報文,以及其他需要注意的信息。

所有報網前4字節結構一樣,類型字段15個不同值,比較重要的有:

8請求,0爲回答,3不可達,代碼爲各種不可達原因,icmp分查詢報文(0,8)和差錯報文(3)。

icmp校驗和即管首部也管數據。

比如不可達時,icmp報文除了ip頭,icmp頭,還有造成不可達數據包的ip頭以及前8字節。爲什麼包含前八字節,因爲端口號可以告訴哪個app造成不可達,前八個字節包含tcp或者udp的端口號。

差錯報文,廣播,多播,不是IP分片的第一個分片(後面沒端口號),源地址不是單個主機的數據報都不會產生差錯報文。

各種主要不可達,類型字段爲3:

ping

 

 

IP記錄路由選項

就是出路由來回都記錄。因爲空間限制,只能記錄9跳。

Traceroute程序

可以看到ip數據從一個到另一個ip經歷的所有路由。通過udp端口每發一個增加一,ttl也每發一個加一,當到了目的地查端口號,因爲端口很大,目的地返回一個端口不可達icmp。最後就實現了。

ip源站路由選項

思想時由發送者指定路由採取兩種:

1,嚴格的源路由選擇,指定必須採取確切路由,

2,指定ip清單,但是不管2個地址是否通過其他路由器

IP選路

選路是IP最重要功能之一

下圖描述一個路由守護程序(動態路由修改),通常是一個用戶進程,unix系統中大多數普通的路由程序都是路由程序和網關程序,路由表經常被IP訪問,但是被路由守護程序更新頻率低得多,當收到ICMP重定向報文,路由表要被更新。

 IP搜索路由表的步驟:

1,搜索匹配的主機地址

2,搜索匹配的網絡地址

3,搜索默認表項(默認表項一般在路由表中被指定爲一個網絡表項,網絡號爲0)

icmp重定向差錯

假定主機發送ip數據報給R1,R1是該主機默認路由,R1收到數據報檢查路由表,發現R2是發送改數據報的下一站,當它吧數據發送給R2時,R1檢測到它正在發送的接口與數據報到達接口是相同的(即主機和兩個路由器算賬的LAN),這樣就給路由器發送重定向報文給原始發送端提供了線索,R1發送了一封ICMP重定向報文給主機,告訴它以後數據包發送給R2

UDP

簡單的面向數據報的傳輸層協議,每個輸出操作都產生一個UDP數據報,組成一份待發送的IP數據包,與面向流字符協議不同,應用程序產生的全體數據與正在發送的單個IP數據報可能沒事什麼聯繫。UDP不提供可靠性傳輸。

tcp和UDP端口號是互相獨立(比如514分別爲rsh和syslog),經管相互獨立,但是提供相同知名服務,經常選擇相同端口號。

UDP校驗和覆蓋UDP首部和UDP數據(ICMP和TCP也是IP首部校驗和之覆蓋IP首部)。可以是奇數但是必須補齊偶數長度。校驗和包括首部,數據,還有個僞首部,是32位目的和源ip地址,協議號等。校驗和可選。

UDP有三大應用:

1,查詢類,如DNS

2,實時流量(語音視頻)

3,傳輸數據(TFTP不靠譜)

 

IP分片

IP把MTU與數據報長度進行比較。

如果需要分配,分配可以發生在原始發送端主機,也可以在中間路由器上,把一份IP數據報分片後只有到了目的地才組裝,組裝由目的端IP層完成,目的是使分片重組對傳輸層TCP和UDP透明,已分片的數據報可能再次分片。

當ip數據報被分片時,每個片都成爲獨立分組,具有自己ip首部,在選擇路由時與其他分組獨立,所以到目的端可能會失序,但是在IP首部中有足夠的信息讓接收端能正確組裝這些數據,但是丟失一片也要重傳整個數據報,IP層本身沒有超時重傳機制,通過高層TCP實現此功能,TCP在超時後會重發整個TCP報文段,該報文段對應一份IP數據報。

分片時,除了最後一片,數據部分要是8的整數倍。協議類型端口號只能在第一片。

最大UDP數據報長度

IP數據報的最大長度65535字節(由IP首部16bit總長度字段限制),udp最大長度就是再減去ip頭部長度。

但是會收到2個限制因素:第一,應用程序受到其接口的限制,socketAPI提供了一個可供應用程序調用的函數,以設置接收和發送緩存的長度,第二源自TCP/IP的內核實現的限制。所以取決與編程接口和實現。

大多數系統某一時刻只允許一個程序端點與某個本地IP地址及UDP端口號相關聯。

廣播與多播

三種IP地址:單播地址,廣播地址,多播地址

廣播多播僅應用於UDP。

TFTP

適合只讀存儲器,因爲代碼少。

TCP

面向連接的,可靠的字節流服務。面向連接意味兩個tcp應用彼此交換數據之間要建立一個TCP連接。

應用數據被分割成TCP認爲最適合發送的數據塊。TCP確認報不是立即發送,通常推遲幾分之一秒,有時跟着下此數據一起發。

TCP保持首部和數據的校驗和。

TCP由IP傳輸,所以可能失序,如果必要,TCP將對數據重新排序,交給應用層。

TCP有流量控制,TCP每次連接一方都有固定大小緩衝區,TCP的接收端只允許另一端發送接收端緩衝取所能接納的數據,防止主機致使較慢主機緩衝區溢出。

TCP的字節流

傳輸時候,順序一樣,但是可能會把大小切片改變。

也是最大60個字節

序號標識從TCP發端到TCP接收端發送到數據字節流,表示在這個報文段中的第一個數據字節,用來確認傳輸字節數,SYN標誌也消耗一個序號,FIN標誌也消耗一個序號。

TCP可以表述爲一個沒有選擇確認或否認的滑動窗口協議。

流量控制由連接的每一端通過聲明窗口大小來確定

RST位:一般無論何時一個報文段發往基準連接出現錯誤,TCP都會發出一個復位報文段(基準的連接指由目的IP地址和目的端口號以及源IP地址和端口指明的連接),就是如果udp連接服務器沒存在端口,服務器提供一個icmp端口不可達,tcp情況,服務器發送rst重置號。

異常終止一個連接

有可能發送復位報文段而不是FIN來中途釋放一個連接,有時稱爲異常釋放,有兩個優點,1,丟棄任何待發送的數據並立即發送復位報文段,2RST接收方會區分另一端執行的是異常關閉還是正常關閉,應用程序使用API必須提供異常關閉而不是正常關閉的手段。

TCP選項

要4字節對齊,不足填充補齊。

MSS

TCP交互數據流

按照分組數量計算,一半TCP報文段含成塊數據(FTP,電子郵件,Usenet新聞),另一半是交互數據(Telnet和Rlogin),按字節計算,成塊數據與交互數據比例,9比1

通常TCP收到數據不立即發送ACK,以便將ACK與需要沿該放下發送的數據一起發送,絕大多數採用延時200ms。

窗口大小通告

TCP成塊數據流

TFTP使用停止等待協議。數據發送方在發送下一個數據塊之前需要等待接收對已發送數據確認。TCP所使用的被稱爲滑動窗口協議,允許發送方在停止並等待確認前可以連續發送多個分組,由於發送方不必每發一個分組停下來等待確認,因此該協議可以加速數據的傳輸。

正常數據流

正常數據流使用隔一個確認的策略,線路分組依賴許多無法控制因素如TCP的實現,操作系統調度等,對於2個TCP而言,沒有一種單一的,正確的方法交換給定數量的數據。

滑動窗口

窗口大小與確認序號對應的

該窗口表明多少數據可以立即被髮送。

發送方沒必要發全窗口大小。

push標誌

發送方使用該標誌通知接收方將所有收到的數據全部提交給進程,這裏數據包括與push一起發送的數據,和已經被接收的進程收到的其他數據。

慢啓動

不在同一個局域網,可能有慢速網絡,該算法通過觀察到新分組進入網絡的速率應該與另一端返回確認速率相同而進行工作。

慢啓動增加了一個窗口:擁塞窗口,cwnd(這個是發送方的,前面通告窗口是接收方的)。當與另一個網絡的主機建立TCP連接時,擁塞窗口被初始化爲一個報文段(即另一端通告的報文段大小)。每收到一個ACK,擁塞窗口增加一個報文段,發送方取擁塞窗口與通告窗口中最小值作爲發送上限。

發送一個分組的時間

取決於傳播時延和發送時延。

TCP超時和重傳

TCP通過在發送時設置一個定時器解決數據確認和丟失,當定時器溢出沒收到確認,就重傳,所以關鍵在於超時和重傳的策略,即怎樣決定超時間隔和確定重傳頻率。

TCP定時器有四個:

RTT變化範圍很大,使這種方法不太實用。

擁塞避免算法

ICMP差錯

保活定時器

不過最好由應用程序確認保活,而不是tcp

應用層

telent:端口23,ssh端口22

FTP:端口20和21

TFTP:端口69

SMTP:端口25

POP3:端口110

HTTP:端口80

SNMP:UDP 161,162

DNS:TCPUDP53

DHCP:端口67

IP地址

網絡位:192.168.1.0 255.255.255.0 /24

主機位:

和主機位

分類

A:0xxxxxxx.hhhhhhhh.hhhhhhhh.hhhhhhhh前8位爲網絡位,後24主機位,網絡位第一位爲0

所以最小00000000,最大01111111=127

0保留用於默認路由,127保留用於診斷。

所以A類允許2^24-2=16777214個主機ip,去除的兩個,0表示網絡地址,任意,全1爲廣播地址,全部。

B:10xxxxxx.xxxxxxxx.hhhhhhhh.hhhhhhhh,前16位爲網絡位,所以128到191,一共2^14=16384個B類地址,2^16-2個ip

C:110xxxxx.xxxxxxxx.xxxxxxxx.hhhhhhhh,範圍就是1100000到11011111爲192到223

子網劃分

爲什麼劃分子網?

不靈活,使用ABC地址浪費大量地址

 

參考視頻

乾頤堂現任明教教主秦柯 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章