- 1、網絡本質
進行資源共享和信息傳輸。 - 2、基于網絡的應用程序的本質
就是獲取數(shù)據(jù)和傳輸數(shù)據(jù)給用戶使用。 - 3、TCP/IP協(xié)議棧工作流程
實體層是不屬于TCP/IP協(xié)議棧的一層。也就是說TCP/IP協(xié)議棧共計四層。
首先得接入網絡,局域網或者廣域網,在計算機接入網絡的時候,也就是插入網線的時候本地路由器中的
路由表會更新數(shù)據(jù),通過一定淘汰機制算法刪除很久沒有使用過的計算機ip以及mac地址,并對新加入組的計算
機新分配ip,在分配ip的過程中,路由表會通過ARP協(xié)議(地址解析協(xié)議)得到新接入計算機的mac地址,并存入
mac地址以及分配的ip地址。
首先A用戶使用應用程序產生數(shù)據(jù),并通過應用層約定的規(guī)則(即應用層協(xié)議)發(fā)送數(shù)據(jù),數(shù)據(jù)進行第一次封
裝形成head和data。再通過傳輸層確定目標計算機所需要接受數(shù)據(jù)的端口再次進行編碼第二次封裝,利用傳輸層
約定的規(guī)則(即傳輸層協(xié)議,tcp/udp)發(fā)送數(shù)據(jù),數(shù)據(jù)到達網絡層,網絡層通過ip協(xié)議確認要發(fā)送數(shù)據(jù)的目標ip,
然后通過數(shù)據(jù)鏈路層的mac地址,數(shù)據(jù)鏈路層把數(shù)據(jù)通過以太網協(xié)議第三次封裝成幀,幀也分head(標頭,固定長
度18字節(jié))和data(數(shù)據(jù),最短46字節(jié),最長1500字節(jié)),超出則分成多個幀進行發(fā)送。再通過實體層進行第四次
封裝,把數(shù)據(jù)利用實體層協(xié)議封裝成1或者0高低電位,這里可能會使用差分曼徹斯特等編碼方式,數(shù)據(jù)這時候通過
網線或者電磁波到達路由或者交換機,路由首先查看目標ip是否在本組局域網內,通過目標ip地址以及發(fā)送方ip地
址對本地子網掩碼進行與(and)運算,如果運算結果相等則說明目標主機在此局域網之內,則直接通過路由表確定
ip以及mac信息發(fā)送數(shù)據(jù)。如果不相等則路由器繼續(xù)向上層發(fā)送這次發(fā)送的數(shù)據(jù),直到某個結點有屬于目標ip的信息
時,進行接收,并再次通過實體層->數(shù)據(jù)鏈路層->網絡層->傳輸層->應用層的方式進行四次拆包,找到ip->確認mac
地址->確認端口信息,接收數(shù)據(jù)到B用戶使用的應用程序上,再由應用程序展現(xiàn)到B用戶面前。 - 4、網絡五層
1)應用層:
應用層決定了向用戶提供應用服務時通信的活動,HTTP 協(xié)議也處于該層。
2)傳輸層:
傳輸層對上層應用層提供處于網絡連接中的兩臺計算機之間端口到端口的數(shù)據(jù)傳輸。在傳輸層有兩個性質不同的協(xié)議: TCP 和 UDP 。
3)網絡層:
網絡層用來處理在網絡上流動的數(shù)據(jù)包。數(shù)據(jù)包是網絡傳輸?shù)淖钚?shù)據(jù)單位。該層規(guī)定了通過怎樣的路徑(ip地址到ip地址)到達對方計算機,
并把數(shù)據(jù)包傳送給對方。
與對方計算機之間通過多臺計算機或網絡設備進行傳輸時,網絡層所起的作用就是在眾多的選項內選擇一條傳輸路線。
4)鏈路層:
用來處理連接網絡的硬件部分。包括控制操作系統(tǒng)、硬件的設備驅動、網卡及光纖等物理可見部分(還包括連接器等一切傳輸媒介)。
硬件上的范疇均在鏈路層的作用范圍之內。
5)實體層:
負責通過物理手段將電腦連接起來,并傳輸0和1的電信號。 - 5、Html,即超文本
超級文本,把線性的文本變成非線性的文本,帶跳轉。 - 6、HTTP協(xié)議
HTTP協(xié)議是在 TCP/IP 協(xié)議族的基礎上運作的,是TCP/IP的一個子集。
是在應用層上對服務器,客戶端進行數(shù)據(jù)傳輸方式,傳輸格式約束和規(guī)定的一個協(xié)議,具體格式和流程
在下面說明。 - 7、服務器、服務、服務器程序
服務器可以理解成一臺比較厲害的主機,服務器對每個客戶端提供服務,針對客戶端請求的服務,
由服務器程序調用對應的服務,給客戶端提供服務。 - 8、瀏覽器———>服務器 請求 響應
客戶端發(fā)起對服務器的請求,發(fā)送請求報文,服務器接收到請求報文,如果發(fā)送不帶Cookie的報文(例如初次登錄)
,服務器會設置Cookie并記錄,并回復響應報文,并對比請求頭中的緩存數(shù)據(jù),如果記錄的最后一次修改時間等于服務
器最后一次修改時間或者資源戳和服務器一致,則不返回新頁面,客戶端繼續(xù)使用原來的界面,否則返回新頁面。 - 9、url
url
i. schema:使用的協(xié)議,http、https。 https就是安全的http協(xié)議
ii. host:表示請求服務器的域名或者ip地址
iii. port:端口號,默認是80
iv. path:請求資源的路徑
v. query-string:發(fā)送給服務器的數(shù)據(jù)
vi. anchor:錨,跟服務器無關,只跟客戶端有關
url
schema:http
port:80
path:sj/test/test.html
query-string:name=zhangsan&age=18
- 10、報文相關信息補充:
請求報文:
?請求報文有4部分:
?1、Request line(請求行)
結構:Method/path-to-resource HTTP/Version-number
Method:請求方法:Get、Post
Get 獲取服務器的數(shù)據(jù)
Post 提交數(shù)據(jù)到服務器
Path-to-resource:請求資源的路徑url
Version-number:版本號 一般HTTP/1.1
2、Request header(請求頭)
Accept:瀏覽器接收的數(shù)據(jù)類型
Accept-Encoding:瀏覽器能夠接收數(shù)據(jù)的編碼格式
Accept-Language:瀏覽器支持的語言
Accept-Charset:瀏覽器能夠接收的字符集類型
User_Agent:用戶代理,告訴服務器客戶端的瀏覽器信息和操作系統(tǒng)信息
Connection:keep alive(長連接和短連接)
Host:主機地址
Cookie:用戶識別(保存用戶名)
3、空行
4、Request body(請求體)
響應報文:
響應報文也分為四部分:
1、Response line(響應行)
結構:HTTP/Version-number status-code message
HTTP/version number :版本號 一般HTTP/1.1
Status code :狀態(tài)碼
a)狀態(tài)碼作用:服務器用來告訴瀏覽器是否產生了瀏覽器預期的Response
b)狀態(tài)碼類別:1XX 2XX 3XX 4XX 5XX
i. 1XX:提示信息,表示服務器已經接收到瀏覽器的請求,繼續(xù)處理
ii. 2XX:處理成功,表示瀏覽器的請求已經成功被接收、并正確處理
iii.3XX:重定向,表示需要進行更進一步的處理
iv. 4XX客戶端請求錯誤,表示客戶端請求出現(xiàn)錯誤
v. 5XX服務器端錯誤,服務器未能正確處理客戶端請求
常見狀態(tài)碼解釋:
i. 200 OK :表示客戶端請求被成功接收,并將響應數(shù)據(jù)發(fā)送給客戶端
ii. 302 Found :重定向,新的URL會在Response中返回,瀏覽器將會自動向新的URL發(fā)送請求。
iii. 304 Not Modified :表示信息已經被緩存了,還可以繼續(xù)使用
iv. 403 Forbidden :服務器接收到客戶端請求,但拒絕為客戶端提供服務
v. 404 Not Found :表示客戶端請求的資源不存在(url輸錯了)
vi. 500 Internet Server Error :服務器發(fā)生了不可預期的錯誤
Message:狀態(tài)碼對應的狀態(tài)信息
2、Response header(響應頭)
Date:消息生成時間
Content-type:響應數(shù)據(jù)的類型
Transfer-encoding:分塊傳輸
Last-Modified: Fri, 13 Apr 2018 06:43:31 GMT :服務器記錄的文件最后一次修改的時間
Content-type:響應報文的body的內容類型
Etag:資源戳,與請求報文的if-none_match配合使用
Set-Cookie:將Cookie數(shù)據(jù)發(fā)送到瀏覽器,并要求瀏覽器進行記錄
Content-Encoding:服務器響應給瀏覽器的文件的壓縮方式
Content-Language:服務器告訴瀏覽器響應的語言
Server:服務器告訴瀏覽器當前服務器的信息
Location:重定向的url
3、空行
4、Request body(響應體)
用戶看到的內容,一般使用靜態(tài)或者動態(tài)的網頁代碼