早期的計算機通信需要有一個中間件,A要給B傳東西,A必須要把信息傳給中間件,B再把從中間件中拿到信息
由于不同機器之間需要通信就產生了網(wǎng)絡
軟件開發(fā)的架構
1.C/S架構
服務器-客戶機,即Client-Server架構,C/S架構通常采取兩層結構.Sever負責數(shù)據(jù)的管理,Client負責完成與用戶的交互任務
這里來說Client主要是某個應用軟件的exe文件,程序要在安裝后,才能運行在用戶電腦上。
例如:QQ、微信、網(wǎng)易云音樂等
2.B/S架構
瀏覽器端-服務器,即Browser-Sever,B/S架構是WEB興起后的一種網(wǎng)絡架構模式,WEB瀏覽器是客戶端最主要的應用軟件.這種模式統(tǒng)一了客戶端,將系統(tǒng)功能實現(xiàn)的核心部分集中到服務器上,簡化了系統(tǒng)的開發(fā)、維護和使用.客戶機上只要安裝一個Browser,服務器安裝Oracle、SQL Sever等數(shù)據(jù)庫.瀏覽器通過Web Sever同數(shù)據(jù)庫進行數(shù)據(jù)交互,這樣就大大簡化了客戶端電腦載荷,減輕了系統(tǒng)維護與升級的成本和工作量,降低了用戶的總體成本(TCO)。
例如:百度、知乎、豆瓣、博客園等
3.B/S架構和C/S架構之間的關系
B/S架構是C/S架構的一種?
?
計算機網(wǎng)絡的發(fā)展及基礎網(wǎng)絡概念
早期:聯(lián)機
想要實現(xiàn)通信就必須要網(wǎng)卡和網(wǎng)線,每個網(wǎng)卡上都有一個全球唯一的MAC地址
MAC地址 :英文名為Media Access Control Address,即媒體存取控制位址,也稱為局域網(wǎng)地址(LAN Adress),MAC位址,以太網(wǎng)網(wǎng)址(Ethenet Address)或物理地址(Physical Address),它是用來確認網(wǎng)絡設備位置的地址。
MAC地址的長度為48位(6個字節(jié)),通常表示12個16進制數(shù),如:00-16-EA-AE-3C-40就是一個MAC地址,其中前6位十六進制數(shù)00-16-EA代表網(wǎng)絡硬件制造商的編號,后6位十六進制數(shù)AE-3C-40代表該制造商所制造的某個網(wǎng)絡產品的系列號。每個MAC地址都如身份證號一樣具有唯一性。
IP地址 :Internet Protocol,全稱互聯(lián)網(wǎng)協(xié)議地址,常見分為IPv4和IPv6。IP地址是IP協(xié)議提供的一種統(tǒng)一的地址格式,它為互聯(lián)網(wǎng)的每一個網(wǎng)絡和每一臺主機分配一個邏輯地址,以此來屏蔽物理地址的差異。它是一臺機器在一個網(wǎng)絡內的唯一標識。
IP地址的表示范圍:0.0.0.0-255.255.255.255(四個點分十進制表示)
通常我們使用的都是IPv4的地址,如果使用IPv6的表示方式: 0.0.0.0.0.0-255.255.255.255.255.255
?
以太網(wǎng):局域網(wǎng)和交換機
交換機的出現(xiàn)解決了多臺電腦之間的通信問題,網(wǎng)絡拓撲就是將各個機器都通過網(wǎng)線連到交換機
廣播:比如服務器4想找到服務器1,那么它就會通過向交換機讓它告訴所有的服務器我要找服務器1,然后只有服務器1會回復我收到了信息
ARP協(xié)議 :Address Resolution Protocol,即地址解析協(xié)議, 它是根據(jù)IP地址去獲取物理地址(MAC地址)的一個TCP/IP協(xié)議 。主機發(fā)送消息時將包含目標IP地址的ARP請求廣播到局域網(wǎng)網(wǎng)絡上的所有主機,并接收返回消息,以此確定目標的物理地址;收到返回消息后將該IP地址和物理地址存入本機ARP緩存中并保留一定時間,下次請求時直接查詢ARP緩存以節(jié)約資源
簡單來說就是:A機器要找B機器,A機器把請求發(fā)給交換機,然后再由交換機把這個請求廣播出去,告訴所有機器我現(xiàn)在要找這個機器,所有的機器都會收到這一條消息,但是他們會先看要找這個IP地址是不是和我相同,不是的話就會把這個數(shù)據(jù)包給丟掉,如果IP地址和我要找的這個機器的IP地址相同,那么這臺機器就會把自己的MAC地址交給交換機,然后再由交換機再把信息單播給A機器。
廣域網(wǎng)與路由器
路由器 : Router,連接兩個或多個網(wǎng)絡的硬件設備,在網(wǎng)絡間起網(wǎng)關的作用,是讀取每一個數(shù)據(jù)包中的地址然后決定如何傳送的專用智能性網(wǎng)絡設備。
網(wǎng)關
:Gateway,即網(wǎng)間連接器、協(xié)議轉換器。網(wǎng)關在網(wǎng)絡層以上實現(xiàn)網(wǎng)絡互聯(lián),是最復雜的網(wǎng)絡互聯(lián)設備,僅用兩個高層協(xié)議不同的網(wǎng)絡互聯(lián)。網(wǎng)關既可以用于廣域網(wǎng)互連,也可以用于局域網(wǎng)互連。網(wǎng)關是一種充當轉換重任的計算機系統(tǒng)或設備。使用在不同的通信協(xié)議、數(shù)據(jù)格式或語言,甚至體系結構完全不同的兩種系統(tǒng)之間,網(wǎng)關是一個翻譯器。
網(wǎng)關IP:局域網(wǎng)內的機器訪問公網(wǎng)IP,就通過網(wǎng)關訪問
局域網(wǎng) :Local Area Network,局域網(wǎng)的覆蓋范圍一般是方圓幾千里之內,其具備的安裝便捷、成本節(jié)約、擴展方便等特點使其在各個辦公室內運用廣泛。局域網(wǎng)可以實現(xiàn)文件管理、應用軟件共享、打印機共享等功能,在使用過程當中,通過維護局域網(wǎng)網(wǎng)絡安全,能夠有效地保護資料安全,保證局域網(wǎng)網(wǎng)絡能夠正常穩(wěn)定的運行。
子網(wǎng)掩碼 :Subnet mask,即網(wǎng)絡掩碼、地址掩碼、子網(wǎng)絡遮罩,它是一種用來指明一個IP地址的哪些位標識的是主機所在的子網(wǎng),以及哪些位標識的是主機的位掩碼。子網(wǎng)掩碼不能單獨存在,它必須結合IP地址一起使用。子網(wǎng)掩碼只有一個作用,就是將某個IP地址劃分成網(wǎng)絡地址和主機地址兩部分。
子網(wǎng)掩碼是一個32位地址,用于屏蔽IP地址的一部分以區(qū)別網(wǎng)絡標識和主機標識,并說明該IP地址是在局域網(wǎng)上,還是在廣域網(wǎng)上。
IP地址和子網(wǎng)掩碼做按位與運算,得到的結果是網(wǎng)段
那如何判斷兩臺機器它們是在同一個網(wǎng)段呢?
IP1:192.168.43.2
IP2:192.168.43.1
IP3:192.168.45.20
子網(wǎng)掩碼:255.255.255.0
我們需要看子網(wǎng)掩碼和IP地址,再將它們按位AND
IP1:? ?192.168. 43.2 = 11000000.10101000.00101011.00000010
子網(wǎng)掩碼:255.255.255.0 = 11111111.11111111.11111111.00000000
按位AND運算結果: 11000000.10101000.00101011.00000000 ->192.168.43.0
?
IP2:? ?192.168. 43.1 = 11000000.10101000.00101011.00000001
子網(wǎng)掩碼:255.255.255.0 = 11111111.11111111.11111111.00000000
按位AND運算結果: 11000000.10101000.00101011.00000001 ->192.168.43.0
?
IP3: 192.168.45.20 = 11000000.10101000.00101101.00010100
子網(wǎng)掩碼:255.255.255.0 = 11111111.11111111.11111111.00000000
按位AND運算結果: 11000000.10101000.00101101.00000000 ->192.168.45.0
結果只看前三位十進制數(shù),最后一位數(shù)不同沒關系,所以IP1和IP2在同一網(wǎng)段,IP3和其他不屬于同一個網(wǎng)段
IP協(xié)議的主要作用有兩個,一個是為每臺計算機分配IP地址,另一個是確定哪些地址在同一個自網(wǎng)絡。
TCP協(xié)議和UDP協(xié)議
端口
:Port,可以認為是設備與外界通訊交流的出口。端口可以分為虛擬端口和物理端口,其中虛擬端口指計算機內部或交換機路由器的端口,不可見,例如計算機中的80端口、21端口等。物理端口又稱為接口,是可見端口,例如計算機背板的RJ45網(wǎng)口,交換機路由器集線器等RJ45端口,電話使用RJ11端口也屬于物理端口的范疇。
通過端口來找到程序
在計算機上每一個需要網(wǎng)絡的程序都會開一個端口,在同一時間只會有一個程序占用一個端口,不可能在同一時間有兩個程序占用一個端口
端口的范圍:0-65535(2^16-1),一般使用8000以后的端口
總結:如果有IP那么我就能確認唯一一臺機器、如果有端口那么我就能確認唯一一個程序、如果我有IP和端口那么我就能找到唯一一臺機器上的唯一一個程序
內網(wǎng)IP地址:127.0.0.1(本地的回環(huán)地址),它不能提供對外服務
TCP協(xié)議
Transmisssion Control Protocol,即傳輸控制協(xié)議,是一種面向連接的、可靠的、基于字節(jié)流的傳輸層通信協(xié)議。
當應用程序希望通過TCP與另一個應用程序通信時,它會發(fā)送一個通信請求。這個請求必須被送到一個確切的地址。在雙方"握手"之后,TCP將在兩個應用程序之間建立一個全雙工(full-duplex)的通信。 這個全雙工的通信將占用兩個計算機之間的通信線路,直到它被一方或雙方關閉為止。
SYN :Synchronize Sequence Numbers,是TCP/IP建立連接時使用的握手信號。在客戶機和服務機之間建立正常的TCP網(wǎng)絡連接時,客戶機首先發(fā)出一個SYN消息,服務器使用 SYN+ACN應答表示接收到了這個消息,最后客戶機再以ACK消息回應。這樣在客戶機和服務機之間才能建立起可靠的TCP協(xié)議,數(shù)據(jù)才可以在客戶機和服務機之間傳遞。
ACK :Acknowledge character,即確認字符,在數(shù)據(jù)通信中,接收站發(fā)給發(fā)送站的一種傳輸類控制符,表示發(fā)來的數(shù)據(jù)無誤。在TCP/IP協(xié)議中,如果對方成功的接收到數(shù)據(jù),那么會回復一個ACK數(shù)據(jù)。通常ACK有自己固定的格式,長度大小,由接收方回復給發(fā)射方。
三次握手過程
第一次握手:建立連接時,客戶端發(fā)送syn包(syn = j)到服務器,并進入SYN_SENT狀態(tài),等待服務器確認
第二次握手:服務器收到syn包,必須確認客戶的syn(ack = j + 1),同時自己也發(fā)送一個syn(seq = k),即syn + ack包,此時服務器進入SYN_RECV
第三次握手:客戶端收到服務器的syn + ack包,向服務器發(fā)送確認包ack(ack = k +1),此包發(fā)送完畢,客戶端和服務器進入ESTABLISHED(TCP連接成功)狀態(tài),完成三次握手
完成三次握手,客戶端與服務端開始傳送數(shù)據(jù)
由于TCP連接時全雙工的,因此,每個方向都必須要單獨進行關閉,這一原則是當一方完成數(shù)據(jù)發(fā)送任務后,發(fā)送一個FIN來終止這一方向的連接,收到一個FIN只是意味著這一方向上沒有數(shù)據(jù)流動了,即不會再收到數(shù)據(jù)了,但是在這個TCP連接上仍然能夠發(fā)送數(shù)據(jù),直到這一方向也發(fā)送了FIN。首先進行關閉的一方將執(zhí)行主動關閉,而另一方則執(zhí)行被動關閉,上圖描述的即是如此。
第一次揮手:Client發(fā)送一個FIN,用來關閉Client到Server的數(shù)據(jù)傳送,Client進入FIN_WAIT_1狀態(tài)。
第二次揮手:Server收到FIN后,發(fā)送一個ACK給Client,確認序號為收到序號+1(與SYN相同,一個FIN占用一個序號),Server進入CLOSE_WAIT狀態(tài)。
第三次揮手:Server發(fā)送一個FIN,用來關閉Server到Client的數(shù)據(jù)傳送,Server進入LAST_ACK狀態(tài)。
第四次揮手:Client收到FIN后,Client進入TIME_WAIT狀態(tài),接著發(fā)送一個ACK給Server,確認序號為收到序號+1,Server進入CLOSED狀態(tài),完成四次揮手。
UDP協(xié)議
User Datagram Protocol,UDP為應用程序提供了一種無需建立連接就可以發(fā)送封裝的IP數(shù)據(jù)報的方法。當它想傳送時就簡單地去抓取來自應用程序的數(shù)據(jù),并盡可能快地把它扔到網(wǎng)絡上。
QQ它的消息傳輸用的就是UDP協(xié)議
對比
TCP特點:面向連接、可靠傳輸、面向字節(jié)流、流量控制、阻塞控制
UDP特點:無連接、盡最大努力交付、面向報文
?
互聯(lián)網(wǎng)協(xié)議和OSI模型
每層運行常見物理設備
每層運行常見的協(xié)議
兩臺機器間的傳遞模式
就是一個包快遞->拆快遞的過程
更多文章、技術交流、商務合作、聯(lián)系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯(lián)系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
