TCP IP學習筆記(一)

2021-05-23 13:08:01 字數 2606 閱讀 2255

tcp/ip學習筆記(一)

一、 tcp/ip結構:

tcp/ip是乙個四層協議,結構如下:

1、應用層:各種應用程式和協議,如http、ftp等。

2、傳輸層:tcp和udp

tcp提供一種可靠的運輸層服務,但udp是不可靠的,不能保證資料報到正確到達目的地。

3、網路層:ip、igmp、icmp

ip提供的是一種不可靠的服務,也就是盡可能塊地把分組從源節點送到目的節點,但並

不提供任何可靠性保證。icmp是ip的附屬協議,主要用來交換錯誤報文,igmp是組管理協議,用來將udp資料報多播到多個主機。

4、鏈路層:裝置驅動程式和網絡卡等

二、 ip位址和子網掩碼

要學習tcp/ip協議,首先要提到的是ip位址。每台主機的ip位址是乙個32位的二進位制數。每個ip位址被分割位兩部分:字首和字尾。字首用來確定計算機從屬的物理網路,字尾用來確定網路上單獨的計算機。網際網路上每乙個物理網路都有乙個唯一的值作為網路號,該網路號必須全球一致。

1、ip位址分類:

ip位址分位五類:a類、b類、c類、d類、e類,其中a類、b類和c類為基本類,d類用於多播,e類屬於保留類,現在不用。它們的格式如下(其中*代表網路號):

a類:0******* ******xx ******xx ******xx

b類:10****** ******** ******xx ******xx

c類:110***** ******** ******** ******xx

d類:1110**** ******xx ******xx ******xx

e類:1111**** ******xx ******xx ******xx

乙太網首部

(14)

ip首部

(20)

tcp首

部(20)

應用資料

乙太網尾部(4)

四、 ip首部:

ip協議是tcp/ip協議族中最核心的協議,所有的tcp、udp、icmp和igmp資料都以ip資料報格式傳輸。ip傳輸的兩個特點:不可靠和無連線。ip協議並不保證資料報能成功地到達目的地,也不維護後續資料報的狀態資訊。必須由上層協議處理。

4位版本

4位首部長度

8位服務型別

16位總長度(位元組數)

16位標識

3位標誌

13位片偏移

8位ttl

8位協議

16位首部檢驗和

32位源ip位址

32位目的ip位址

ip首部定義:

typedef struct ip_hdr

ip,ipv4_hdr, *pipv4_hdr, far * lpipv4_hdr;

說明:ip_verlen前4位目前為4,表示為ipv4,後4位為5,表示首部長度為5x4=20個位元組。

ip_tos為服務型別(type of service),aaabbbbc,aaa為優先權子欄位,現在已被忽略,bbbb為tos子欄位,代表:最小時延、最大吞吐量、最高可靠性和最小費用,c未使用必須為0。如果bbbb均為0,則表示為一般服務。目前大多數tcp/ip實現都不支援tos特性。

ip_totallength為ip資料報的總長度,以位元組為單位,因此理論最大值為65535,但實際是不可能的。

ip_id為唯一標識主機傳送的每乙個資料報,通常每發乙份它的值就會加1。

ip_off前3位標誌abc,a為保留,必須為0,b為不分片標誌,c為更多分片標誌。

ip_off後13位為分片位置,以8位元組為單位計算。因此,除最後乙個分片外,其他每個分片都希望是乙個8位元組倍數的資料,從而使後面的分片從8位元組邊界開始。

ip_ttl為ip報的生存週期,每經過乙個路由器就減1,如果該字段為0,則該資料報被丟棄。

ip_protocol:1=icmp,2=igmp,6=tcp,17=udp

ip_checksum為資料報的首部檢驗和。計算方法如下:

ushort checksum(ip *ip, int size) 

if (size) 

cksum = (cksum >> 16) + (cksum & 0xffff);

cksum += (cksum >>16);

return (ushort)(~cksum);

}

icmp、igmp、tcp和udp協議也採用相同的檢驗和演算法。

五、 埠號:tcp/udp都使用乙個16bit地埠號來表示不同地程式。

1、 知名埠:一般介於1~255之間,例如:ftp的tcp埠號是21。

2、 臨時埠,由於客戶端對埠號一般並不關心,只需保證唯一就可以了,所以系統一般分配臨時埠號。

六、 鏈路層:(以乙太網為例,位址為48bit)

1、 鏈路層的功能:

◆ 為ip模組傳送和接收ip資料報

◆ 為arp模組傳送arp請求和接收arp應答

◆ 為rarp模組傳送rarp請求和接收rarp應答

2、 乙太網的封裝,乙太網ip資料報的封裝在rfc 894中定義的:

目的位址

(6)源位址

(6)型別

(2)資料(46-1500),包括ip、arp、rarp

crc(4)

TCP IP學習筆記(一)

tcp ip學習筆記 一 一 tcp ip結構 tcp ip是乙個四層協議,結構如下 1 應用層 各種應用程式和協議,如http ftp等。2 傳輸層 tcp和udp tcp提供一種可靠的運輸層服務,但udp是不可靠的,不能保證資料報到正確到達目的地。3 網路層 ip igmp icmp ip提供的...

tcp ip 學習筆記

最近學習網路程式設計,看了周立發老師的blog 也模仿寫了乙個檔案管理併發伺服器。選擇多程序併發伺服器 技術難點 建立tcp 伺服器 fork 產生新的處理程序 使用getopt 函式使伺服器配置引數化,使用同一的linux風格 設定埠復用,瀏覽檔案系統,思路 1 首先建立乙個被動套接字 設定套接字...

Tcp ip學習筆記

分層 網路協議通常分不同層次進行開發,每一層分別負責不同的通訊功能。乙個協議族,比如t c p i p,是一組不同層次上的多個協議的組合。t c p i p通常被認為是乙個四層協議系統,如圖1 1所示。每一層負責不同的功能 1 鏈路層,有時也稱作資料鏈路層或網路介面層,通常包括作業系統中的裝置驅動程...