既然提到端口,我們就來分析一下為什么要使用端口的緣由吧。我們首先要知道的是,運輸層有復用和分用的功能。應用層所有的應用進程都可以通過運輸層再傳送到IP層,這就是復用。運輸層從IP層收到數據后必須交付到指明的應用進程,這就是分用。我們知道,單個進程是用進程標識符來標志的,但在計算機操作系統指派的進程標識符標志運行在應用層的進程是不行的,因為不同的操作系統使用不同的進程標識符。為了讓不同操作系統間也實現進程間通信,因此得用一種方法對TCP/IP體系的應用進程進行標志。同時,我們在進行通信的時候,必須知道起點和終點,即通信的一方和另一方,那么我們如何識別終點呢,這里就要使用到協議端口號(端口)。雖然通信的終點是應用進程,但我們要傳送的報文交到目的主機的某一個合適的目的端口,剩下的工作就由TCP來完成。
關于端口,分為軟件端口和硬件端口。
軟件端口:在協議棧層間的抽象的協議端口,應用層的各種協議進程與運輸實體進行層間交互的一種地址
硬件端口:不同硬件設備進行交互的接口
在TCP/UDP的首部格式中,都有源端口和目的端口。當運輸層收到IP層交上來的運輸層報文時,就能根據其首部中的目的端口把數據交付應用層的目的應用進程。
TCP/IP的運輸層用一個16位端口號來標志一個端口,端口號只具有本地的意義。
注:不同的計算機具有相同的端口是沒有關聯的
16位的端口號可允許有65535個不同的端口號。
端口號的分類:
服務器端使用的端口號:分為兩類,(1)熟知端口號(系統端口號):數值為0-1023;這些數值在www.iana.org中可查到。常用的熟知端口號為:
- FTP: 21
- TELNET: 23
- SMTP: 25
- DNS: 53
- TFTP: 69
- HTTP: 80
- SNMP: 161
- SNMP(trap): 162