❶ 網路通信
我們要理解網路中進程如何通信,得解決兩個問題:
a、我們要如何標識一台主機,即怎樣確定我們將要通信的進程是在那一台主機上運行。
b、我們要如何標識唯一進程,本地通過pid標識,網路中應該怎樣標識?
解決辦法:
a、TCP/IP協議族已經幫我們解決了這個問題,網路層的「ip地址」可以唯一標識網路中的主機
b、傳輸層的「協議+埠」可以唯一標識主機中的應用程序(進程),因此,我們利用三元組(ip地址,協議,埠)就可以標識網路的進程了,網路中的進程通信就可以利用這個標志與其它進程進行交互
以UDP傳輸為例:
1、物理層:
解決兩個硬體之間怎麼通信的問題,常見的物理媒介有光纖、電纜、中繼器等。它主要定義物理設備標准,如網線的介面類型、光纖的介面類型、各種傳輸介質的傳輸速率等。
它的主要作用是傳輸比特流(就是由1、0轉化為電流強弱來進行傳輸,到達目的地後在轉化為1、0,也就是我們常說的數模轉換與模數轉換)。這一層的數據叫做比特。
2、數據鏈路層:
在計算機網路中由於各種干擾的存在,物理鏈路是不可靠的。該層的主要功能就是:通過各種控制協議,將有差錯的物理信道變為無差錯的、能可靠傳輸數據幀的數據鏈路。
它的具體工作是接收來自物理層的位流形式的數據,並封裝成幀,傳送到上一層;同樣,也將來自上層的數據幀,拆裝為位流形式的數據轉發到物理層。這一層的數據叫做幀。
3、網路層:
計算機網路中如果有多台計算機,怎麼找到要發的那台?如果中間有多個節點,怎麼選擇路徑?這就是路由要做的事。
該層的主要任務就是:通過路由選擇演算法,為報文(該層的數據單位,由上一層數據打包而來)通過通信子網選擇最適當的路徑。這一層定義的是IP地址,通過IP地址定址,所以產生了IP協議。
4、傳輸層:
當發送大量數據時,很可能會出現丟包的情況,另一台電腦要告訴是否完整接收到全部的包。如果缺了,就告訴丟了哪些包,然後再發一次,直至全部接收為止。
簡單來說,傳輸層的主要功能就是:監控數據傳輸服務的質量,保證報文的正確傳輸。
5、會話層:
雖然已經可以實現給正確的計算機,發送正確的封裝過後的信息了。但我們總不可能每次都要調用傳輸層協議去打包,然後再調用IP協議去找路由,所以我們要建立一個自動收發包,自動定址的功能。於是會話層出現了:它的作用就是建立和管理應用程序之間的通信。
6、表示層:
表示層負責數據格式的轉換,將應用處理的信息轉換為適合網路傳輸的格式,或者將來自下一層的數據轉換為上層能處理的格式。
7、應用層:
應用層是計算機用戶,以及各種應用程序和網路之間的介面,其功能是直接向用戶提供服務,完成用戶希望在網路上完成的各種工作。前端同學對應用層肯定是最熟悉的。
應用層(應用,表示,會話):TFTP,HTTP,SNMP,FTP,SMTP,DNS,Telnet 等等
傳輸層:TCP,UDP
網路層:IP,ICMP,OSPF,EIGRP,IGMP
數據鏈路層:SLIP,CSLIP,PPP,MTU
重要的 協議族介紹:
IP 定義了 TCP/IP 的地址,定址方法,以及路由規則。現在廣泛使用的 IP 協議有 IPv4 和 IPv6 兩種:IPv4 使用 32 位二進制整數做地址,一般使用點分十進制方式表示,比如 192.168.0.1。
IP 地址由兩部分組成,即網路號和主機號。故一個完整的 IPv4 地址往往表示 為 192.168.0.1/24 或192.168.0.1/255.255.255.0 這種形式。
IPv6 是為了解決 IPv4 地址耗盡和其它一些問題而研發的最新版本的 IP。使用 128 位 整數表示地址,通常使用冒號分隔的十六進制來表示,並且可以省略其中一串連續的 0,如:fe80::200:1ff:fe00:1。
目前使用並不多!
http協議對應於應用層,tcp協議對應於傳輸層,ip協議對應於網路層。
TPC/IP【TCP(傳輸控制協議)和IP(網際協議)】,主要解決數據如何在網路中傳輸,而HTTP是應用層協議,主要解決如何包裝數據。關於TCP/IP和HTTP協議的關系,網路有一段比較容易理解的介紹:「我們在傳輸數據時,可以只使用(傳輸層)TCP/IP協議,但是那樣的話,如果沒有應用層,便無法識別數據內容,如果想要使傳輸的數據有意義,則必須使用到應用層協議,應用層協議有很多,比如HTTP、FTP、TELNET等,也可以自己定義應用層協議。WEB使用HTTP協議作應用層協議,以封裝HTTP 文本信息,然後使用TCP/IP做傳輸層協議將它發到網路上。」
術語TCP/IP代表傳輸控制協議/網際協議,指的是一系列協議。「IP」代表網際協議,TCP和UDP使用該協議從一個網路傳送數據包到另一個網路。把IP想像成一種高速公路,它允許其它協議在上面行駛並找到到其它電腦的出口。TCP和UDP是高速公路上的「卡車」,它們攜帶的貨物就是像HTTP,文件傳輸協議FTP這樣的協議等。
你應該能理解,TCP和UDP是FTP,HTTP和SMTP之類使用的傳輸層協議。雖然TCP和UDP都是用來傳輸其他協議的,它們卻有一個顯著的不同:TCP提供有保證的數據傳輸,而UDP不提供。這意味著TCP有一個特殊的機制來確保數據安全的不出錯的從一個端點傳到另一個端點,而UDP不提供任何這樣的保證。
URL的全稱是Uniform Resource Locator(統一資源定位符)
通過1個URL,能找到互聯網上唯一的1個資源。
URL就是資源的地址、位置,互聯網上的每個資源都有一個唯一的URL。
URL的基本格式 =協議://主機地址/路徑
協議:不同的協議,代表著不同的資源查找方式、資源傳輸方式
主機地址:存放資源的主機(伺服器)的IP地址(域名)
資源在主機(伺服器)中的具體位置
1、HTTP協議的幾個重要概念
1.連接(Connection):一個傳輸層的實際環流,它是建立在兩個相互通訊的應用程序之間。
2.消息(Message):HTTP通訊的基本單位,包括一個結構化的八元組序列並通過連接傳輸。
3.請求(Request):一個從客戶端到伺服器的請求信息包括應用於資源的方法、資源的標識符和協議的版本號
4.響應(Response):一個從伺服器返回的信息包括HTTP協議的版本號、請求的狀態(例如「成功」或「沒找到」)和文檔的MIME類型。
5.資源(Resource):由URI標識的網路數據對象或服務。
6.實體(Entity):數據資源或來自服務資源的回映的一種特殊表示方法,它可能被包圍在一個請求或響應信息中。一個實體包括實體頭信息和實體的本身內容。
7.客戶機(Client):一個為發送請求目的而建立連接的應用程序。
8.用戶代理(Useragent):初始化一個請求的客戶機。它們是瀏覽器、編輯器或其它用戶工具。
9.伺服器(Server):一個接受連接並對請求返回信息的應用程序。
10.源伺服器(Originserver):是一個給定資源可以在其上駐留或被創建的伺服器。
11.代理(Proxy):一個中間程序,它可以充當一個伺服器,也可以充當一個客戶機,為其它客戶機建立請求。請求是通過可能的翻譯在內部或經過傳遞到其它的伺服器中。一個代理在發送請求信息之前,必須解釋並且如果可能重寫它。
代理經常作為通過防火牆的客戶機端的門戶,代理還可以作為一個幫助應用來通過協議處理沒有被用戶代理完成的請求。
12.網關(Gateway):一個作為其它伺服器中間媒介的伺服器。與代理不同的是,網關接受請求就好象對被請求的資源來說它就是源伺服器;發出請求的客戶機並沒有意識到它在同網關打交道。
網關經常作為通過防火牆的伺服器端的門戶,網關還可以作為一個協議翻譯器以便存取那些存儲在非HTTP系統中的資源。
13.通道(Tunnel):是作為兩個連接中繼的中介程序。一旦激活,通道便被認為不屬於HTTP通訊,盡管通道可能是被一個HTTP請求初始化的。當被中繼的連接兩端關閉時,通道便消失。當一個門戶(Portal)必須存在或中介(Intermediary)不能解釋中繼的通訊時通道被經常使用。
14.緩存(Cache):反應信息的局域存儲。
TCP(Transmission Control Protocol) 傳輸控制協議。TCP是主機對主機層的傳輸控制協議,提供可靠的連接服務,採用三次握確認建立一個連接。位碼即tcp標志位,有6種 標示:SYN(synchronous建立聯機) ACK(acknowledgement 確認) PSH(push傳送) FIN(finish結束) RST(reset重置) URG(urgent緊急)Sequence number(順序號碼) Acknowledge number(確認號碼)。
手機能夠使用聯網功能是因為手機底層實現了TCP/IP協議,可以使手機終端通過無線網路建立TCP連接。TCP協議可以對上層網路提供介面,使上層網路數據的傳輸建立在「無差別」的網路之上。建立起一個TCP連接需要經過「三次握手」:
第一次握手:客戶端發送syn包(syn=j)到伺服器,並進入SYN_SEND狀態,等待伺服器確認;
第二次握手:伺服器收到syn包,必須確認客戶的SYN(ack=j+1),同時自己也發送一個SYN包(syn=k),即SYN+ACK包,此時伺服器進入SYN_RECV狀態;
第三次握手:客戶端收到伺服器的SYN+ACK包,向伺服器發送確認包ACK(ack=k+1),此包發送完畢,客戶端和伺服器進入ESTABLISHED狀態,完成三次握手。握手完成後,兩台主機開始傳輸數據了。
為什麼要三次握手?
如果只有一次握手,Client不能確定與Server的單向連接,更加不能確定Server與Client的單向連接;
如果只有兩次握手,Client確定與Server的單向連接,但是Server不能確定與Client的單向連接;
只有三次握手,Client與Server才能相互確認雙向連接,實現雙工數據傳輸。
握手過程中傳送的包里不包含數據,三次握手完畢後,客戶端與伺服器才正式開始傳送數據。理想狀態下,TCP連接一旦建立,在通信雙方中的任何一方主動關閉連接之前,TCP 連接都將被一直保持下去。斷開連接時伺服器和客戶端均可以主動發起斷開TCP連接的請求,斷開過程需要經過「四次揮手」。
第一次揮手:
Client發送一個FIN,用來關閉Client到Server的數據傳送,Client進入FIN_WAIT_1狀態。
第二次揮手:
Server收到FIN後,發送一個ACK給Client,確認序號為收到序號+1(與SYN相同,一個FIN佔用一個序號),Server進入CLOSE_WAIT狀態。
第三次揮手:
Server發送一個FIN,用來關閉Server到Client的數據傳送,Server進入LAST_ACK狀態。
第四次揮手:
Client收到FIN後,Client進入TIME_WAIT狀態,接著發送一個ACK給Server,確認序號為收到序號+1,Server進入CLOSED狀態,完成四次揮手。
為什麼要四次揮手?
「三次握手」的第二次握手發送SYN+ACK回應第一次握手的SYN,但是「四次揮手」的第二次揮手只能發送ACK回應第一次揮手的FIN,因為此時Server可能還有數據傳輸給Client,所以Server傳輸數據完成後才能發起第三次揮手發送FIN給Client,等待Client的第四次揮手ACK。
http是超文本傳輸協議,信息是明文傳輸,https 則是具有安全性的ssl加密傳輸協議。HTTPS其實是有兩部分組成:HTTP +SSL/ TLS,也就是在HTTP上又加了一層處理加密信息的模塊。採用HTTPS協議的伺服器必須要有一套數字證書,可以自己製作,也可以向組織申請。區別就是自己頒發的證書需要客戶端驗證通過,才可以繼續訪問,而使用受信任的公司申請的證書則不會彈出提示頁面(startssl就是個不錯的選擇,有1年的免費服務)。這套證書其實就是一對公鑰和私鑰。SSL介於應用層和TCP層之間。應用層數據不再直接傳遞給傳輸層,而是傳遞給SSL層,SSL層對從應用層收到的數據進行加密,並增加自己的SSL頭。
1.怎麼解決tcp拆包和黏包的問題
粘包、拆包發生原因
發生TCP粘包或拆包有很多原因,現列出常見的幾點,可能不全面,歡迎補充,
1、要發送的數據大於TCP發送緩沖區剩餘空間大小,將會發生拆包。
2、待發送數據大於MSS(最大報文長度),TCP在傳輸前將進行拆包。
3、要發送的數據小於TCP發送緩沖區的大小,TCP將多次寫入緩沖區的數據一次發送出去,將會發生粘包。
4、接收數據端的應用層沒有及時讀取接收緩沖區中的數據,將發生粘包。
等等。
粘包、拆包解決辦法
解決問題的關鍵在於如何給每個數據包添加邊界信息,常用的方法有如下幾個:
1、發送端給每個數據包添加包首部,首部中應該至少包含數據包的長度,這樣接收端在接收到數據後,通過讀取包首部的長度欄位,便知道每一個數據包的實際長度了。
2、發送端將每個數據包封裝為固定長度(不夠的可以通過補0填充),這樣接收端每次從接收緩沖區中讀取固定長度的數據就自然而然的把每個數據包拆分開來。
3、可以在數據包之間設置邊界,如添加特殊符號,這樣,接收端通過這個邊界就可以將不同的數據包拆分開。
等等。
2.upd丟包
1、接收端處理時間過長導致丟包:調用recv方法接收端收到數據後,處理數據花了一些時間,處理完後再次調用recv方法,在這二次調用間隔里,發過來的包可能丟失。對於這種情況可以修改接收端,將包接收後存入一個緩沖區,然後迅速返回繼續recv。
2、發送的包巨大丟包:雖然send方法會幫你做大包切割成小包發送的事情,但包太大也不行。例如超過50K的一個udp包,不切割直接通過send方法發送也會導致這個包丟失。這種情況需要切割成小包再逐個send。
3、發送的包較大,超過接受者緩存導致丟包:包超過mtu size數倍,幾個大的udp包可能會超過接收者的緩沖,導致丟包。這種情況可以設置socket接收緩沖。以前遇到過這種問題,我把接收緩沖設置成64K就解決了。
int nRecvBuf=32*1024;//設置為32K
setsockopt(s,SOL_SOCKET,SO_RCVBUF,(const char*)&nRecvBuf,sizeof(int));
4、發送的包頻率太快:雖然每個包的大小都小於mtu size 但是頻率太快,例如40多個mut size的包連續發送中間不sleep,也有可能導致丟包。這種情況也有時可以通過設置socket接收緩沖解決,但有時解決不了。所以在發送頻率過快的時候還是考慮sleep一下吧。
5、區域網內不丟包,公網上丟包。這個問題我也是通過切割小包並sleep發送解決的。如果流量太大,這個辦法也不靈了。總之udp丟包總是會有的,如果出現了用我的方法解決不了,還有這個幾個方法: 要麼減小流量,要麼換tcp協議傳輸,要麼做丟包重傳的工作。
一個是客戶端發送過快,網路狀況不好或者超過伺服器接收速度,就會丟包。
第二個原因是伺服器收到包後,還要進行一些處理,而這段時間客戶端發送的包沒有去收,造成丟包。
那麼需要做的是
客戶端降低發送速度,可以等待回包,或者加一些延遲。伺服器部分單獨開一個線程,去接收UDP數據,存放在一個緩沖區中,又另外的線程去處理收到的數據,盡量減少因為處理數據延時造成的丟包。
有兩種方法解決UDP 丟包的問題:
方法一:重新設計一下協議,增加接收確認超時重發。(推薦)
方法二:在接收方,將通信和處理分開,增加個應用緩沖區;如果有需要增加接收socket的系統緩沖區。(本方法不能從根本解決問題,只能改善)
https://jiahao..com/s?id=1654225744653405133&wfr=spider&for=pc
https://www.jianshu.com/p/066d99da7cbd
https://jiahao..com/s?id=1654225744653405133&wfr=spider&for=pc
https://blog.csdn.net/qq_31337311/article/details/80781273
https://www.cnblogs.com/jiangzhaowei/p/8996810.html
http://blog.sina.com.cn/s/blog_d2bb5eff0102wbq2.html
❷ internet上許多復雜網路和不同類型計算機之間能夠互相通信的基礎是什麼
許多不同的復雜網路和許多不同類型的計算機賴以互相通信的基礎只有TCP/IP協議。OSI/RM只是參考模型,沒有真正的應用到網路中。所以異構網要通信,必須要安裝TCP/IP協議。
如果是填空題,填TCP/IP協議。
TCP/IP提供點對點的鏈接機制,將數據應該如何封裝、定址、傳輸、路由以及在目的地如何接收,都加以標准化。它將軟體通信過程抽象化為四個抽象層,採取協議堆棧的方式,分別實現出不同通信協議。協議族下的各種協議,依其功能不同,被分別歸屬到這四個層次結構之中。
(2)網路中如何能直接通信擴展閱讀:
在對等進程利用協議進行通信時,實際上並不是直接將數據從一台機器的第N層傳送到另一台機器的第N層,而是每一層都把數據連同該層的控制信息打包交給它的下一層,它的下一層把這些內容看做數據,再加上它這一層的控制信息一起交給更下一層,依此類推,直到最下層。
最下層是物理介質,它進行實際的通信。相鄰層之間有介面,介面定義下層向上層提供的原語操作和服務。相鄰層之間要交換信息,對等介面必須有一致同意的規則。層和協議的集合被稱為網路體系結構。
TCP/IP協議不依賴於任何特定的計算機硬體或操作系統,提供開放的協議標准,即使不考慮Internet,TCP/IP協議也獲得了廣泛的支持。所以TCP/IP協議成為一種聯合各種硬體和軟體的實用系統。
TCP/IP協議並不依賴於特定的網路傳輸硬體,所以TCP/IP協議能夠集成各種各樣的網路。用戶能夠使用乙太網、令牌環網、撥號線路、X.25網以及所有的網路傳輸硬體。
❸ 請問怎樣實現區域網之間的通信
1:HUB中採用CSMA/CD技術
任何一太主機發數據之前要沖突檢測,有沖突不發包,無沖突,則發包,各個主機都能接受到該數據,然後拆分得到物理地址再進行比對,是不是跟自己的物理地址相匹配,是就收下,否則丟棄
2:switch(交換機)中採用 存儲轉發機制
根據MAC地址和對應埠表轉發,如果表中有對應目的地的MAC則不用廣播直接,通過交換機轉發不用廣播
❹ 計算機網路從 IP 到 IP 的通信是怎麼完成的
開發離不開計算機網路,計算機網路很重要,但不是所有的網路知識對軟體開發都是有用的。
我們知道,網路是分層的,OSI 體系中分了 7 層,但實際上使用的 TCP/IP 體系中分了 4 層,學習的時候為了方便,我們還是把物理層、數據鏈路層分開學的,所以是 5 層。
開發時我們會用 IP、TCP、HTTP 等協議來完成計算機之間的通信,網頁運行時還會涉及到 DNS 等協議,這些協議都是在網路層之上的,也就是基於 IP 到 IP 的傳輸來完成各種協議的數據通信。
那之下的部分呢?IP 到 IP 的通信是如何實現的?
這就涉及到物理層、數據鏈路層還有網路層的知識了,這些知識對實際的開發沒啥用,因為代碼里已經默認了 IP 和 IP 之間是可以通信的,但是了解這些可以讓我們對網路有一個全面的理解。這部分涉及到網路硬體、涉及到通信原理,還是挺有意思的。
這篇文章就淺談下 IP 和 IP 之間的通信的知識。
把不同的計算機連接起來,可以做數據通信,可以共享軟體、硬體,這就叫做計算機網路。
這種連接方式有很多種,自然也就有不同的網路。比如撥號上網,是利用電話通信的網路來傳輸數據的,就像打電話一樣,所以叫撥號,只不過傳輸的數據不是通話數據。比如衛星上網,是利用衛星信號來傳輸數據,這也是一種網路。
這兩種都是用的現有的網路來實現計算機通信。而我們自己組建的網路都是用網線連接的,這種是最常見的網路。
比如這樣:
這種通過一根線把所有的計算機連接起來的網路連接方式叫做乙太網。
在講乙太網之前,不知道大家是否已經感受到了網路分層的好處:
不管是利用電信網路的撥號上網,還是利用衛星通信的衛星上網,或者是用網線連接起來的乙太網,這些不同結構的網路都能很自然的融合在一起,就是因為做了很好的分層,只要實現了 IP 協議,那麼不管網路是怎麼實現的,都能實現更上層協議的通信。
這就像軟體開發領域的面向介面編程的思想,只要你能實現 IP 到 IP 的通信,不管你是怎麼傳輸的數據,都可以。
多台計算機已經用網線連接起來了,那怎麼通信呢?
直接通過這條網線傳遞數據就行,只不過現在是一個發其餘的都能接收到,要讓目標計算機能接收,那就得標識下目的地址是啥,所以乙太網的數據幀格式是這樣的:
除了數據外,額外加上了目的地址、原地址等信息。
這樣每台計算機接收到網路傳過來的數據之後,判斷下是否目的地址是自己,是就接收,否則丟棄。這樣就實現了網路通信。
這就是一個網路了?就這么簡單?
這確實是一個小型網路,但還不完善。如果多台計算機同時發消息怎麼辦,數據不就混在一塊了?
所以要做是否沖突的檢測,現在乙太網用的方式是這樣:想要通過網路發消息時,先檢測下網路中有沒有電信號,沒有的話就發,有的話就等待 1.x 秒,x 是隨機的,如果到了時間還有沖突,那就等待 2.x 秒、4.x 秒、8.x 秒,通過這樣的方式來避免沖突,實現准確的通信,這叫做「指數退避」。
這樣確實不會沖突了,但是還有問題,如果計算機連了很多,雖然能准確的通信,但時不時就沖突的話效率也太低了。
能不能減少沖突呢?
連在一起的乙太網的計算機因為是廣播通信的,所以可能可能沖突,這叫做一個「沖突域」。如果能把大的沖突域給拆小,那不就能減少沖突的概率了?
這就是交換機做的事情了:
幾台電腦之間加一個交換機來隔開,這樣傳輸消息的時候,如果是同一個小網段內的通信,會直接傳給目標計算機,不會傳到其他網段里去,本網段沒有該 mac 地址的時候才傳到其他網段,這樣就 把大的網路分成了一個個小的網段,減少了沖突的概率,提高了網路傳輸效率,這就是交換機的意義。
這樣,我們就組建了一個乙太網。
現在一個個的網路都是分散的,不管是乙太網,還是用電信網路連接的網路,或者是衛星連接的網路,那自然有需求把這些分散的網路給連接起來,這就是互聯網,也就是把網路連接起來的網路。
互聯網也有很多,比如軍隊的各種網路會建立一個互聯網,教育的各種網路會建立互聯網,互聯網和互聯網之間還可以連接,最大的互聯網就是網際網路 internet,大到全世界的很多網路都會連入的那種。但也有的互聯網是不接入 internet 的,比如軍用的互聯網。
那這些網路之間是怎麼標識和連接的呢?
標識網路自然就需要編號,並且網路內的主機也需要編號,也就是需要指定網路號 + 主機號,這就是 IP 地址。
IP 地址最開始是 32 位的,叫做 IPv4(後來擴充成了 128 位的,叫做 IPv6)。
比如這樣就是一個 IPv4 的地址:
為了好記,我們把它分為了四段,每段 8 位,就成了這樣:
210.73.140.2
這分為 4 段的 32 位地址里有網路號也有主機號。如果把第一段當作網路號,那剩下的三段就是主機號,可以標識 1600 多萬台計算機,如果把前兩段當作網路號,那可以標識 6 萬多台計算機,如果把前三段當作網路號,那隻有最後一段用於標識主機,可以標識 254 台計算機。這樣就分為了 ABC 三類網路。
講完了 IP 地址,再回來講最大的互聯網 internet。
internet 是連接全球很多網路的互聯網,那自然有個主幹網,然後下面接入各個國家的網路。每個國家都有專門的接入 internet 的網路提供商(ISP internet service provider),比如中國有聯通、移動、鐵通等 ISP,由他們接入 internet,我們再接入他們的網路。
那網路之間是怎麼連接的呢?
就是通過路由器, 路由器連接多個網路,負責根據 IP 地址選擇把數據傳到某個網路 。
很多同學分不清路由器和交換機的區別,其實很好區分:交換機是網路內部隔離沖突域、提高網路效率用的,根據 mac 地址轉發消息。路由器是負責在不同的網路之間轉發數據,根據 IP 地址確定網路和主機然後轉發。
IP 地址里記錄了網路號和主機號,所以根據網路號就能確定是哪個網路,那怎麼根據主機號確定哪台主機呢?
在這個網路里廣播一次不就行了?把 IP 地址傳遞給網路的每一台主機,如果是自己的,那就返回自己的 mac 地址,這樣路由器就知道該把消息傳給誰了。這種從 IP 到 mac 地址的查詢過程叫做 ARP(Address Resolution Protocol 地址解析)協議。
至此,我們就完成了從 IP 到 IP 的通信,再上面的協議我們就比較熟了,也就是 TCP、HTTP 這些,這些是我們軟體開發整天用的協議。
計算機網路是分層的,OSI 體系結構分了 7 層,實際用的 TCP/IP 體系結構分了 4 層,為了學習方便我們還是作為 5 層來看。
分層的好處就是每一層都可以靈活的替換實現方案,比如只要你實現了 IP 到 IP 的通信,不管你是衛星連接的網路、電信連接的網路還是乙太網,都可以,對上層的各種協議沒影響。
衛星、電話網路等都是已有的網路,我們自己組建的網路一般都是按照乙太網的方式,也就是一根網線連接所有計算機的方式,叫做匯流排式。
乙太網內是廣播通信的,為了避免沖突,會通過指數退避的方式來發消息,但這會降低傳輸效率,所以引入了交換機來隔離沖突域,也就把網路分成了不同的網段,交換機遇到同一網段的通信是不會傳遞到其他網段的,這樣就減少了沖突的概率。
網路和網路之間連接起來就叫做互聯網,互聯網有很多種,全球最大的互聯網是 internet,但也不是所有的互聯網都在 internet 里,比如軍用互聯網就不會連入 internet。
internet 有主幹網來連接各個國家和地區的網路,每個國家都有負責接入 internet 的互聯網服務提供商 ISP,比如中國的聯通、移動、鐵通等運營商。
網路的標識是通過 IP,也就是網路號 + 主機號構成,然後由路由器負責通過 IP 來做網路之間的數據轉發。
路由器實現轉發要先根據 IP 種的主機號來查出 mac 地址,對應的查詢協議叫做 ARP 協議,也是通過廣播的方式實現的。
這樣就實現了 internet 上任意兩台主機的 IP 到 IP 的通信。
我們平時軟體開發時用的 IP、TCP、HTTP、DNS 等協議,都是在這些基礎之上實現的。網路層之下的知識,確實對我們開發沒啥幫助,但了解下還是挺有意思的。
❺ 計算機是如何進行網路通信的
網路通信的實現
在發送端(即一個發送終端,其實也是一台計算機)首先要把傳送的信息(如話音,圖像)變成電信號,然後調制到激光器發出的激光束上,使光的強度隨電信號的幅度(頻率)變化而變化;轉換成數字信號(數字信號:二位制010101010),然後通過調制送入光纖,並通過光纖發送出去到接收端(另一台計算機),先解調,然後DA轉換,最後信號放大在接收端,檢測器收到光信號後把它變換成電信號,經解調後恢復原信息。其傳導送度解決了多信號數字傳輸在一根細光纖下完成。
光速傳輸,其傳輸容量非常之大,是金屬導體無法相比的,在光纖的兩端分別都裝有「光貓」進行信號轉換。 其特點是傳輸容量大,傳輸質量好,損耗小,互不幹擾,中繼距離長等。光纖傳輸使用的是波分復用,即是把小區里的多個用戶的數據分別調製成不同波長的光信號在一根光纖里傳輸。
我們看到的接到電腦上的細銅線是接收端變為電信號後的末端介面傳輸,已經不是光纖部分了。
我們常聽說到「伺服器」,伺服器是一個能夠存儲大量信息的中轉裝置,其實也是一台功能強大的計算機,(區域網用小型伺服器和我們台式機的主機箱外觀它基本一樣,是通過路由器分線接入的)。把連接到上面的計算機所發送到出的信號(文本、音訊、圖像等)按照一定的地址存儲起來,當某個計算機要找某個內容的文件時,識別系統(瀏覽器)就可以根據關鍵詞找到地址並鏈接打開。所有客戶終端都要經過伺服器來調取和存入信息,並由伺服器歸類分裝分發。
計算機處理的信號都是數字,即 0 和 1 .舉個簡單的例子 漢字「網」在計算機里只是一組數字假如是:1000110010100110.這樣一組代碼,當你用鍵盤輸入「網」字時,計算機是按照一組數字處理並傳送的,另一台計算機收到這組數字後,經轉換顯示還原為「網」(人可以識別的記號)就可以通訊了。其它如音訊、圖像也是一樣的。另外一些發達國家已經開通數字電視的傳送,由於數字不受干擾,傳送信息不會丟失,電視圖像逼真。
❻ 能夠訪問互聯網的任意兩台主機之間能否直接通信為什麼
1 能夠訪問互聯網的任意兩台主機之間不一定能夠直接通信的
2 假如兩台能夠訪問互聯網的主機,在一個區域網下,也不一定能夠直接通信,因為交換機埠之間可能有埠隔離,vlan,訪問策略等屏蔽,因此這兩個不一定能夠直接通信
3 假如兩台能夠直接訪問互聯網的主機,在不同的區域網里,也不一定能夠直接通信,因為兩台主機之間可能有防火牆策略,防火牆策略決定了他們不一定能夠直接通信
4 假如兩台能夠直接訪問互聯網的主機,在不同的區域網里,在防火牆策略允許他們通信,並且彼此之間有VPN,專用通信軟體的等連接,這個是可以直接通信的
5 您學廢了嗎
❼ 網路通信的方式有那些
1、NETBEUI
NETBEUI為IBM開發的非路由協議,用於攜帶NETBIOS通信。
2、IPX/SPX
IPX為NOVELL用於NETWARE客戶端/伺服器的協議群組,避免了NETBEUI的弱點。但是,帶來了新的不同弱點。
IPX具有完全的路由能力,可用於大型企業網。它包括32位網路地址,在單個環境中允許有許多路由網路。
3、TCP/IP
每種網路協議都有自己的優點,但是只有TCP/IP允許與Internet完全的連接。TCP/IP為在60年代由麻省理工學院和一些商業組織為美國國防部開發的,即便遭到核攻擊而破壞了大部分網路,TCP/IP仍然能夠維持有效的通信。
4、RS-232-C
RS-232-C為OSI基本參考模型物理層部分的規格,它決定了連接器形狀等物理特性、以0和1表示的電氣特性及表示信號意義的邏輯特性。
5、RS-449
RS-449為1977年由EIA發表的標准,它規定了DTE和DCE之間的機械特性和電氣特性。RS-449是想取代RS-232-C而開發的標准,但是幾乎所有的數據通信設備廠家仍然採用原來的標准,所以RS-232-C仍然是最受歡迎的介面而被廣泛採用。
6、HDLC(高級數據鏈路控制規程)
HDLC為可靠性高,高速傳輸的控制規程。
7、SDLC(同步數據鏈路控制)
IBM公司制定的協議,並成為SNA的數據鏈路控制層協議。實際上也包含於HDLC中。
8、FDDI(光纖分布式數據介面)
FDDI的傳輸速度為100Mbps,傳輸媒體為光纖,是令牌控制的LAN。
9、SNMP(簡單網路管理協議)
TCP/IP協議集中的網路管理協議。
(7)網路中如何能直接通信擴展閱讀
根據網路條件選擇:如網路存在多個網段或要通過路由器相連時,就不能使用不具備路由和跨網段操作功能的NetBEUI協議,而必須選擇IPX/SPX或TCP/IP等協議。
盡量減少協議種類:一個網路中盡量只選擇一種通信協議,協議越多,佔用計算機的內存資源就越多,影響了計算機的運行速度,不利於網路的管理。
注意協議的版本:每個協議都有其發展和完善的過程,因而出現了不同的版本,每個版本的協議都有它最為合適的網路環境。在滿足網路功能要求的前提下,應盡量選擇高版本的通信協議。
協議的一致性:如果要讓兩台實現互聯的計算機間進行對話,它們使用的通信協議必須相同。否則,中間需要一個「翻譯」進行不同協議的轉換,不僅影響了網路通信速率,同時也不利於網路的安全、穩定運行。
❽ 兩台計算機直接網線相連可以通信嗎如何做
雙機互聯一般有以下幾種方法:
l 通過電纜線,利用串口或者並口實現雙機互聯。
l 利用兩塊網卡和雙絞線實現雙機互聯。
l 利用USB口和特殊的USB連接線實現雙機互聯。
l 利用紅外實現雙機互聯。
l 利用雙Modem實現遠程雙機互聯。
l 利用1394線實現雙機互聯。
l 無線雙機互聯。
直接電纜連接優缺點:
這種方式最大的優點是簡單易行、成本低廉,無需購買新設備,只需花幾元錢購買一段電纜就夠了,最大限度地節約了投資。但是「直接電纜連接」由於電纜的長度有限,所以雙機的距離不能太遠,一般只能放置同一房間內;其次,兩台計算機互相訪問時需要頻繁地重新設置主客機,非常麻煩;第三,計算機間的連接速率較慢,只適用於普通的文件傳輸,或簡單的連機游戲。
利用串口(並口)電纜進行雙機互聯:
首先,准備連接電纜, 需串口線或並口線一根。電纜可以自己製作,其中9針對9針的串口線最簡單,只需3根連線,採用2-3、3-2、5-5的方法焊接即可;9針對25針的串口線採用2-3、3-2、5-7的方法焊接;25針對25針的串口線採用2-3、3-2、7-7的方法焊接。並口線則需11根線相連,它在電腦配件市場比較常見,花費不足10元,也可自行製作。按照2-15、3-13、4-12、5-10、6-11、10-5、11-6、12-4、13-3、15-2、25-25的方法焊接即可。做好線後,將兩機連接起來,可採取並口對並口,或串口對串口兩種方式連接。並口連接速度較快,但兩機距離不能超過5米;串口連接速度較慢,但電纜製作簡單,兩機距離可達10米。考慮到聯機速度的需要,機器又處於同一辦公室,宜盡量採用並口電纜連接。
現在開始軟體的安裝和配置。首先,安裝直接電纜連接。在兩台機器上分別打開「控制面板→添加/刪除程序→Windows安裝程序」選項,選擇「通信」中的「直接電纜連接」項。完成後在「開始」菜單的「附件」中會增加「直接電纜連接」的程序項。
其次進行網路參數設置。兩機分別運行「直接電纜連接」程序,將性能更好的一台機器設為主機,選擇【偵聽】按鈕,另一台設為客戶機,選擇【連接】按鈕。此時,兩台計算機都應將NetBEUI、IPX/SPX、TCP/IP協議全部安裝,此外還需添加「Windows網路客戶」和「文件與列印機共享」項。經過驗證、登錄過程(為簡化操作,可不設口令),即可順利實現雙機互聯。聯機成功以後,可將該程序最小化,使其後台運行。在客戶機的「查看主機」操作框里,可看到主機的所有共享資源。還可通過「映射」操作,將主機的共享目錄設為本機的目錄,這樣可在「我的電腦」或「資源管理器」中像訪問本機資源一樣方便地訪問主機。另外在客戶機的「網上鄰居」里,可看到和訪問主機。由於「直接電纜連接」具有「單向性」,所以從主機的「網上鄰居」是不能看到客戶機的,也不能對客戶機進行讀寫操作。需要時,可交換主機和客戶機的設置。
利用網卡加雙絞線實現雙機互聯的特點:
這是目前用得比較多的一種雙機互聯的方法,這種方法和其他互聯方式相比,具有這樣一些特點:
首先,可以真正實現雙機互聯,這種方法實現的互聯可以實現區域網能實現的功能,而不僅僅是互相傳遞文件,在使用上,也和一個區域網的操作一樣,可以很快上手,方便了用戶;其次,速度比較快,比起使用電纜或者Modem實現的雙機互聯,這種方式數據傳遞的速度要快得多;再者,從投資上說,採用這種方式的投資比較大,但是考慮到今後的擴展,這些投資是可以保留的,比如擴大到一個小型區域網的時候,網卡仍然是必要的;從設置上說,這種方式比較麻煩,不如直接電纜連接簡單,對於熟悉區域網的用戶而言,由於設置和區域網的設置相同,因此也不會有多大的困難
利用網卡加雙絞線實現雙機互聯:
首先將網卡插入計算機中適當的插槽中,並用螺絲將其充分固定,然後將一根雙絞線的兩個RJ-45頭分別插入兩個計算機的網卡介面,使兩台計算機直接連接起來,中間不使用任何集線設備。此時,所需要的所有配件為:兩塊網卡、兩個RJ45頭、一段網線,以100Mbps網卡計算,總投資也不過百元左右,而連接速率最高卻可達100Mb/s。有兩點需特別注意:其一,用雙絞線連接時,兩機所配的網卡必須帶有RJ-45口;其二,直接電纜雙機互聯的雙絞線製作方法不同於普通接線製作方法,即要進行錯線,應該按照一端為白橙1、橙2、白綠3、藍4、白藍5、綠6、白棕7、棕8,另一端為白綠3、綠6、白橙1、藍4、白藍5、橙2、白棕7、棕8的原則做線。
硬體連接好了,現在開始安裝軟體。在每台機器上將各自的網卡驅動程序安裝好。然後安裝通信協議,在Windows操作系統中一般提供了NetBEUI、TCP/IP、IPX/SPX兼容協議等3種通信協議,這3種通信協議分別適用於不同的應用環境。一般情況下,區域網只需安裝NetBEUI協議即可,如需要運行聯網游戲,則一般要安裝IPX/SPX兼容協議;如要實現雙機共享Modem上網的功能,需要安裝TCP/IP協議。接下來分別輸入每台計算機的計算機名和工作組名,注意兩台機器的計算機名應該用不同名字來標識,而工作組名必須是相同的。重新啟動計算機,設置共享資源,這樣就可以實現兩機之間的通信和資源共享了。
利用USB實現雙機互聯的特點:
使用USB線雙機互聯是最新的雙機互聯方法,它藉助於專用的USB線通過兩台計算機的USB口連接後再實現數據交換,不僅傳輸速率大大超越傳統的串口/並口(最高可達6Mb/s,一般情況下也可超過4Mb/s),而且實現真正的即插即用。
它具有以下的特點:
(1)可提供高達6Mbps的傳輸速率。USB文件傳輸連接電纜可提供的傳輸速率比並口快500%,比串口快700%。
(2)能夠檢測到遠程的PC,可以分別在兩個窗口方便地剪切、拷貝、粘貼或拖拉文件。也可以把遠程的文件在本地電腦的列印機進行列印。
(3)具有熱插拔功能和遠程喚醒功能,傳輸的長度為2~4.5米。
(4)系統要求低。Pentium 100MHz或更高,一個USB埠,支持Windows 95、OSR2.1、Windows 98、Windows 2000或Windows XP操作系統。
使用USB線實現雙機互聯:
只需要購買一根專用的USB聯機線即可,由於USB可以熱插拔,因此使用非常簡單方便。在插上線以後,需要安裝相應的應用程序才能實現功能,安裝完成以後可以進行共享光碟機、列印文件、運行程序等操作,和一般的雙機互聯不同的是,每一台機器都擁有對另一台機器的完全操作權利,而不管是否設置了共享。
利用紅外線實現雙機文件傳輸功能:
用紅外線口也可以將兩台電腦連接起來。紅外線聯機其實仍屬於電纜連接的范疇,只不過省去了用於直接電纜連接的串列或並行電纜線。一般筆記本電腦都有紅外口,台式電腦也可以用於紅外線通信,但是需要另配一個紅外線適配器。有了紅外適配器,台式電腦可擁有與筆記本電腦一樣的紅外線通信功能。
首先必須正確安裝台式電腦和筆記本電腦的紅外線驅動程序。在Windows 98系統里紅外線設備是即插即用設備,一般在BIOS里開啟紅外線功能後系統即可自動完成紅外線驅動程序和紅外線應用程序的安裝。如不能自動安裝,請查看紅外線適配器的使用說明書或Windows 98系統的相關幫助文件。安裝完成後,在任務欄用滑鼠左鍵雙擊「紅外線通信」圖標打開「紅外線監視器」程序,通過更改設置將其激活,使之處於搜索其他紅外線設備的狀態。
分別打開兩台電腦的「紅外線監視器」窗口,將台式電腦的紅外線適配器對准筆記本電腦的紅外線口,兩個「紅外線監視器」都會很快做出反應,並報告在有效區域內發現了對方,並列出通信對方的名稱。這表明連接已經建立,可以進行數據傳輸了。Windows 98系統自帶了一個紅外數據傳輸應用程序,名為「紅外線傳輸」,用戶可以通過用滑鼠左鍵雙擊「我的電腦」中的「紅外線接收者」將其打開。利用這個程序可以進行常規的數據傳輸,單擊【發送文件】按鈕將文件發送出去,單擊【已收到的文件】按鈕來查看對方發過來的東西,簡單易用,十分方便。上述的方法已經可以滿足基本的數據互傳需要,但是它只能發送數據或者被動地接收數據,而不能去主動地去尋找並獲取自己想要的東西,因此還有一定的局限性。
❾ 計算機網路是怎樣通信
你問的很籠統,簡單來講,計算機通訊需要協議,協議種類很多,現在我們經常使用的是TCP/IP協議,連接網路時,動態ip用戶,計算機會向DHCP伺服器發出請求,分配ip,ip就像我們的門牌號,通訊數據被按照協議格式打包,就像郵遞員送郵件,給各個ip地址送去,同時各個ip地址的用戶也向伺服器發送數據包,數據包到達後,會按照格式解包,還原成數據信息,這就完成了雙向通訊。