執行在計算機中的程序是用程序識別符號來標識的。
但執行在應用層的各種應用程序卻不應當讓計算機作業系統指派它的程序識別符號。這是因為在網際網路上使用的計算機的作業系統種類很多,而不同的作業系統又使用不同格式的程序識別符號。
為了使執行不同作業系統的計算機的應用程序能夠互相通訊,就必須用統一的方法對tcp/ip體系的應用程序進行標誌。
一、需要解決的問題
由於程序的建立和撤銷都是動態的,傳送方幾乎無法識別其他機器上的程序。
有時我們會改換接收報文的程序,但並不需要通知所有傳送方。
我們往往需要利用目的的主機提供的功能來識別終點,而不需要知道實現這個功能的程序。
二、埠號
解決這個問題的方法,就是在運輸層使用協議埠號(protocolport number)
,或通常簡稱為埠(port)。
雖然通訊的終點是應用程序,但我們可以把埠想象是通訊的終點,因為我們只要把要傳送的報文交到目的主機的某乙個合適的目的埠,剩下的工作(即最後交付目的程序)就由tcp來完成。
三、軟體埠和硬體埠
兩個不同的概念。
在協議棧層間的抽象的協議埠是軟體埠。
路由器或交換機上的埠是硬體埠。
硬體埠是不同硬體裝置進行互動的介面,而軟體埠是應用層的各種協議程序與運輸實體進行層間互動的一種位址。
四、tcp/ip運輸層埠
埠用乙個16位埠號進行標誌。
埠號只具有本地意義,即埠號只是為了標誌本計算機應用程中的各程序。
在網際網路中,不同計算機的相同埠號是沒有聯絡的。
由此可見,兩個計算機中的程序要互相通訊,不僅必須知道對方的ip位址(為了找到對方的計算機),而且還要知道對方的埠號(為了找到對方計算機中的應用程序)。
五、兩大類埠
(1)伺服器端使用的埠號
熟知埠數值一般為0~1023
登記埠號數值為1024~49151,為沒有熟知埠號的應用程式使用的,使用這個範圍的埠號必須在iana登記,以防止重複。
(2)客戶端使用的埠號
又稱為短暫埠號,數值為49152~65535,留給客戶程序選擇暫時使用。
當伺服器程序收到客戶程序的報文時,就知道了客戶程序所使用的動態埠號。通訊結束後,這個埠號可供其他客戶程序以後使用。
常用的熟知埠
一些常見的埠號及其用途如下:
tcp21
埠:ftp檔案傳輸服務
tcp23
埠:telnet終端**服務
tcp25
埠:smtp簡單郵件傳輸服務
udp53
埠:dns網域名稱解析服務
tcp80
埠:http超文字傳輸服務
tcp110
埠:pop3「郵局協議版本3」使用的埠
tcp443
埠:https加密的超文字傳輸服務
tcp1521
埠:oracle資料庫服務
tcp1863
埠:msnmessenger的檔案傳輸功能所使用的埠
tcp3389
埠:microsoftrdp 微軟遠端桌面使用的端
tcp5631
埠:symantecpcanywhere 遠端控制資料傳輸時使用的埠
udp5632
埠:symantecpcanywhere 主控端掃瞄被控端時使用的埠
tcp5000
埠:mssql server使用的埠
udp8000
Linux 運輸層的埠
既然提到埠,我們就來分析一下為什麼要使用埠的緣由吧。我們首先要知道的是,運輸層有復用和分用的功能。應用層所有的應用程序都可以通過運輸層再傳送到ip層,這就是復用。運輸層從ip層收到資料後必須交付到指明的應用程序,這就是分用。我們知道,單個程序是用程序識別符號來標誌的,但在計算機作業系統指派的程序識別...
理解運輸層的埠
運輸層的資料最終是要傳遞給應用層的程序的,那麼如何準確的傳給目的程序就成為了乙個問題。因為源主機和目的主機很可能是不同的系統,因而無法使用程序標誌符 二者的識別符號系統可能不同 來確定程序。因此,埠產生了。通訊的終點是乙個程序,但是只要把資料傳遞給指定的埠就行了,等協議負責將該埠的資料傳遞到目的程序...
運輸層簡介
封裝和解封 復用和分用 流量控制 差錯控制 運輸層位於網路層和應用層之間,運輸層負責向應用層提供服務,同時它接受來自網路層的服務。運輸層協議主要負責程序到程序間的通訊。程序可以理解未是使用了運輸層服務的應用層實體。比如nginx程序,mysql程序等,都需要把資料傳給運輸層,由運輸層負責把資料報傳輸...