從之前介紹的網路層協議來看,通訊的兩端是兩台主機,ip 資料報首部就標明了這兩台主機的 ip 位址。但是從傳輸層來看,是傳送方主機中的乙個程序與接收方主機中的乙個程序在交換資料,因此,嚴格地講,通訊雙方不是主機,而是主機中的程序。
主機中常常有多個應用程序同時在與外部通訊(比如你的瀏覽器和 qq 在同時執行),下圖中,a 主機的 ap1 程序在於 b 主機的 ap3 程序通訊,同時主機 a 的 ap2 程序也在與 b 主機的 ap4 程序通訊。
兩個主機的傳輸層之間有乙個灰色雙向箭頭,寫著「傳輸層提**用程序間的邏輯通訊」。 邏輯通訊:看起來是資料似乎是沿著雙向箭頭在傳輸層水平傳輸的,但實際上是沿圖中的虛線經多個協議層次而傳輸。
tcp/ip 協議棧傳輸層有兩個重要協議——udp 和 tcp,不同的應用程序在傳輸層使用 tcp 或 udp 之一:
這一節先介紹比較簡單的 udp,比較複雜的 tcp 將在下一節討論。
在第一節我們已經了解過埠的概念,埠的作用體現在傳輸層。
剛才的圖中,ap1 與 ap3 的通訊與 ap2 與 ap4 的通訊可以使用同乙個傳輸層協議來傳輸(tcp 或 udp),根據 ip 位址或 mac 位址都只能是把資料傳到正確的主機,但具體需要傳到哪乙個程序,是通過埠來辨認的。比如同時使用瀏覽器和 qq,瀏覽器占用 80 埠,而 qq 占用 4000 埠,那麼傳送過來的 qq 訊息便會通過 4000 埠顯示在 qq 客戶端,而不會錯誤地顯示在瀏覽器上。
埠號有 0~65535 的編號,其中:
應用層協議:
系統埠號:
2123
2553
6980
161udp(user datagram protocol)使用者資料報協議,它只在 ip 資料報服務之上增加了很少一點功能,它的主要特點有:
從應用層到傳輸層,再到網路層的各層次封裝:
udp 資料報可分為兩部分:udp 報頭和資料部分。其中資料部分是應用層交付下來的資料。udp 報頭總共 8 位元組,而這 8 位元組又分為 4 個字段:
現在我們動手實踐,嘗試抓取乙個 udp 資料報,並解讀其內容。
cd desktop
git clone
cd tcp_ip_5
gcc -o test test.c
這個 c 程式會向 ip 位址 192.168.1.1 的 7777 埠 傳送一條 "hello" 訊息。你可以用編輯器修改程式,向不同的 ip 不同的 ip 傳送不同的內容。
編譯完成後先別執行,我們還需要使用乙個知名的抓包工具 tcpdump ,依次輸入以下命令安裝,並執行 tcpdump:
sudo apt-get update
sudo apt-get
install tcpdump
sudo tcpdump -vvv -x udp port 7777
現在最小化當前終端,另開啟乙個終端,輸入以下命令執行剛才編譯好的 c 程式 test:
cd desktop/tcp_ip_5
./test
test 程式執行結束,返回剛才執行 tcpdump 的終端檢視抓包結果: TCP IP 協議之 UDP協議
1 udp 是面向使用者資料報的運輸層協議哈。不可靠,無連線。2 首部 共8b 源埠號 2b 目的埠號 2b udp長度 2b udp校驗和 2b 說明 1 對於udp的埠號,埠號是用來標記應用程序的,tcp和udp可以共用乙個埠號,這可以在ip首部中的協議欄位來區分開來。2 udp長度是首部長度與...
tcp ip 協議簡介
tcp ip 協議名字的定義取自它的 網路層和資料鏈路層所應用的協議名稱。l tcp ip 協議層級分化 1.應用層 telnet ftp e mail 的應用 2.傳輸層 transport layer tcp udp 協議的應用為主 3.網路層 network layer ip協議為主,路由器即...
TCP IP協議 簡介
是用於計算機通訊的一組協議,我們通常稱它為tcp ip協議族。它是70年代中期美國國防部為其arpanet廣域網開發的網路體系結構和協議標準,以它為基礎組建的internet是目前國際上規模最大的計算機網路,正因為internet的廣泛使用,使得tcp ip成了事實上的標準。之所以說tcp ip是乙...