首先http是一個應用層的協議,在這個層的協議,只是一種通訊規範,也就是因為雙方要進行通訊,大家要事先約定一個規範。
1.連線 當我們輸入這樣一個請求時,首先要建立一個socket連線,因為socket是透過ip和埠建立的,所以之前還有一個DNS解析過程,把http://www.mycompany.com變成ip,如果url裡不包含埠號,則會使用該協議的預設埠號。
DNS的過程是這樣的:首先我們知道我們本地的機器上在配置網路時都會填寫DNS,這樣本機就會把這個url發給這個配置的DNS伺服器,如果能夠
找到相應的url則返回其ip,否則該DNS將繼續將該解析請求傳送給上級DNS,整個DNS可以看做是一個樹狀結構,該請求將一直髮送到根直到得到結
果。現在已經擁有了目標ip和埠號,這樣我們就可以開啟socket連線了。
2.請求 連線成功建立後,開始向web伺服器傳送請求,這個請求一般是GET或POST命令(POST用於FORM引數的傳遞)。GET命令的格式為: GET 路徑/檔名 HTTP/1.0
檔名指出所訪問的檔案,HTTP/1.0指出Web瀏覽器使用的HTTP版本。現在可以傳送GET命令:
GET /mydir/index.html HTTP/1.0,
3.應答 web伺服器收到這個請求,進行處理。從它的文件空間中搜索子目錄mydir的檔案index.html。如果找到該檔案,Web伺服器把該檔案內容傳送給相應的Web瀏覽器。
為了告知瀏覽器,,Web伺服器首先傳送一些HTTP頭資訊,然後傳送具體內容(即HTTP體資訊),HTTP頭資訊和HTTP體資訊之間用一個空行分開。
常用的HTTP頭資訊有:
① HTTP 1.0 200 OK 這是Web伺服器應答的第一行,列出伺服器正在執行的HTTP版本號和應答程式碼。程式碼"200 OK"表示請求完成。
② MIME_Version:1.0 它指示MIME型別的版本。
④ content_length:長度值 它指示HTTP體資訊的長度(位元組)。
4.關閉連線:當應答結束後,Web瀏覽器與Web伺服器必須斷開,以保證其它Web瀏覽器能夠與Web伺服器建立連線。
下面我們具體分析其中的資料包在網路中漫遊的經歷
在網路分層結構中,各層之間是嚴格單向依賴的。“服務”是描述各層之間關係的抽象概念,即網路中各層向緊鄰上層提供的一組操作。下層是服務提供者,
上層是請求服務的使用者。服務的表現形式是原語(primitive),如系統呼叫或庫函式。系統呼叫是作業系統核心向網路應用程式或高層協議提供的服務原
語。網路中的n層總要向n+1層提供比n-1層更完備的服務,否則n層就沒有存在的價值。
傳輸層實現的是“端到端”通訊,引進網間程序通訊概念,同時也要解決差錯控制,流量控制,資料排序(報文排序),連線管理等問題,為此提供不同的服
務方式。通常傳輸層的服務透過系統呼叫的方式提供,以socket的方式。對於客戶端,要想建立一個socket連線,需要呼叫這樣一些函式socket
() bind() connect(),然後就可以透過send()進行資料傳送。
現在看資料包在網路中的穿行過程:
應用層
首先我們可以看到在應用層,根據當前的需求和動作,結合應用層的協議,有我們確定傳送的資料內容,我們把這些資料放到一個緩衝區內,然後形成了應用層的報文data。
傳輸層
這些資料透過傳輸層傳送,比如tcp協議。所以它們會被送到傳輸層處理,在這裡報文打上了傳輸頭的包頭,主要包含埠號,以及tcp的各種制資訊,這些資訊是直接得到的,因為介面中需要指定埠。這樣就組成了tcp的資料傳送單位segment。tcp
是一種端到端的協議,利用這些資訊,比如tcp首部中的序號確認序號,根據這些數字,傳送的一方不斷的進行傳送等待確認,傳送一個數據段後,會開啟一個計
數器,只有當收到確認後才會傳送下一個,如果超過計數時間仍未收到確認則進行重發,在接受端如果收到錯誤資料,則將其丟棄,這將導致傳送端超時重發。透過
tcp協議,控制了資料包的傳送序列的產生,不斷的調整發送序列,實現流控和資料完整。
網路層
然後待發送的資料段送到網路層,在網路層被打包,這樣封裝上了網路層的包頭,包頭內部含有源及目的的ip地址,該層資料傳送單位被稱為packet。網路層開始負責將這樣的資料包在網路上傳輸,如何穿過路由器,最終到達目的地址。在這裡,根據目的ip地址,就需要查詢下一跳路由的地址。首先在本機,要查詢本機的路由表,在windows上執行route print就可以看到當前路由表內容,有如下幾項:
Active Routes Default Route Persistent Route.
整個查詢過程是這樣的:
(1)根據目的地址,得到目的網路號,如果處在同一個內網,則可以直接傳送。
(2)如果不是,則查詢路由表,找到一個路由。
(3)如果找不到明確的路由,此時在路由表中還會有預設閘道器,也可稱為預設閘道器,IP用預設的閘道器地址將一個數據傳送給下一個指定的路由器,所以閘道器也可能是路由器,也可能只是內網向特定路由器傳輸資料的閘道器。
(4)
路由器收到資料後,它再次為遠端主機或網路查詢路由,若還未找到路由,該資料包將傳送到該路由器的預設閘道器地址。而資料包中包含一個最大路由跳數,如果超
過這個跳數,就會丟棄資料包,這樣可以防止無限傳遞。路由器收到資料包後,只會檢視網路層的包裹資料,目的ip。所以說它是工作在網路層,傳輸層的資料對
它來說則是透明的。
如果上面這些步驟都沒有成功,那麼該資料報就不能被傳送。如果不能傳送的資料報來自本機,那麼一般會向生成資料報的應用程式返回一個“主機不可達”或 “網路不可達”的錯誤。
以windows下主機的路由表為例,看路由的查詢過程
======================================================================
Active Routes:
Network Destination Netmask Gateway Interface Metric
0.0.0.0 0.0.0.0 192.168.1.2 192.168.1.101 10
127.0.0.0 255.0.0.0 127.0.0.1 127.0.0.1 1
192.168.1.0 255.255.255.0 192.168.1.101 192.168.1.101 10
192.168.1.101 255.255.255.255 127.0.0.1 127.0.0.1 10
192.168.1.255 255.255.255.255 192.168.1.101 192.168.1.101 10
224.0.0.0 240.0.0.0 192.168.1.101 192.168.1.101 10
255.255.255.255 255.255.255.255 192.168.1.101 192.168.1.101 1
Default Gateway: 192.168.1.2
Network Destination 目的網段
Netmask 子網掩碼
Gateway 下一跳路由器入口的ip,路由器透過interface和gateway定義一調到下一個路由器的鏈路,通常情況下,interface和gateway是同一網段的。
Interface 到達該目的地的本路由器的出口ip(對於我們的個人pc來說,通常由機算機A的網絡卡,用該網絡卡的IP地址標識,當然一個pc也可以有多個網絡卡)。
閘道器這個概念,主要用於不同子網間的互動,當兩個子網內主機A,B要進行通訊時,首先A要將資料傳送到它的本地閘道器,然後閘道器再將資料傳送給B所在的閘道器,然後閘道器再發送給B。
預設閘道器,當一個數據包的目的網段不在你的路由記錄中,那麼,你的路由器該把那個資料包傳送到哪裡!預設路由的閘道器是由你的連線上的default gateway決定的,也就是我們通常在網路連線裡配置的那個值。
通常interface和gateway處在一個子網內,對於路由器來說,因為可能具有不同的interface,當資料包到達時,根據
Network
Destination尋找匹配的條目,如果找到,interface則指明瞭應當從該路由器的那個接口出去,gateway則代表了那個子網的閘道器地
址。
第一條 0.0.0.0 0.0.0.0 192.168.1.2 192.168.1.101 10
0.0.0.0
代表了預設路由。該路由記錄的意思是:當我接收到一個數據包的目的網段不在我的路由記錄中,我會將該資料包透過192.168.1.101這個介面傳送到
192.168.1.2這個地址,這個地址是下一個路由器的一個介面,這樣這個資料包就可以交付給下一個路由器處理,與我無關。該路由記錄的線路質量
10。當有多個條目匹配時,會選擇具有較小Metric值的那個。
第三條 192.168.1.0 255.255.255.0 192.168.1.101 192.168.1.101 10
直
聯網段的路由記錄:當路由器收到發往直聯網段的資料包時該如何處理,這種情況,路由記錄的interface和gateway是同一個。當我接收到一個數
據包的目的網段是192.168.1.0時,我會將該資料包透過192.168.1.101這個介面直接傳送出去,因為這個埠直接連線著
192.168.1.0這個網段,該路由記錄的線路質量
10 (因interface和gateway是同一個,表示資料包直接傳送給目的地址,不需要再轉給路由器)。
查詢到下一跳ip地址後,還需要知道它的mac地址,這個地址要作為鏈路層資料裝進鏈路層頭部。這時需要arp協議,具體過程是這樣的,查詢arp
緩衝,windows下執行arp
-a可以檢視當前arp緩衝內容。如果裡面含有對應ip的mac地址,則直接返回。否則需要發生arp請求,該請求包含源的ip和mac地址,還有目的地
的ip地址,在網內進行廣播,所有的主機會檢查自己的ip與該請求中的目的ip是否一樣,如果剛好對應則返回自己的mac地址,同時將請求者的ip
mac儲存。這樣就得到了目標ip的mac地址。
鏈路層
將mac地址及鏈路層控制資訊加到資料包裡,形成Frame,Frame在鏈路層協議下,完成了相鄰的節點間的資料傳輸,完成連線建立,控制傳輸速度,資料完整。
物理層
物理線路則只負責該資料以bit為單位從主機傳輸到下一個目的地。
下一個目的地接受到資料後,從物理層得到資料然後經過逐層的解包 到 鏈路層 到 網路層,然後開始上述的處理,在經網路層 鏈路層 物理層將資料封裝好繼續傳往下一個地址。
在上面的過程中,可以看到有一個路由表查詢過程,而這個路由表的建立則依賴於路由演算法。也就是說路由演算法實際上只是用來路由器之間更新維護路由表,
真正的資料傳輸過程並不執行這個演算法,只檢視路由表。這個概念也很重要,需要理解常用的路由演算法。而整個tcp協議比較複雜,跟鏈路層的協議有些相似,其
中有很重要的一些機制或者概念需要認真理解,比如編號與確認,流量控制,重發機制,傳送接受視窗。
tcp/ip基本模型及概念
協議:SDLC(Synchronous Data Link Control)HDLC(High-level Data Link
Control)
ppp協議獨立的鏈路裝置中最常見的當屬網絡卡,網橋也是鏈路產品。集線器MODEM的某些功能有人認為屬於鏈路層,對此還有些爭議認為屬於物理層裝置。除
此之外,所有的交換機都需要工作在資料鏈路層,但僅工作在資料鏈路層的僅是二層交換機。其他像三層交換機、四層交換機和七層交換機雖然可對應工作在OSI
的三層、四層和七層,但二層功能仍是它們基本的功能。
四個主要的協議:
網際協議IP:負責在主機和網路之間定址和路由資料包。
地址解析協議ARP:獲得同一物理網路中的硬體主機地址。
網際控制訊息協議ICMP:傳送訊息,並報告有關資料包的傳送錯誤。
互聯組管理協議IGMP:被IP主機拿來向本地多路廣播路由器報告主機組成員。
該層裝置有三層交換機,路由器。
兩個重要協議 TCP 和 UDP 。
埠概念:TCP/UDP 使用 IP 地址標識網上主機,使用埠號來標識應用程序,即 TCP/UDP 用主機 IP
地址和為應用程序分配的埠號來標識應用程序。埠號是 16 位的無符號整數, TCP 的埠號和 UDP
的埠號是兩個獨立的序列。儘管相互獨立,如果 TCP 和 UDP
同時提供某種知名服務,兩個協議通常選擇相同的埠號。這純粹是為了使用方便,而不是協議本身的要求。利用埠號,一臺主機上多個程序可以同時使用
TCP/UDP 提供的傳輸服務,並且這種通訊是端到端的,它的資料由 IP 傳遞,但與 IP
資料報的傳遞路徑無關。網路通訊中用一個三元組可以在全域性唯一標誌一個應用程序:(協議,本地地址,本地埠號)。
也就是說tcp和udp可以使用相同的埠。
可以看到透過(協議,源埠,源ip,目的埠,目的ip)就可以用來完全標識一組網路連線。
基於tcp:Telnet FTP SMTP DNS HTTP
基於udp:RIP NTP(網落時間協議)和DNS (DNS也使用TCP)SNMP TFTP
首先http是一個應用層的協議,在這個層的協議,只是一種通訊規範,也就是因為雙方要進行通訊,大家要事先約定一個規範。
1.連線 當我們輸入這樣一個請求時,首先要建立一個socket連線,因為socket是透過ip和埠建立的,所以之前還有一個DNS解析過程,把http://www.mycompany.com變成ip,如果url裡不包含埠號,則會使用該協議的預設埠號。
DNS的過程是這樣的:首先我們知道我們本地的機器上在配置網路時都會填寫DNS,這樣本機就會把這個url發給這個配置的DNS伺服器,如果能夠
找到相應的url則返回其ip,否則該DNS將繼續將該解析請求傳送給上級DNS,整個DNS可以看做是一個樹狀結構,該請求將一直髮送到根直到得到結
果。現在已經擁有了目標ip和埠號,這樣我們就可以開啟socket連線了。
2.請求 連線成功建立後,開始向web伺服器傳送請求,這個請求一般是GET或POST命令(POST用於FORM引數的傳遞)。GET命令的格式為: GET 路徑/檔名 HTTP/1.0
檔名指出所訪問的檔案,HTTP/1.0指出Web瀏覽器使用的HTTP版本。現在可以傳送GET命令:
GET /mydir/index.html HTTP/1.0,
3.應答 web伺服器收到這個請求,進行處理。從它的文件空間中搜索子目錄mydir的檔案index.html。如果找到該檔案,Web伺服器把該檔案內容傳送給相應的Web瀏覽器。
為了告知瀏覽器,,Web伺服器首先傳送一些HTTP頭資訊,然後傳送具體內容(即HTTP體資訊),HTTP頭資訊和HTTP體資訊之間用一個空行分開。
常用的HTTP頭資訊有:
① HTTP 1.0 200 OK 這是Web伺服器應答的第一行,列出伺服器正在執行的HTTP版本號和應答程式碼。程式碼"200 OK"表示請求完成。
② MIME_Version:1.0 它指示MIME型別的版本。
④ content_length:長度值 它指示HTTP體資訊的長度(位元組)。
4.關閉連線:當應答結束後,Web瀏覽器與Web伺服器必須斷開,以保證其它Web瀏覽器能夠與Web伺服器建立連線。
下面我們具體分析其中的資料包在網路中漫遊的經歷
在網路分層結構中,各層之間是嚴格單向依賴的。“服務”是描述各層之間關係的抽象概念,即網路中各層向緊鄰上層提供的一組操作。下層是服務提供者,
上層是請求服務的使用者。服務的表現形式是原語(primitive),如系統呼叫或庫函式。系統呼叫是作業系統核心向網路應用程式或高層協議提供的服務原
語。網路中的n層總要向n+1層提供比n-1層更完備的服務,否則n層就沒有存在的價值。
傳輸層實現的是“端到端”通訊,引進網間程序通訊概念,同時也要解決差錯控制,流量控制,資料排序(報文排序),連線管理等問題,為此提供不同的服
務方式。通常傳輸層的服務透過系統呼叫的方式提供,以socket的方式。對於客戶端,要想建立一個socket連線,需要呼叫這樣一些函式socket
() bind() connect(),然後就可以透過send()進行資料傳送。
現在看資料包在網路中的穿行過程:
應用層
首先我們可以看到在應用層,根據當前的需求和動作,結合應用層的協議,有我們確定傳送的資料內容,我們把這些資料放到一個緩衝區內,然後形成了應用層的報文data。
傳輸層
這些資料透過傳輸層傳送,比如tcp協議。所以它們會被送到傳輸層處理,在這裡報文打上了傳輸頭的包頭,主要包含埠號,以及tcp的各種制資訊,這些資訊是直接得到的,因為介面中需要指定埠。這樣就組成了tcp的資料傳送單位segment。tcp
是一種端到端的協議,利用這些資訊,比如tcp首部中的序號確認序號,根據這些數字,傳送的一方不斷的進行傳送等待確認,傳送一個數據段後,會開啟一個計
數器,只有當收到確認後才會傳送下一個,如果超過計數時間仍未收到確認則進行重發,在接受端如果收到錯誤資料,則將其丟棄,這將導致傳送端超時重發。透過
tcp協議,控制了資料包的傳送序列的產生,不斷的調整發送序列,實現流控和資料完整。
網路層
然後待發送的資料段送到網路層,在網路層被打包,這樣封裝上了網路層的包頭,包頭內部含有源及目的的ip地址,該層資料傳送單位被稱為packet。網路層開始負責將這樣的資料包在網路上傳輸,如何穿過路由器,最終到達目的地址。在這裡,根據目的ip地址,就需要查詢下一跳路由的地址。首先在本機,要查詢本機的路由表,在windows上執行route print就可以看到當前路由表內容,有如下幾項:
Active Routes Default Route Persistent Route.
整個查詢過程是這樣的:
(1)根據目的地址,得到目的網路號,如果處在同一個內網,則可以直接傳送。
(2)如果不是,則查詢路由表,找到一個路由。
(3)如果找不到明確的路由,此時在路由表中還會有預設閘道器,也可稱為預設閘道器,IP用預設的閘道器地址將一個數據傳送給下一個指定的路由器,所以閘道器也可能是路由器,也可能只是內網向特定路由器傳輸資料的閘道器。
(4)
路由器收到資料後,它再次為遠端主機或網路查詢路由,若還未找到路由,該資料包將傳送到該路由器的預設閘道器地址。而資料包中包含一個最大路由跳數,如果超
過這個跳數,就會丟棄資料包,這樣可以防止無限傳遞。路由器收到資料包後,只會檢視網路層的包裹資料,目的ip。所以說它是工作在網路層,傳輸層的資料對
它來說則是透明的。
如果上面這些步驟都沒有成功,那麼該資料報就不能被傳送。如果不能傳送的資料報來自本機,那麼一般會向生成資料報的應用程式返回一個“主機不可達”或 “網路不可達”的錯誤。
以windows下主機的路由表為例,看路由的查詢過程
======================================================================
Active Routes:
Network Destination Netmask Gateway Interface Metric
0.0.0.0 0.0.0.0 192.168.1.2 192.168.1.101 10
127.0.0.0 255.0.0.0 127.0.0.1 127.0.0.1 1
192.168.1.0 255.255.255.0 192.168.1.101 192.168.1.101 10
192.168.1.101 255.255.255.255 127.0.0.1 127.0.0.1 10
192.168.1.255 255.255.255.255 192.168.1.101 192.168.1.101 10
224.0.0.0 240.0.0.0 192.168.1.101 192.168.1.101 10
255.255.255.255 255.255.255.255 192.168.1.101 192.168.1.101 1
Default Gateway: 192.168.1.2
Network Destination 目的網段
Netmask 子網掩碼
Gateway 下一跳路由器入口的ip,路由器透過interface和gateway定義一調到下一個路由器的鏈路,通常情況下,interface和gateway是同一網段的。
Interface 到達該目的地的本路由器的出口ip(對於我們的個人pc來說,通常由機算機A的網絡卡,用該網絡卡的IP地址標識,當然一個pc也可以有多個網絡卡)。
閘道器這個概念,主要用於不同子網間的互動,當兩個子網內主機A,B要進行通訊時,首先A要將資料傳送到它的本地閘道器,然後閘道器再將資料傳送給B所在的閘道器,然後閘道器再發送給B。
預設閘道器,當一個數據包的目的網段不在你的路由記錄中,那麼,你的路由器該把那個資料包傳送到哪裡!預設路由的閘道器是由你的連線上的default gateway決定的,也就是我們通常在網路連線裡配置的那個值。
通常interface和gateway處在一個子網內,對於路由器來說,因為可能具有不同的interface,當資料包到達時,根據
Network
Destination尋找匹配的條目,如果找到,interface則指明瞭應當從該路由器的那個接口出去,gateway則代表了那個子網的閘道器地
址。
第一條 0.0.0.0 0.0.0.0 192.168.1.2 192.168.1.101 10
0.0.0.0
代表了預設路由。該路由記錄的意思是:當我接收到一個數據包的目的網段不在我的路由記錄中,我會將該資料包透過192.168.1.101這個介面傳送到
192.168.1.2這個地址,這個地址是下一個路由器的一個介面,這樣這個資料包就可以交付給下一個路由器處理,與我無關。該路由記錄的線路質量
10。當有多個條目匹配時,會選擇具有較小Metric值的那個。
第三條 192.168.1.0 255.255.255.0 192.168.1.101 192.168.1.101 10
直
聯網段的路由記錄:當路由器收到發往直聯網段的資料包時該如何處理,這種情況,路由記錄的interface和gateway是同一個。當我接收到一個數
據包的目的網段是192.168.1.0時,我會將該資料包透過192.168.1.101這個介面直接傳送出去,因為這個埠直接連線著
192.168.1.0這個網段,該路由記錄的線路質量
10 (因interface和gateway是同一個,表示資料包直接傳送給目的地址,不需要再轉給路由器)。
查詢到下一跳ip地址後,還需要知道它的mac地址,這個地址要作為鏈路層資料裝進鏈路層頭部。這時需要arp協議,具體過程是這樣的,查詢arp
緩衝,windows下執行arp
-a可以檢視當前arp緩衝內容。如果裡面含有對應ip的mac地址,則直接返回。否則需要發生arp請求,該請求包含源的ip和mac地址,還有目的地
的ip地址,在網內進行廣播,所有的主機會檢查自己的ip與該請求中的目的ip是否一樣,如果剛好對應則返回自己的mac地址,同時將請求者的ip
mac儲存。這樣就得到了目標ip的mac地址。
鏈路層
將mac地址及鏈路層控制資訊加到資料包裡,形成Frame,Frame在鏈路層協議下,完成了相鄰的節點間的資料傳輸,完成連線建立,控制傳輸速度,資料完整。
物理層
物理線路則只負責該資料以bit為單位從主機傳輸到下一個目的地。
下一個目的地接受到資料後,從物理層得到資料然後經過逐層的解包 到 鏈路層 到 網路層,然後開始上述的處理,在經網路層 鏈路層 物理層將資料封裝好繼續傳往下一個地址。
在上面的過程中,可以看到有一個路由表查詢過程,而這個路由表的建立則依賴於路由演算法。也就是說路由演算法實際上只是用來路由器之間更新維護路由表,
真正的資料傳輸過程並不執行這個演算法,只檢視路由表。這個概念也很重要,需要理解常用的路由演算法。而整個tcp協議比較複雜,跟鏈路層的協議有些相似,其
中有很重要的一些機制或者概念需要認真理解,比如編號與確認,流量控制,重發機制,傳送接受視窗。
tcp/ip基本模型及概念
物理層
鏈路層
協議:SDLC(Synchronous Data Link Control)HDLC(High-level Data Link
Control)
ppp協議獨立的鏈路裝置中最常見的當屬網絡卡,網橋也是鏈路產品。集線器MODEM的某些功能有人認為屬於鏈路層,對此還有些爭議認為屬於物理層裝置。除
此之外,所有的交換機都需要工作在資料鏈路層,但僅工作在資料鏈路層的僅是二層交換機。其他像三層交換機、四層交換機和七層交換機雖然可對應工作在OSI
的三層、四層和七層,但二層功能仍是它們基本的功能。
網路層
四個主要的協議:
網際協議IP:負責在主機和網路之間定址和路由資料包。
地址解析協議ARP:獲得同一物理網路中的硬體主機地址。
網際控制訊息協議ICMP:傳送訊息,並報告有關資料包的傳送錯誤。
互聯組管理協議IGMP:被IP主機拿來向本地多路廣播路由器報告主機組成員。
該層裝置有三層交換機,路由器。
傳輸層
兩個重要協議 TCP 和 UDP 。
埠概念:TCP/UDP 使用 IP 地址標識網上主機,使用埠號來標識應用程序,即 TCP/UDP 用主機 IP
地址和為應用程序分配的埠號來標識應用程序。埠號是 16 位的無符號整數, TCP 的埠號和 UDP
的埠號是兩個獨立的序列。儘管相互獨立,如果 TCP 和 UDP
同時提供某種知名服務,兩個協議通常選擇相同的埠號。這純粹是為了使用方便,而不是協議本身的要求。利用埠號,一臺主機上多個程序可以同時使用
TCP/UDP 提供的傳輸服務,並且這種通訊是端到端的,它的資料由 IP 傳遞,但與 IP
資料報的傳遞路徑無關。網路通訊中用一個三元組可以在全域性唯一標誌一個應用程序:(協議,本地地址,本地埠號)。
也就是說tcp和udp可以使用相同的埠。
可以看到透過(協議,源埠,源ip,目的埠,目的ip)就可以用來完全標識一組網路連線。
應用層
基於tcp:Telnet FTP SMTP DNS HTTP
基於udp:RIP NTP(網落時間協議)和DNS (DNS也使用TCP)SNMP TFTP