首頁 >運維 >linux運維 >傳輸層概述:連接埠、進程之間的關係

傳輸層概述:連接埠、進程之間的關係

齐天大圣
齐天大圣原創
2020-12-18 20:00:333245瀏覽

進程間通訊

#傳輸層又稱為運輸層,它是比較特殊的一層。一方面,它屬於通訊部分的最高層,另一方面,也是使用者功能中的最底層。傳輸層是為不同主機的進程之間進行通信,對於進行分組轉發的路由器來說,它只有下三層的功能,用不到傳輸層及以上層。

進程,即執行的程式。在linux中,當一個程式運行了,作業系統就會給該行程分配一個進程號。可以用命令ps aux來查看所有進程。

# ps aux 
USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root         1  0.0  0.1  51744  2808 ?        Ss   Jul31  16:06 /usr/lib/systemd/systemd --switched-root --system --deserialize 22
……

端口

TCP/IP的運輸層用16位元端口號來標誌一個端口,所以一個主機可以有65535個端口。做過web開放的肯定知道一些常用的連接埠號碼,例如:web伺服器的80、mysql服務的3306等連接埠。兩個主機之間的進程是透過各自的連接埠號碼來進行通訊的,所以,進程也必須具有監聽連接埠的功能。在linux中,查看監聽的連接埠的命令是netstat -tlunp

# netstat -tulnp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name    
tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN      2449/nginx: worker  
tcp        0      0 0.0.0.0:21              0.0.0.0:*               LISTEN      1010/pure-ftpd (SER 
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      1819/sshd           
……

連接埠還具有復用和分用的功能,復用的指主機的多個應用進程可以使用同一個連接埠號碼進行通訊,而分用時指從IP層拿到的資料封包又可以透過連接埠號碼交給不同的應用程式。

TCP和UDP

傳輸層只有兩個協定:傳輸控制協定TCP以及用戶資料封包協定UDP。這兩個協議有各自的特點,和自己應用的一些場景。

TCP是面向連接的協議,在傳遞資料之前必須先建立連接,不需要進行資料傳輸的話就需要斷開連接。 TCP是一種比較複雜的協議,需要考慮許多因素。它可以提供端對端的可靠傳輸,但不支援一對多以及多對多的通訊。常見的使用TCP協定的有HTTP協定、ftp協定、telnet協定等。

UDP是面對報文的,它比較簡單,是盡最大努力而不是可靠的傳輸。它可以進行一對一、一對多、更多的通訊。常見的使用UDP協定的協定有DHCP、DNS、RIP協定。

有一個例子是用來說明它們的特點的:TCP像是打電話,通話前必須先建立連線。而UDP則像發短信,短信發出去前不需要知道對方的主機的狀態,短信發沒發出去也是不知道的。

以上是傳輸層概述:連接埠、進程之間的關係的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn