-
網絡的基本概念
-
1.客戶端:也就是應用,在手機而言的話我們理解為app
-
2.服務器:向客戶端提供服務,數據,資源的機器(特殊的電腦)
服務器分:
內網服務器:局域網
外網服務器:把數據共享出去
本地服務器:自己電腦上的
-
3.請求:客戶端向服務器端索取數據
-
4.相應:服務器對客戶端的請求作出反應,一般都是返回給客戶端數據
客戶端和服務器其實簡稱:C/S Client/Server,還有一個B/S b指的是瀏覽器,用c/s必須要開發一個應用,而b/s只需要裝一個瀏覽器,一般電腦上很多都是b/s
-
URL
想要獲取網絡上的某個資源,首先要有url
-
什么是URL
URL:Uniform Resource Locator (統一資源定位符)
網絡上的每個資源都有對應的唯一的地址-URL
-
URL的基本格式
格式: 協議://主機地址:端口號/路徑
協議:不同的協議代表不同的資源獲取方式
主機地址:主機的唯一標示(IP地址,域名)
路徑:資源在主機中的具體位置
http協議下默認的端口號是80,ip地址計算機的唯一標示,如果寫的域名,那么DNS服務器會把域名解析為ip地址
比如:https://www.baidu.com
https://item.jd.com/11084163445.html?jd_pop=b1e74fdb-a4d8-42c5-a24d-526c58ac743b&abt=0
-
URL常用的協議
HTTP(超文本傳輸協議) FTP(文件傳輸協議) mailto(郵箱) File(本地) tel:// sms://
-
HTTP 協議簡介
-
什么是協議
雙方規定好的約定,約定的是請求怎么發和響應怎么發以及url的格式怎么寫,為什么很多都是用http協議,因為它簡單,即使它不快
-
什么是HTTP協議
1.超文本傳輸協議(超文本:文字,圖片,視頻,聲音等)
2.瀏覽器和web服務器通訊時候遵守的約定
3.互聯網使用最多的協議
4.提供超文本傳輸服務
-
請求-響應
-
端口號
1.標示進程(程序)的邏輯地址,不同進程(程序)的標示(解釋:比如你想服務器請求數據,服務器也是計算機,那么應該是那個程序來程序來處理請求和返回響應呢,那么端口號的作用就來了)
2.端口取值范圍:0-65535
-
網絡模型
OSI七層網絡模型
1.應用層
2.標示層
3.會話層
4.傳輸層
5.網絡層
6.數據鏈路層
7.物理層
這是概念上的模型,一般沒怎么樣,在這個基礎上抽象出路 TCP/IP的網絡模型
1.應用層:對應osi模型的前三層,為用戶提供所需的各種服務,例如:FTP ,TeInet ,DNS ,SMT ,HTTP等
2.傳輸層:為應用層提供端到端的通信功能,保證了數據包的傳輸順序以及數據完整性,兩個主要協議:TCP/UDP
3.網絡層:解決主機到主機的通信問題,它所保護的協議設計包在整個網絡上的邏輯傳輸,注重重新服務主機一個ip地址來完成對主機的尋址,它還負責數據包在多種網絡中的路由,改層有三個主要協議:網際協議(IP),互聯網組管理協議(IGMP)和互聯網控制報文協議(ICMP)
4.網絡接入層:負責監視數據在主機和網絡之間的切換(網卡層)
假設客戶端和服務器要通訊
比如有個聊天軟件,那么服務器要發數據給客戶端,比如服務器的聊天的這個軟件發個“hello”,那么首先這個應用把hello先傳給傳輸層,那么傳輸層給hello加一個頭,因為傳輸層本身就是端口對端口的,頭里會發一些信息,加入對方的端口號等額外信息為了記住這個數據要發給對方的哪個應用,然后傳輸層的數據發給我網絡層,然后網絡層再加個頭,里面有ip地址記錄下面發給哪個電腦,再繼續發給網絡接入層,在這里再加一個頭,然后轉成二進制發出去,接受的那方又反向的去頭,最后指定端口的應用拿到hello
-
傳輸層里的 TCP/IP
1.1 TCP
tcp協議提供的是一種可靠的,通過三次握手來連接的數據傳輸服務
因為tcp的數據格式比較復雜,所以它的速度而言是比udp慢的
tcp發數據三次握手成功后創立了連接,連接后才能收發數據,發完數據后斷開連接,這是tcp慢的一個原因
應用層也提供了一些協議http ftp等等,那么應用層的協議就要選擇傳輸層的協議,比如http在進行網絡傳輸的時候使用的tcp協議
因為tcp收發是需要創立連接的,所以它是一對一的,因為只有再跟你連接上后才能進行傳入,而udp它可以指定給某個發,也可以以廣播的形式發出去,不管接受的是誰1.2 UDP
udp協議提供的則是不保證數據可靠性(并不是說不可靠,出錯幾率也很小只是相對于tcp),無連接的數據傳輸服務
udp發數據是直接發過去的-
Socket
兩個計算機通訊的過程,就像兩個人打電話一樣
socket又稱為“套接字”,應用程序通過“套接字”向網絡發送數據或者向網絡作出應答
網絡通信其實就是兩個socket之前的通信
數據在兩個socket之間通過io傳輸數據
socket是純c語言的,是跨平臺的
http協議是基于socket的,http協議的底層使用就是socket
-
Socket通信過程
1.創建socket
2.連接服務器
3.發數據給服務器/從服務器接受數據
4.關閉連接
在tip/ip的網絡模型中,socket出現在應用層和傳輸層之間,應用層構成數據,把數據給socket,socket在發給傳輸層
在本機上搭建一個服務器方法
打開終端:
nc -lk 12345 (12345是端口號)
回車就開了一個服務器