進程間通訊
#傳輸層又稱為運輸層,它是比較特殊的一層。一方面,它屬於通訊部分的最高層,另一方面,也是使用者功能中的最底層。傳輸層是為不同主機的進程之間進行通信,對於進行分組轉發的路由器來說,它只有下三層的功能,用不到傳輸層及以上層。
進程,即執行的程式。在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中文網其他相關文章!