一、網(wǎng)絡(luò)通信協(xié)議
通過計算機(jī)網(wǎng)絡(luò)可以使多臺計算機(jī)實現(xiàn)連接,位于同一個網(wǎng)絡(luò)中的計算機(jī)在進(jìn)行連接和通信時需要遵守一定的規(guī)則,這就好比在道路中行駛的汽車一定要遵守交通規(guī)則一樣。在計算機(jī)網(wǎng)絡(luò)中,這些連接和通信的規(guī)則被稱為網(wǎng)絡(luò)通信協(xié)議,它對數(shù)據(jù)的傳輸格式、傳輸速率、傳輸步驟等做了統(tǒng)一規(guī)定,通信雙方必須同時遵守才能完成數(shù)據(jù)交換。
網(wǎng)絡(luò)通信協(xié)議有很多種,目前應(yīng)用最廣泛的是TCP/IP協(xié)議(Transmission Control Protocal/Internet Protoal傳輸控制協(xié)議/英特網(wǎng)互聯(lián)協(xié)議),它是一個包括TCP協(xié)議和IP協(xié)議,UDP(User Datagram Protocol)協(xié)議和其它一些協(xié)議的協(xié)議組。
1.TCP/IP協(xié)議
TCP/IP網(wǎng)絡(luò)模型
上圖中,TCP/IP協(xié)議中的四層分別是應(yīng)用層、傳輸層、網(wǎng)絡(luò)層和鏈路層,每層分別負(fù)責(zé)不同的通信功能,接下來針對這四層進(jìn)行詳細(xì)地講解。
鏈路層:鏈路層是用于定義物理傳輸通道,通常是對某些網(wǎng)絡(luò)連接設(shè)備的驅(qū)動協(xié)議,例如針對光纖、網(wǎng)線提供的驅(qū)動。
網(wǎng)絡(luò)層:網(wǎng)絡(luò)層是整個TCP/IP協(xié)議的核心,它主要用于將傳輸?shù)臄?shù)據(jù)進(jìn)行分組,將分組數(shù)據(jù)發(fā)送到目標(biāo)計算機(jī)或者網(wǎng)絡(luò)。
傳輸層:主要使網(wǎng)絡(luò)程序進(jìn)行通信,在進(jìn)行網(wǎng)絡(luò)通信時,可以采用TCP協(xié)議,也可以采用UDP協(xié)議。
應(yīng)用層:主要負(fù)責(zé)應(yīng)用程序的協(xié)議,例如HTTP協(xié)議、FTP協(xié)議等。
網(wǎng)路通信協(xié)議分層
應(yīng)用層:
HTTP(Hypertext Transfer Protocol 超文本傳輸協(xié)議,顯示網(wǎng)頁)
DNS(Domain Name System)
FTP(File Transfer Protocol)
SFTP(SSH File Transfer Protocol,和FTP不一樣)
SCP(Secure copy,based on SSH)
SSH (Secure Shell)
通信層:
TCP(Transmission Control Protocol 三次握手傳輸協(xié)議)
UDP
網(wǎng)絡(luò)層:
IP(Internet Protocol)
ICMP(Internet Control Message Protocol,主要用于路由發(fā)送錯誤報告)
鏈接層:
MAC(media access control)
數(shù)據(jù)的傳輸過程:
首先用戶層需要傳輸文件,那么就需要文件傳輸協(xié)議。
在需要傳送的數(shù)據(jù)加上文件傳輸協(xié)議的報頭,呼叫下一層。
傳輸層接收到這個指令之后,加上該層的協(xié)議報頭,再呼叫下一層。
網(wǎng)絡(luò)層收到這個指令之后,加上網(wǎng)絡(luò)層的報頭,傳給鏈路層。
鏈路層的協(xié)議中包括傳送目標(biāo)。通過局域網(wǎng)傳送給了對方主機(jī)的鏈路層。
以上過程稱為——封裝。
2.UDP協(xié)議(不安全,效率高)
在介紹TCP/IP結(jié)構(gòu)時,提到傳輸層的兩個重要的高級協(xié)議,分別是UDP和TCP,其中UDP是User Datagram Protocol的簡稱,稱為用戶數(shù)據(jù)報協(xié)議,TCP是Transmission Control Protocol的簡稱,稱為傳輸控制協(xié)議。
UDP是無連接通信協(xié)議,即在數(shù)據(jù)傳輸時,數(shù)據(jù)的發(fā)送端和接收端不建立邏輯連接。簡單來說,當(dāng)一臺計算機(jī)向另外一臺計算機(jī)發(fā)送數(shù)據(jù)時,發(fā)送端不會確認(rèn)接收端是否存在,就會發(fā)出數(shù)據(jù),同樣接收端在收到數(shù)據(jù)時,也不會向發(fā)送端反饋是否收到數(shù)據(jù)。
由于使用UDP協(xié)議消耗資源小,通信效率高,所以通常都會用于音頻、視頻和普通數(shù)據(jù)的傳輸例如視頻會議、QQ聊天都使用UDP協(xié)議,因為這種情況即使偶爾丟失一兩個數(shù)據(jù)包,也不會對接收結(jié)果產(chǎn)生太大影響,而且在QQ聊天時,任何時候都可以發(fā)送消息,無論對方是否在線。
但是在使用UDP協(xié)議傳送數(shù)據(jù)時,由于UDP的面向無連接性,不能保證數(shù)據(jù)的完整性,因此在傳輸重要數(shù)據(jù)時不建議使用UDP協(xié)議。UDP的交換過程如下圖所示。注:UDP數(shù)據(jù)傳輸限制在64KB以內(nèi)
3.TCP協(xié)議
TCP協(xié)議是面向連接的通信協(xié)議,即在傳輸數(shù)據(jù)前先在發(fā)送端和接收端建立邏輯連接,然后再傳輸數(shù)據(jù),它提供了兩臺計算機(jī)之間可靠無差錯的數(shù)據(jù)傳輸。在TCP連接中必須要明確客戶端與服務(wù)器端,由客戶端向服務(wù)端發(fā)出連接請求,每次連接的創(chuàng)建都需要經(jīng)過“三次握手”。第一次握手,客戶端向服務(wù)器端發(fā)出連接請求,等待服務(wù)器確認(rèn),第二次握手,服務(wù)器端向客戶端回送一個響應(yīng),通知客戶端收到了連接請求,第三次握手,客戶端再次向服務(wù)器端發(fā)送確認(rèn)信息,確認(rèn)連接。整個交互過程如下圖所示。
由于TCP協(xié)議的面向連接特性,它可以保證傳輸數(shù)據(jù)的安全性,所以是一個被廣泛采用的協(xié)議,例如在下載文件時,如果數(shù)據(jù)接收不完整,將會導(dǎo)致文件數(shù)據(jù)丟失而不能被打開,因此,下載文件時必須采用TCP協(xié)議。
二、IP地址(127.0.0.1代表本機(jī)IP)
要想使網(wǎng)絡(luò)中的計算機(jī)能夠進(jìn)行通信,必須為每臺計算機(jī)指定一個標(biāo)識號,通過這個標(biāo)識號來指定接受數(shù)據(jù)的計算機(jī)或者發(fā)送數(shù)據(jù)的計算機(jī)。
在TCP/IP協(xié)議中,這個標(biāo)識號就是IP地址,它可以唯一標(biāo)識一臺計算機(jī),目前,IP地址廣泛使用的版本是IPv4,它是由4個字節(jié)大小的二進(jìn)制數(shù)來表示,如:00001010000000000000000000000001。由于二進(jìn)制形式表示的IP地址非常不便記憶和處理,因此通常會將IP地址寫成十進(jìn)制的形式,每個字節(jié)用一個十進(jìn)制數(shù)字(0-255)表示(不能使用邊界值),數(shù)字間用符號“.”分開,如 “192.168.1.100”,192.168就是一個局域網(wǎng)內(nèi)的IP地址。
隨著計算機(jī)網(wǎng)絡(luò)規(guī)模的不斷擴(kuò)大,對IP地址的需求也越來越多,IPV4這種用4個字節(jié)表示的IP地址面臨枯竭,因此IPv6 便應(yīng)運(yùn)而生了,IPv6使用16個字節(jié)表示IP地址,它所擁有的地址容量約是IPv4的8×1028倍,達(dá)到2128個(算上全零的),這樣就解決了網(wǎng)絡(luò)地址資源數(shù)量不夠的問題。
注意:只要電腦聯(lián)網(wǎng),就會有一個IP地址,有兩種分配方式,一種是自動分配的,另一種是自己寫(公司做項目時一般要求固定IP地址)!自己寫的步驟:控制面板-->網(wǎng)絡(luò)-->更改適配器設(shè)置-->屬性
三、端口號
通過IP地址可以連接到指定計算機(jī),但如果想訪問目標(biāo)計算機(jī)中的某個應(yīng)用程序,還需要指定端口號。在計算機(jī)中,不同的應(yīng)用程序是通過端口號區(qū)分的。端口號是用兩個字節(jié)(16位的二進(jìn)制數(shù))表示的,它的取值范圍是0~65535,其中,0~1023之間的端口號已經(jīng)被操作系統(tǒng)的一些應(yīng)用程序占用了,用戶的普通應(yīng)用程序需要使用1024以上的端口號。
端口號是邏輯端口,由操作系統(tǒng)負(fù)責(zé)為每個程序進(jìn)行分配,但是也可以自己申請端口號。
接下來通過一個圖例來描述IP地址和端口號的作用,如下圖所示。
從上圖中可以清楚地看到,位于網(wǎng)絡(luò)中一臺計算機(jī)可以通過IP地址去訪問另一臺計算機(jī),并通過端口號訪問目標(biāo)計算機(jī)中的某個應(yīng)用程序。
聯(lián)系客服