目錄
1、dns域名
1.1 dns解析方式:
1.2 域名解析服務器:
2、html
2.1 網頁、網站和主頁、域名
2.2 URL和URI
3、Web(全球廣域網,也稱萬維網)
3.1 靜態頁面
3.1.1 靜態頁面特點
3.2 動態頁面
3.2.1 動態頁面特點
4、http
4.1?http協議簡介
4.2 工作流程
4.4 連接保持功能
4.5?http的請求方式
4.6?get方法
4.7post
4.8 響應碼、狀態碼
4.8.1請求狀態的響應碼:
4.9?通信套接字
4.9.1?http協議當中socket的作用
4.9.2?套接字的相關接口
5、nc工具來模擬實驗
6、HTTP協議請求流程分析
1、dns域名
網絡是基于tcp/ip協議進行通信和連接的
應用層-----傳輸層-----網絡層-----數據鏈路層-----物理層
ip地址:每一臺主機都有一個唯一的地址標識(固定的ip地址),為了區分用戶和計算機和進行通信
ip地址的問題在于32位二進制數組成的,不方便記憶,所以就引申出來域名
dns解析:就是把域名解析成ip地址,方便通信,訪問
1.1 dns解析方式:
·??/etc/hosts :負責快速解析文件,包含了ip與主機名之間的映射關系,如果沒有dns服務的情況下,可以使用/etc/hosts文件來完成解析和映射
· /etc/resolv.conf dns:客戶端的配置文件,設置dns服務器的ip和域名,還包含了主機域名的搜索順序,主要是域名解析服務器使用的配置文件
· 修改網卡配置文件 ifcfg-ens33
生效順序 1.hosts 2.網卡配置文件 3.resolv.conf
dns域名解析服務器,由運營商來做
?
1.2 域名解析服務器:
· 保持和維護域名空間
· 響應解析請求
解析端(客戶端)
跟域-----頂級域-----二級域-----子域----主機名
2、html
html:超文本標記語言,是一種規范的,標準的語言格式
網頁文件本身就是一個文本文件,html通過標記的方式,告訴瀏覽器,如何顯示文本當中的內容,html文件是一個文本文件,所有能夠生成txt文件的工具,都可以進行編輯,修改之后的文件的后綴名:.html 或者 .htm
2.1 網頁、網站和主頁、域名
網頁:純文本格式的文件,用html語言來進行編寫,在用瀏覽器翻譯成頁面的形式顯示出來
網站:是由多個頁面組成的,網頁的結合體
主頁:打開網站后,出現的第一個頁面,就是網站的主頁,也可以說是首頁
域名:瀏覽網頁時,輸入的網址
http/https:用來傳輸頁面的通信協議,https是加密的,是一種通信協議,基于tcp協議
端口號:http默認端口80;https默認是443
查看方式:netstat? -antp? |? grep? nginx
2.2 URL和URI
URL:萬維網尋址系統,唯一的表示
eg:https://www.bilibili.com/類似這種的完整地址為url
https://www.bilibili.com/v/dance/?spm? id? from=333.1007.0.0這種格式url后面的為uri
超鏈接:超鏈接將網站中的不同頁面連接起來
發布:將制作好的網頁上傳到服務器,供用戶訪問
html的語法
<html>?
? ? <head>網頁的內容描述信息</head>?
? ? <body>網頁的具體內容</body>
</html>
頭標前中常用的標簽
<title>文檔標題
<base>頁面標簽的鏈接地址
<script>客戶端的腳本文件
<style>html文檔的樣式
內容當中常用的標簽
<table>定義表格
<tr>定義表格中的一行
<td>定義表格中某一行的一列
<img>定義圖片
<a>超鏈接
<font>定義字體
3、Web(全球廣域網,也稱萬維網)
web.1.0 靜態頁面就是看? ?web.2.0 動態頁面用戶交互
3.1 靜態頁面
靜態頁面就是標準的html文件
擴展名都是.htm或者.html
里面可以包含圖片,文本,聲音動畫;是網站搭建的基礎,早期的網站都是靜態頁面,沒有后臺數據,不包含可交互的內容,更新起來比較麻煩,一般用于展示型網站
3.1.1 靜態頁面特點
· URL是固定的,一般不包含以?為后綴
· 頁面一經發布,都是保存在網站的服務器上
· 靜態頁面相對穩定,內容很少發生變化,容易被搜索引擎檢索
· 沒有數據庫的支持,制作和維護的工作量,都比較大,網站的信息量如果太大,單純的使用靜態頁面比較困難
· 沒有交互性,功能上受限很大
· 瀏覽速度快,因為不需要連接數據庫
3.2 動態頁面
· 網頁URL是不固定的,用戶可以和后臺數據進行交互
· 動態頁面的網址中,一般包含一個特殊標記-----$?
?· 動態頁面的語言:php jsp python buby tomcat(java)
3.2.1 動態頁面特點
· 交互性?
· 自動跟新
· 特效,每個人進入頁面的時候,會有不同的效果
小結:靜態頁面就是看,動態頁面可以進行交互
4、http
4.1?http協議簡介
http協議,超文本傳輸協議,互聯網上應用最廣泛的網絡協議,基于tcp協議的應用的傳輸協議,面向用戶,客戶端和服務端之間進行數據傳輸的一種規則
4.2 工作流程
工作流程:
· 客戶端和服務端進行tcp鏈接 :三次握手----建立連接
· 客戶端發送http請求,服務端接收到http請求之后,響應客戶端的請求
· socke 接口,通過端口進行通信
· 響應到達客戶端,解析的過程(瀏覽器),用戶查看,使用,訪問
· 訪問,使用,查看,結束之后,斷開連接,四次揮手
http是一種無狀態的協議,本身不會對發送的請求和響應的通信進行持久化處理(連接保持),為了讓http能夠快速的大量的進行處理事務,提高效率。連接保持是需要的
4.3 cookie
記錄用戶的登陸狀態,跟蹤統計用戶訪問網站的習慣,識別用戶身份,保存用戶信息
這個是服務器留在用戶計算機的小文件
4.4 連接保持功能
http協議本身自帶的連接保持功能
http1.1:自帶鏈接保持功能,長連接
長連接:一次性獲取頁面的文件的所有信息,不再需要分開處理請求,所以速度大大加快,并行
連接保持:keep-alive,在一個tcp連接上可以傳送多個http的請求和響應,減少了建立和關閉連接的消耗和延遲,連接保持是有時間,不是無限的,是默認開啟的,60s
連接資源占用:長時間保持,會降低服務器的負載,如果是高并發,會使服務器耗盡資源
鏈接狀態管理:長連接需要維護連接狀態,服務器需要跟蹤每個連接的狀態,增加服務器的負擔(集群的誕生)
https:加密通信協議,加密數據傳輸,加密過程涉及客戶端和服務器之間進行密鑰交換,確保只有合法的接收方,能夠解密數據
4.5?http的請求方式
· 請求頭
請求頭當中包含請求體
請求體當中的內容
Accept:客戶端可以接受的數據類型
Accept-Language:客戶端可以接受的語言類型
User-Agent:瀏覽器的信息
Accpect-Encoding:客戶端可以接受的編碼格式
Host:表示請求的ip和端口號
Connection:告訴服務器請求連接如何處理
Keep-Alive:通知服務器回傳數據不要馬上關閉,保持一小段的連接
Closed:馬上關閉
請求方式:get 就是用來向服務器發起請求,http協議中的get,就是請求
· 響應頭
· 總覽 General
post也是請求的一種,post是向后臺發數據,向服務器會添加數據,也可以改變服務器上的數據
4.6?get方法
特點:
· 從指定服務器獲取數據
· get請求是可以被緩存
· get請求會保存在瀏覽器上的記錄中,cookie
· get請求的長度,是有限度的
4.7post
也是請求的一種,提交數據給服務器處理
· post請求不能緩存
· post請求也不會記錄在瀏覽器的記錄當中
· 請求體的長度也沒有限制
4.8 響應碼、狀態碼
狀態碼,響應碼,服務器來進行提供的
請求之后,服務器收到請求會有一個回應,響應,同時反饋一個響應碼
4.8.1請求狀態的響應碼:
? 1xx表示 100-101 信息提示
? 2xx表示 200-206 成功,請求響應成功,只要狀態碼是200,統統是成功
? 3xx表示 300-305 重定向
? 4xx表示400-415 客戶端錯誤,請求不到,獲取資源失敗
? 5xx表示 500-505 服務端錯誤 響應失敗
總結:
200 成功
301 請求的永久頁面跳轉
304 重定向到緩存
403 禁止訪問(沒有權限)
404 請求頁面找不到 (請求的文件不存在)
500 服務器內部錯誤(配置文件名錯了)
502 網管失效(可能是網絡,可能是防火墻)
503 服務不可用(可能是網絡,可能是防火墻)
504 網關請求超時 (可能是網絡,可能是防火墻)
4.9?通信套接字
socket:實現不同主機進行通信和數據交換,進程間傳輸的標志ip:端口
4.9.1?http協議當中socket的作用
· 客戶機套接字:定義唯一的客戶進程
· 服務端套接字:定義了一個唯一的服務器進程
4.9.2?套接字的相關接口
socket ()創建端口
bind ()綁定ip和端口
listen () 監聽,等待連接
accept ()接受請求
connect ()請求連接建立
write () 發送
read () 接收?
close 關閉連接
ESTABLISHED 連接已經建立,正在傳輸數據
5、nc工具來模擬實驗
[root@localhost ~]#nc -l 8888
#監聽9527
[root@localhost ~]#ss -ntlp
#正在監聽端口
LISTEN ? ? 0 ? ? ?10 ? ? ? ? ? ? ? ?*:9527
使用第二太機器測試
[root@localhost ~]#nc 192.168.233.10 8888
hello
6、HTTP協議請求流程分析
用戶輸入URL(地址鏈接)(http://www.baidu.com:80/tools.html)客戶端獲取到端口及主機名后,
客戶端利用DNS解析域名,首先客戶端的瀏覽器會先找自身的緩存,
如果有解析結。
如果沒有客戶端會去找host文件,host文件沒有的,
客戶端會去找本地的DNS緩存服務器,
本地的DNS緩存服務器沒有,緩存服務器會去找根域,
根域沒有,會返回一個.com.然后本地緩存服務器會去找頂級域,
頂級域沒有的話會返回baidu.com.,然后本地緩存服務器會去找二級域,二級域解析完后會返回客戶端。?
客戶端解析到IP地址后會通過TCP的三次握手與服務器建立連接