智能化弱電工程中能用到的計算機網絡知識彙總

前言:

什麼是計算機網絡

計算機網絡,是指將地理位置不同的具有獨立功能的多臺計算機及其外部設備,通過通信線路連接起來,在網絡操作系統,網絡管理軟件及網絡通信協議的管理和協調下,實現資源共享和信息傳遞的計算機系統。

什麼是無線網絡

無線網絡,既包括允許用戶建立遠距離無線連接的全球語音和數據網絡,也包括為近距離無線連接進行優化的紅外線技術及射頻技術,與有線網絡的用途十分類似,最大的不同在於傳輸媒介的不同,利用無線電技術取代網線,可以和有線網絡互為備份。

OSI,TCP/IP,五層協議的體系結構,以及各層協議

OSI分層 (7層):物理層、數據鏈路層、網絡層、傳輸層、會話層、表示層、應用層。

TCP/IP分層(4層):網絡接口層、 網際層、運輸層、 應用層。

五層協議 (5層):物理層、數據鏈路層、網絡層、運輸層、 應用層。

每一層的協議如下:

物理層:RJ45、CLOCK、IEEE802.3 (中繼器,集線器,網關)

數據鏈路:PPP、FR、HDLC、VLAN、MAC (網橋,交換機)

網絡層:IP、ICMP、ARP、RARP、OSPF、IPX、RIP、IGRP、(路由器)

傳輸層:TCP、UDP、SPX

會話層:NFS、SQL、NETBIOS、RPC

表示層:JPEG、MPEG、ASII

應用層:FTP、DNS、Telnet、SMTP、HTTP、WWW、NFS

TCP各層作用

物理層:物理層規定了激活、維持、關閉通信端點之間的機械特性、電氣特性、功能特性以及過程特性。在這一層,數據的單位稱為比特。

數據鏈路層:數據鏈路層在不可靠的物理介質上提供可靠的傳輸。該層的作用包括:物理地址尋址、數據的成幀、流量控制、數據的檢錯、重發等。在這一層,數據的單位稱為幀。

網絡層:網絡層負責對子網間的數據包進行路由選擇。網絡層還可以實現擁塞控制、網際互連等功能。在這一層,數據的單位稱為數據包。

傳輸層:傳輸層是第一個端到端,即主機到主機的層次。傳輸層負責將上層數據分段並提供端到端的、可靠的或不可靠的傳輸。此外,傳輸層還要處理端到端的差錯控制和流量控制問題。

會話層:會話層管理主機之間的會話進程,即負責建立、管理、終止進程之間的會話。會話層還利用在數據中插入校驗點來實現數據的同步。

表示層:表示層對上層數據或信息進行變換以保證一個主機應用層信息可以被另一個主機的應用程序理解。表示層的數據轉換包括數據的加密、壓縮、格式轉換等。

應用層:應用層為操作系統或網絡應用程序提供訪問網絡服務的接口。

TCP應用場景

效率要求相對低,但對準確性要求相對高的場景。因為傳輸中需要對數據確認、重發、排序等操作,相比之下效率沒有UDP高。舉幾個例子:文件傳輸(準確高要求高、但是速度可以相對慢)、接受郵件、遠程登錄。

UDP應用場景

效率要求相對高,對準確性要求相對低的場景。舉幾個例子:QQ聊天、在線視頻、網絡語音電話(即時通訊,速度要求高,但是出現偶爾斷續不是太大問題,並且此處完全不可以使用重發機制)、廣播通信(廣播、多播)。

TCP對應的協議和UDP對應的協議

TCP對應的協議

(1) FTP:定義了文件傳輸協議,使用21端口。常說某某計算機開了FTP服務便是啟動了文件傳輸服務。下載文件,上傳主頁,都要用到FTP服務。

(2) Telnet:它是一種用於遠程登陸的端口,用戶可以以自己的身份遠程連接到計算機上,通過這種端口可以提供一種基於DOS模式下的通信服務。如以前的BBS是-純字符界面的,支持BBS的服務器將23端口打開,對外提供服務。

(3) SMTP:定義了簡單郵件傳送協議,現在很多郵件服務器都用的是這個協議,用於發送郵件。如常見的免費郵件服務中用的就是這個郵件服務端口,所以在電子郵件設置-中常看到有這麼SMTP端口設置這個欄,服務器開放的是25號端口。

(4) POP3:它是和SMTP對應,POP3用於接收郵件。通常情況下,POP3協議所用的是110端口。也是說,只要你有相應的使用POP3協議的程序(例如Fo-xmail或Outlook),就可以不以Web方式登陸進郵箱界面,直接用郵件程序就可以收到郵件(如是163郵箱就沒有必要先進入網易網站,再進入自己的郵-箱來收信)。

(5)HTTP協議:是從Web服務器傳輸超文本到本地瀏覽器的傳送協議。

UDP對應的協議:

(1) DNS:用於域名解析服務,將域名地址轉換為IP地址。DNS用的是53號端口。

(2) SNMP:簡單網絡管理協議,使用161號端口,是用來管理網絡設備的。由於網絡設備很多,無連接的服務就體現出其優勢。

(3) TFTP(Trival File Transfer Protocal),簡單文件傳輸協議,該協議在熟知端口69上使用UDP服務。

TCP的三次握手與四次揮手過程,各個狀態名稱與含義

三次握手

第一次握手:客戶機首先向服務器的TCP發送一個連接請求報文段,這個特殊的報文段不含應用層數據,其首部中同步位SYN被設置為1。另外,客戶機會隨機選擇一個起始序號seq=x(連接請求報文不攜帶數據,但要消耗一個序號).

第二次握手:服務器的TCP收到連接請求報文段後,如果同意建立連接,就向客戶機發回確認,併為該TCP連接分配TCP緩存和變量。在確認報文段中,SYN和ACK位都被設置為1,確認號字段值為ack=x+1,並且服務器隨機產生起始序號seq=y. 確認包同樣不包含應用層數據。

第三次握手:當客戶機收到確認報文段後,還要向服務器給出確認,並且也要給該連接分配緩存和變量。這個報文段的確認為ACK被設置為1,序號段被設置為seq=x+1,確認號字段ack=y+1. 該報文段可以攜帶數據,如果不攜帶數據則不消耗序號。理想狀態下,TCP連接一旦建立,在通信雙方中的任何一方主動關閉連接之前,TCP 連接都將被一直保持下去。因為TCP提供全雙工通信,因此雙方任何時候都可以發送數據。

四次揮手

第一次揮手:客戶機打算關閉連接,就向其TCP發送一個連接釋放報文,並停止再發送數據,主動關閉TCP連接。該報文段的FIN標誌位被設置為1,seq=u,它等於前面已經發送過的數據的最後一個字節的序號加1。

第二次揮手:服務器收到連接釋放報文段後即發出確認,確認號是ack=u+1,序號為v,等於它前面已經發送過的數據的最後一個字節序號加1.此時客戶機到服務器這個方向的連接就釋放了,TCP處於半關閉狀態。ACK=1,seq=v,ack=u+1

第三次揮手:若服務器已經沒有要向客戶機發送的數據,就通知TCP釋放連接,此時發出FIN=1,確認號ack= u+1,序號seq =w,已經發送過的數據最後一個字節加1。確認為ACK=1. (FIN = 1, ACK=1,seq = w, ack =u+1)

第四次揮手:客戶機收到連接釋放報文段後,必須發出確認。在確認報文段中,確認位ACK=1,序號seq=u+1,確認號ack=w+1. 此時連接還沒有釋放掉,必須經過實踐等待計時器設置的時間2MSL(Max Segment Lifetime),後,客戶機才進入連接關閉狀態。(ACK=1,seq=u+1,ack=w+1)

為什麼會採用三次握手,若採用二次握手可以嗎?

採用三次握手是為了防止失效的連接請求報文段再次傳到服務器,因而產生錯誤。如果由於網絡不穩定,雖然客戶端以前發送的連接請求以到達服務方,但服務方的同意連接的應答未能到達客戶端。則客戶方要重新發送連接請求,若採用二次握手,服務方收到客服端重傳的請求連接後,會以為是新的請求,就會發送同意連接報文,並新開進程提供服務,這樣會造成服務方資源的無謂浪費。如果只採用一次的話,客戶端不知道服務端是否已經收到自己發送的數據,則會不斷地發送數據。為了保證服務端能收接受到客戶端的信息並能做出正確的應答而進行前兩次(第一次和第二次)握手,為了保證客戶端能夠接收到服務端的信息並能做出正確的應答而進行後兩次(第二次和第三次)握手

為什麼斷開連接要四次?

因為TCP連接是全雙工的網絡協議,允許同時通信的雙方同時進行數據的收發,同樣也允許收發兩個方向的連接被獨立關閉,以避免client數據發送完畢,向server發送FIN關閉連接,而server還有發送到client的數據沒有發送完畢的情況。所以關閉TCP連接需要進行四次握手,每次關閉一個方向上的連接需要FIN和ACK兩次握手。

TCP擁塞控制

為了更好對TCP進行擁塞控制,因特網建議標準定義了以下四種算法:慢開始,擁塞避免,快重傳,快恢復。

首先在TCP要求發送端維護兩個窗口:

1) 接收窗口rwnd,接收方根據當前緩存大小鎖許諾的最新窗口值。

2) 擁塞窗口cwnd ,發送方根據自己估算的網絡擁塞程度而設置的窗口值。發送窗口的上限是取這兩者的最小值。

慢開始:TCP剛連接好時,先令擁塞窗口cwnd =1 ,在每次收到一個對新報文段的確認時將cwnd加倍. Cwnd的大小呈指數增長。

擁塞避免算法:當cwnd大於等於慢開始門限ssthresh時,cwnd窗口每次加1而不是加倍。當發送方檢測到超時事件的發生時,就將慢開始門限設置為當前cwnd的一半,同時將cwnd設置為1. 這樣的目的是迅速減少主機發送到網絡的分組數,使得發生擁塞的路由器有足夠的時間吧隊列中積壓的分組處理完畢。

快重傳:當發送方連續收到三個重複的ACK報文時,直接重傳對方尚未收到的報文段,而不必等待那個報文段設置的重傳計時器超時。

快恢復:當發送端收到連續三個冗餘的ACK時,就執行“乘法減小”算法,把慢開始門限ssthresh減半,cwnd設置為慢開始門限減半後的數值(與慢開始不同)。

簡述DNS進行域名解析的過程

首先,客戶端發出DNS請求翻譯IP地址或主機名。DNS服務器在收到客戶機的請求後:

(1)檢查DNS服務器的緩存,若查到請求的地址或名字,即向客戶機發出應答信息;

(2)若沒有查到,則在數據庫中查找,若查到請求的地址或名字,即向客戶機發出應答信息;

(3)若沒有查到,則將請求發給根域DNS服務器,並依序從根域查找頂級域,由頂級查找二級域,二級域查找三級,直至找到要解析的地址或名字,即向客戶機所在網絡的DNS服務器發出應答信息,DNS服務器收到應答後現在緩存中存儲,然後,將解析結果發給客戶機。

(4)若沒有找到,則返回錯誤信息。

當然它有遞歸查詢與迭代查詢兩種方式,但是大概流程和我剛剛講的一樣

簡單解釋一些ARP地址解析協議的工作過程

廣播發送ARP請求,單播發送ARP響應。

1:首先,每個主機都會在自己的ARP緩衝區中建立一個ARP列表,以表示IP地址和MAC地址之間的對應關係。

2:當源主機要發送數據時,首先檢查ARP列表中是否有對應IP地址的目的主機的MAC地址,如果有,則直接發送數據,如果沒有,就向本網段的所有主機發送ARP數據包,該數據包包括的內容有:源主機 IP地址,源主機MAC地址,目的主機的IP 地址。

3:當本網絡的所有主機收到該ARP數據包時,首先檢查數據包中的IP地址是否是自己的IP地址,如果不是,則忽略該數據包,如果是,則首先從數據包中取出源主機的IP和MAC地址寫入到ARP列表中,如果已經存在,則覆蓋,然後將自己的MAC地址寫入ARP響應包中,告訴源主機自己是它想要找的MAC地址。

4:源主機收到ARP響應包後。將目的主機的IP和MAC地址寫入ARP列表,並利用此信息發送數據。如果源主機一直沒有收到ARP響應數據包,表示ARP查詢失敗。

一次完整的HTTP請求過程

域名解析 --> 發起TCP的3次握手 --> 建立TCP連接後發起http請求 --> 服務器響應http請求,瀏覽器得到html代碼 --> 瀏覽器解析html代碼,並請求html代碼中的資源(如js、css、圖片等) --> 瀏覽器對頁面進行渲染呈現給用戶

說明一下從http協議發送的客戶端請求到達服務器端的整個傳輸過程。

1、客戶端瀏覽器通過DNS解析到www.baidu.com的IP地址220.181.27.48,通過這個IP地址找到客戶端到服務器的路徑。客戶端瀏覽器發起一個HTTP會話到220.161.27.48,然後通過TCP進行封裝數據包,輸入到網絡層。

2、在客戶端的傳輸層,把HTTP會話請求分成報文段,添加源和目的端口,如服務器使用80端口監聽客戶端的請求,客戶端由系統隨機選擇一個端口如5000,與服務器進行交換,服務器把相應的請求返回給客戶端的5000端口。然後使用IP層的IP地址查找目的端。

3、客戶端的網絡層不用關心應用層或者傳輸層的東西,主要做的是通過查找路由表確定如何到達服務器,期間可能經過多個路由器。

4、客戶端的鏈路層,包通過鏈路層發送到路由器,通過鄰居協議查找給定IP地址的MAC地址,然後發送ARP請求查找目的地址,如果得到回應後就可以使用ARP的請求應答交換的IP數據包現在就可以傳輸了,然後發送IP數據包到達服務器的地址。

如何編寫socket套接字

服務器端程序的編寫步驟:

第一步:調用socket()函數創建一個用於通信的套接字。

第二步:給已經創建的套接字綁定一個端口號,這一般通過設置網絡套接口地址和調用bind()函數來實現。

第三步:調用listen()函數使套接字成為一個監聽套接字。

第四步:調用accept()函數來接受客戶端的連接,這是就可以和客戶端通信了。

第五步:處理客戶端的連接請求。

第六步:終止連接。

客戶端程序編寫步驟:

第一步:調用socket()函數創建一個用於通信的套接字。

第二步:通過設置套接字地址結構,說明客戶端與之通信的服務器的IP地址和端口號。

第三步:調用connect()函數來建立與服務器的連接。

第四步:調用讀寫函數發送或者接收數據。

第五步:終止連接。

路由器工作原理——網絡層

路由器是一種三層設備,是使用IP地址尋址:

路由器接收到數據包,提取目標IP地址及子網掩碼計算目標網絡地址;

根據目標網絡地址查找路由表,如果找到目標網絡地址就按照相應的出口發送到下一個路由器;

如果沒有找到,就看一下有沒有默認路由,如果有就按照默認路由的出口發送給下一個路由器;

如果沒有找到就給源IP發送一個出錯ICMP數據包表明沒法傳遞該數據包;

如果是直連路由就按照第二層MAC地址發送給目標站點。

請問交換機的實現原理是什麼——數據鏈路層

1.交換機根據收到數據幀中的源MAC地址建立該地址同交換機端口的映射,並將其寫入MAC地址表中。

2.交換機將數據幀中的目的MAC地址同已建立的MAC地址表進行比較,以決定由哪個端口進行轉發。

3.如數據幀中的目的MAC地址不在MAC地址表中,則向所有端口轉發。這一過程稱為泛洪(flood)。

4.廣播幀和組播幀向所有的端口轉發。

路由器和交換機區別

(1)外形上:

交換機通常端口比較多,而路由器的端口比較少

(2)工作層次不同:

交換機一般工作在數據鏈路層,而路由器則工作在網絡層

(3)數據的轉發對象不同:

交換機是根據MAC地址轉發數據幀,而路由器則是根據IP地址來轉發IP數據報/分組。

(4)”分工“不同

交換機主要是用於組建局域網,而路由器則是負責讓主機連接外網。

(5)衝突域和廣播域

交換機分割衝突域,但是不分割廣播域,而路由器分割廣播域。


分享到:


相關文章: