0-1023是公認端口號,即已經公認定義或為將要公認定義的軟件保留的,而1024-65535是並沒有公***定義的端口號,用戶可以自己定義這些端口的作用。
那麽端口號到底有什麽作用呢?請大家繼續往下看。
當壹臺電腦啟動了壹個可以讓遠程其他電腦訪問的程序,那麽它就要開啟至少壹個端口號來讓外界訪問。我們可以把沒有開啟端口號的電腦看作是壹個密封的房間,密封的房間當然不可能接受外界的訪問,所以當系統開啟了壹個可以讓外界訪問的程序後它自然需要在房間上開壹個窗口來接受來自外界的訪問,這個窗口就是端口。
那麽為什麽要給端口編號來區分它們呢,既然壹個程序開了壹個端口,那麽不是外部信息都可以通過這個開啟的端口來訪問了嗎?答案是不可以。為什麽呢?因為數據是用端口號來通知傳輸層協議送給哪個軟件來處理的,數據是沒有智慧的,如果很多的程序***用壹個端口來接受數據的話,那麽當外界的壹個數據包送來後傳輸層就不知道該送給哪壹個軟件來處理,這樣勢必將導致混亂。
上壹次提到提到在壹個經過OSI第四層傳輸層封裝的數據段的第四層報頭裏包含兩個端口號,既源端口號和目的端口號,目的端口號的作用上面已經介紹了,下面讓我們了解壹下原端口號吧。
源端口號壹般是由系統自己動態生成的壹個從1024-65535的號碼,當壹臺計算機A通過網絡訪問計算機B時,如果它需要對方返回數據的話,它也會隨機創建壹個大於1023的端口,告訴B返回數據時把數據送到自己的哪個端口,然後軟件開始偵聽這個端口,等待數據返回。而B收到數據後會讀取數據包的源端口號和目的端口號,然後記錄下來,當軟件創建了要返回的數據後就把原來數據包中的原端口號作為目的端口號,而把自己的端口號作為原端口號,也就是說把收到的數據包中的原和目的反過來,然後再送回A,A再重復這個過程如此反復直到數據傳輸完成。當數據全部傳輸完A就把源端口釋放出來,所以同壹個軟件每次傳輸數據時不壹定是同壹個源端口號。