C\S架構:客戶端服務端架構數據庫
客戶端(client) : 享受服務端提供的服務瀏覽器
服務端(server) : 給客戶端提供服務安全
軟件CS架構: 京東,淘寶,qq,微信,暴風影音,快播 硬件CS架構: 打印機服務器
B\S 瀏覽器和服務端 B(browser)微信
谷歌,360,IE網絡
網絡通訊當中遇到的名詞 硬件架構
網卡: 接收電信號
mac地址: 網卡的惟一標識,全球惟一, 6位點分16進制 8C-EC-4B-87-99-D7 16進制的6個數表示,前三位廠商 編號,後三位生產流水號
廣播 : 信息發給全部人
單播 : 單獨發給某我的或者說某個設備
廣播風暴 : 不安全,容易擁堵網絡
IP地址 : 劃分廣播域
192.168.15.113 四個點分十進制
IPv4 :
IPv6 : 6個冒號分十六進制
IPv6 地址: fe80::48c3:8f81:8474:c7d0%2
集線器 : 將全部連電腦連通起來
交換機 : 升級版集線器
DHCP協議 : 自動分配IP地址
劃分廣播域--> IP網段 : 192.168.15.0 - 192.168.15.255 屬於同一子網
192.168.16.0 - 192.168.16.255
子網掩碼 : 計算目標IP地址是否和我們是同一網段
同一網段的:廣播發送
不一樣網段的:發送給路由器
255.255.255.0,
例外一個班的同窗的IP地址爲:192.168.14.12
192.168.14.12
255.255.255.0
11000000.10101000.00001110.00001100
11111111.11111111.11111111.00000000
11000000.10101000.00001110.00000000
192.168.14.0
計算是否屬於同一網段
屬於同一個網段的,咱們成爲屬於同一子網
路由器(內網的做用) : 管理局域網 鏈接外網
找外部網路的設備:
域名:www.jd.com --> IP地址
DNS服務器:記錄着全部的域名和他網站對應的那臺服務器的IP地址的對應關係,理解爲一個字典
{'www.jd.com':192.168.15.12}
網關:在路由器這兒,把關你對外的請求
NAT技術: 將你的IP地址,轉換爲網關的IP地址
外網又稱爲公網 ,網關的IP地址又稱爲外網IP地址或者公網IP地址
路由器(外網的做用) : 轉發消息
路由協議 : 計算一個最優路徑,而後進行路由轉發
發到京東的路由器上,京東的路由器作了端口映射(看圖)
端口:標識電腦上某個應用程序,範圍0-65535 0-1024 內部程序用的,咱們通常使用的都是8000之後的
經過IP地址+端口:我就能惟一肯定一臺電腦上的某個應用程序
應用層:socket
HTTP(Hypertext Transfer Protocol 超文本傳輸協議,顯示網頁)tcp
DNS(Domain Name System)域名系統性能
FTP(File Transfer Protocol)文件傳出協議
SFTP(SSH File Transfer Protocol,和FTP不同)安全文件傳送協議
SCP(Secure copy,based on SSH)SCP是智能網的核心部件,通常由小型機、高性能微機和大型實時高速數據庫組成。
SSH (Secure Shell)
通訊層:
TCP(Transmission Control Protocol 三次握手傳輸協議)
UDP
網絡層:
IP(Internet Protocol)
ICMP(Internet Control Message Protocol,主要用於路由發送錯誤報告)
鏈路層:
MAC(media access control)
tcp\ip五層
arp協議:經過IP地址找到mac地址
博客資料: http://www.javashuo.com/article/p-touxjwsr-gx.html
互聯網的本質就是一系列的網絡協議,這個協議就叫OSI協議(一系列協議),按照功能不一樣,分工不一樣,人爲的分層七層。實際上這個七層是不存在的。沒有這七層的概念,只是人爲的劃分而已。
七層劃分爲(osi七層):應用層、表示層、會話層、傳輸層、網絡層、數據鏈路層、物理層。
五層劃分爲(tcp/ip五層) : 應用層、傳輸層、網絡層、數據鏈路層、物理層。
四層劃分爲:應用層、傳輸層、網絡層、網絡接口層。
每層中的 設備:
每層中的做用:
應用層:
提供應用程序間的通訊, 應用層是實際應用程序間的接口
表示層:
處理數據格式,數據 加密 解密 壓縮 解壓縮 像應用層提供數據 負責數據轉換和代碼格式化
會話層:
創建維護和管理會話,將不一樣的應用程序數據分離
傳輸層:
創建主機端到端的連接,提供流量控制,差錯校驗,分片上層數據,保證數據正確傳輸
端口範圍 0 - 65535 0-1024 爲系統佔用 通常使用 8000 以上
網絡層:
IP地址尋址 和 路由選擇 定義網絡地址 路由選擇
數據鏈路層:
介質訪問,鏈路管理,mac 地址尋址
物理層:
規範介質,傳輸bit流
OSI中的層 | 功能 | TCP/IP協議族 |
---|---|---|
應用層 | 文件傳輸,電子郵件,文件服務,虛擬終端 | TFTP,HTTP,SNMP,FTP,SMTP,DNS,Telnet |
表示層 | 數據格式化,代碼轉換,數據加密 | 沒有協議 |
會話層 | 解除或創建與別的接點的聯繫 | 沒有協議 |
傳輸層 | 提供端對端的接口 | TCP,UDP |
網絡層 | 爲數據包選擇路由 | IP,ICMP,RIP,OSPF,BGP,IGMP |
數據鏈路層 | 傳輸有地址的幀以及錯誤檢測功能 | SLIP,CSLIP,PPP,ARP,RARP,MTU |
物理層 | 以二進制數據形式在物理媒體上傳輸數據 | ISO2110,IEEE802,IEEE802.2 |
字面意思解釋:物理傳輸、硬件、物理特性。在深圳的你與北京的朋友聊天,你的電腦必需要能上網,物理體現是什麼?是否是接一根網線,插個路由器,北京的朋友那邊是否是也有根網線,也得插個路由器。也就是說計算機與計算機之間的通訊,必需要有底層物理層方面的連通,就相似於你打電話,中間是否是必須得連電話線。
中間的物理連接能夠是光纜、電纜、雙絞線、無線電波。中間傳的是電信號,即010101...這些二進制位。
底層傳輸的010010101001...要讓這些010010101001...有意思,人爲的分組再適合不過了,8位一組,發送及接收都按照8位一組來劃分。接收到8位爲一組的話,那麼就能夠按照這8位數來作運算。若是沒有分組,對方接收的計算機根本就不知道從哪一位開始來作計算,也解析不了收到的數據。我發了16位你就按照16位來作計算嗎?我發100位你就按照100位作計算嗎?沒什麼意義是吧。所以要想讓底層的電信號有意義,必需要把底層的電信號作分組。我作好8位一組,那麼我收到數據,我就知道這幾個8位作一組,這幾個8位作一組。那麼每一個8位就能夠獲得一個肯定的數。分組是誰幹的活呢?物理層幹不了,這個是數據鏈路層乾的。
早期的時候,數據鏈路層就是來對電信號來作分組的。之前每一個公司都有本身的分組方式,很是的亂,後來造成了統一的標準(標準就是協議),即以太網協議Ethernet。
Ethernet規定
一組電信號稱之爲一個數據包,或者叫作一個「幀」
每一數據幀分紅:報頭head和數據data兩部分
head包含:(固定18個字節)
發送者(源地址,6個字節) 接收者(目標地址,6個字節) 數據類型(6個字節)
data包含:(最短46字節,最長1500字節)
數據包的具體內容
head長度+data長度=最短64字節,最長1518字節,超過最大限制就分片發送。
這就像寫信,發送者的地址(源地址)就是你家的地址,接收者地址(目標地址)就是對方的收信地址,你家的路由器就至關於郵局。其實在計算機通訊中的源地址和目標地址指的是mac地址。
Mac地址的由來:
head中包含的源和目標地址由來:Ethernet規定接入Internet的設備都必須具有網卡,發送端的和接收端的地址即是指網卡的地址,即Mac地址。
每塊網卡出廠時都被燒錄上一個實際上惟一的Mac地址,長度爲48位2進制,一般由12位16進制數表示,(前六位是廠商編碼,後六位是流水線號)
有了mac地址之後,計算機就能夠通訊了,假設一個教室就是一個局域網(隔離的網絡),這個教室裏面有幾臺計算機,計算機的通訊和人的通訊是一個道理,把教室裏面的人都比做一個個計算機,假設教室裏面的人都是瞎子,其實計算機就是瞎子的,計算機通訊基本靠吼,如今我要找教室裏面的飛哥要戰狼2的片,而後我就吼一聲,說我要找飛哥要戰狼2的片,戰狼2的片就屬於個人數據,可是我在發的時候我是否是要標識我是誰,我要找誰,我是誰就是個人mac地址,我要找誰就是飛哥的mac地址,這兩個地址作數據包的頭部,再加上數據戰狼2的片就構成了一個數據幀。
這個數據包封裝好之後就往外發,到物理層之後就所有轉成二級制,往外發是怎麼發的呢?就是靠吼。即「我是Edison,我找飛哥要戰狼2的片」。這麼吼了一嗓子之後,全屋子的人都能聽到,這就是廣播。
計算機底層,只要在一個教室裏(一個局域網),都是靠廣播的方式,吼。
局域網的理解:什麼是互聯網,互聯網就是由一個個局域網組成,局域網內的計算機不論是對內仍是對外都是靠吼,這就是數據鏈路層的工做方式-----廣播。
廣播出去之後,全部人都聽得見,全部人都會拆開這個包,讀發送者是誰,接收者是誰,只要接收者不是本身就丟棄掉。對計算機來講,它會看本身的Mac地址,飛哥收到之後,他就會把片發給我,發送回來一樣採用廣播的方式了,靠吼。
同一個教室(同一個局域網)的計算機靠吼來通訊,那不一樣教室的計算機又如何?
好比說局域網1的pc1與局域網2的pc10如何通訊?你在教室1(局域網1)吼,教室2(局域網2)的人確定是聽不見的。這就是跨網絡進行通訊,數據鏈路層就解決不了這個問題了,這就得靠網絡層出面了。
在講網絡層以前,其實基於廣播的這種通訊就能夠實現全世界通訊了,你吼一聲,若是全世界是一個局域網,全世界的計算機確定能夠聽得見,從理論上彷佛行得通,若是全世界的計算機都在吼,你想想,這是否是一個災難。所以,全世界不能是一個局域網。因而就有了網絡層。
網絡層定義了一個IP協議,
你想,我是這個教室的一個學生,我想找隔壁教室一個叫老王的學生,我也不認識老王,那怎麼辦,我吼?老王在另一個教室確定是聽不到的。找教室的負責人,這個教室的負責人就負責和隔壁教室的負責人說話,說咱們教室的有個學生要找大家教室的老王。往外傳的東西交給負責人就能夠了,內部的話上面已經提到,經過廣播的方式,對外的東西廣播失效。教室的負責人就是網關,網關即網絡關口的意思。
Mac地址是用來標識你這個教室的某個位置,IP地址是用來標識你在哪一個教室(哪一個局域網)。你要跨網絡發包你是否是要知道對方的IP地址,好比你要訪問百度,你確定得知道百度服務器的IP地址。計算機在發包前,會判斷你在哪一個教室,對方在哪一個教室,若是在一個教室,基於mac地址的廣播發包就OK了;若是不在一個教室,即跨網絡發包,那麼就會把你的包交給教室負責人(網關)來轉發。Mac地址及IP地址惟一標識了你在互聯網中的位置。
數據鏈路層中會把網絡層的數據包封裝到數數據鏈路層的數據位置,而後再添加上本身的包頭,再發給物理層,物理層發給網關,網關再發給對方教室的網關,對方教室的網關收到後在那個教室作廣播。
在數據鏈路層看,數據封裝了兩層,跟玩俄羅斯套娃有點相似,一層套了一層。
如今來看另外一個問題,在吼以前怎麼知道對方的Mac地址?這就得靠ARP協議。
ARP協議的由來:在你找飛哥要片以前,你的先幹一件事,想辦法知道飛哥的Mac地址。即你的機器必須先發一個ARP包出去,ARP也是靠廣播的方式發,ARP發送廣播包的方式以下:
局域網中怎麼獲取對方的Mac地址:
確定要知道對方的IP地址,這是最基本的,就像你要訪問百度,確定得知道百度的域名,域名就是百度的IP地址。本身的IP能夠輕鬆得到,本身的Mac也輕鬆獲取,目標Mac爲16個F,咱們叫廣播地址,表達的意思是我想要獲取這個目標IP地址172.16.10.11的機器的Mac地址。Mac爲16個F表明的是一種功能,這個功能就是獲取對方的MAC地址,計算機的Mac永遠不多是16個F。假設是在本教室廣播,一嗓子吼出去了,全部人開始解包,只有IP地址是172.16.10.11的這我的纔會返回他的Mac地址,其餘人所有丟棄。發回來源Mac改爲飛哥本身的Mac地址,同時把飛哥的Mac地址放在數據部分。
跨網絡怎麼獲取對方的Mac地址:
經過IP地址區分,計算機運算判斷出飛哥不在同一個教室,目標IP就變成了網關的IP了。網關的IP在計算機上配死了,能夠輕鬆獲取。
樣網關就會把它的Mac地址返回給你,而後正常發包
網關幫你去找飛哥,但對用戶來講,咱們根本就感受不到網關的存在。
傳輸層的由來:網絡層的ip幫咱們區分子網,以太網層的mac幫咱們找到主機,而後你們使用的都是應用程序,你的電腦上可能同時開啓qq,暴風影音,等多個應用程序,
那麼咱們經過ip和mac找到了一臺特定的主機,如何標識這臺主機上的應用程序,答案就是端口,端口即應用程序與網卡關聯的編號。
傳輸層功能:創建端口到端口的通訊
補充:端口範圍0-65535,0-1023爲系統佔用端口
可靠傳輸,TCP數據包沒有長度限制,理論上能夠無限長,可是爲了保證網絡的效率,一般TCP數據包的長度不會超過IP數據包的長度,以確保單個TCP數據包沒必要再分割。
以太網頭 ip 頭 tcp頭 數據
不可靠傳輸,」報頭」部分一共只有8個字節,總長度不超過65,535字節,正好放進一個IP數據包。
以太網頭 ip頭 udp頭 數據
應用層由來:用戶使用的都是應用程序,均工做於應用層,互聯網是開發的,你們均可以開發本身的應用程序,數據多種多樣,必須規定好數據的組織形式 。
應用層功能:規定應用程序的數據格式。
例:TCP協議能夠爲各類各樣的程序傳遞數據,好比Email、WWW、FTP等等。那麼,必須有不一樣協議規定電子郵件、網頁、FTP數據的格式,這些應用程序協議就構成了」應用層」。
用戶發出連接請求, 服務端確承認以進行連接 並返回響應,用戶端發出連接請求
用戶發出請求斷開的請求,服務端返回須要等待完成後續的工做 響應,再次返回 能夠斷開連接的響應,用戶發出正式斷開連接的請求
tcp協議:面向鏈接,消息可靠,相對udp來說,傳輸速度慢,消息是面向流的,無消息保護邊界0 udp協議:面向無鏈接,消息不可靠,傳輸速度快,消息是面向包的,有消息保護邊界.