OSI七層模型:物理層-數據鏈路層-網絡層-運輸層-會話層-表示層-應用層
OSI五層模型:5、應用層
各層協議:應用層負責兩個進程之間的通信,協議有HTTP HTTPS FTP SMTP DNS 運輸層負責兩臺主機之間的通信,有TCP UDP協議 網絡層是選擇合適的路由和交換節點,有IP協議以及很多路由選擇協議 數據鏈路層傳輸數據幀,在兩個相鄰節點上傳送幀。數據鏈路層收到一個幀后,提取出數據部分交給網絡層。物理層是相鄰計算節點間的流傳輸
三次握手
第一次是主機發送建立連接消息給服務器,服務器表示發現這個請求建立連接的消息,第二次是服務器發送我可以連接的消息給主機,第三次是主機發送正式確認連接給服務器。接下來就可以發送數據了。具體過程如下:
1、tcp服務器進程先創建傳輸控制塊TCB,時刻準備接受客戶進程的連接請求,此時服務器就進入了LISTEN(監聽)狀態
2、TCP客戶進程也是先創建TCB,然后向服務器發送連接請求報文,這時報文首部中的同步位SYN=1,同時選擇一個初始序列號seq=x。此時,tcp客戶端進程進入了SYN-SENT(同步已發送狀態)狀態,TCP規定,SYN報文段(SYN=1的報文段)不能攜帶數據,但需要消耗掉一個序號。
3、TCP服務器收到請求后,如果同意連接,則發出確認報文。確認報文中應該ACK=1,SYN=1,確認號是ack=x+1,同時也要為自己初始化一個序列號seq=y,此時,TCP服務器進程進入了SYN-RCVD(同步收到)狀態。這個報文也不能攜帶數據,但同樣需要消耗一個序號。
3、TCP服務器收到請求后,如果同意連接,則發出確認報文。確認報文中應該ACK=1,SYN=1,確認號是ack=x+1,同時也要為自己初始化一個序列號seq=y,此時,TCP服務器進程進入了SYN-RCVD(同步收到)狀態。這個報文也不能攜帶數據,但同樣需要消耗一個序號。
4、TCP客戶進程收到確認后,還要向服務器給出確認。確認報文的ACK=1,ack=y+1,自己的序列號seq=x+1,此時,TCP連接建立,客戶端進入ESTABLISHED(已建立連接)狀態。TCP規定,ACK報文段可以攜帶數據,但是如果不攜帶數據則不消耗序號。
5、當服務器收到客戶端確認后,也進入ESTABLISHD狀態,此后雙方開始通信。
傳了SYN為啥還傳ACK?
SYN驗證發送方到接收方的通道,ACK驗證接收方到發送方的通道
四次揮手
主機發送釋放連接消息到服務器;服務器收到后進入半關閉狀態,但是還繼續接收客戶端發來的數據包(防止網絡擁塞之類的導致數據包發的慢??),服務器發送收到主機提出的釋放連接的確認消息到主機;主機收到后也變為半關閉狀態,對服務器后續發來的數據包依然會接受;服務器繼續發送釋放連接消息表示最后一個消息發完了,我要下線了;主機發送確認消息表示我知道了,拜拜。
這里,服務器收到主機的確認消息后立即下線,主機發送完需要等待一個最長數據包來回的時間(2SML時間),防止1、服務器沒收到我的確認包,服務器如果沒收到會再次發來釋放連接消息。2、這個時間保證了端到端的鏈路上沒有報文段了,擔心收到的服務器發來的消息是一個失效連接。具體過程如下:http://www.rzrgm.cn/cherry-BAIL/p/13413068.html
A: “我沒啥要說的了”
B:“我知道了”
B:我說完了
A:好的
TCP與UDP的區別
面向連接的可靠的字節流傳輸 盡最大努力交付的數據報文傳輸
TCP用于文件傳輸,發送和接收郵件和遠程登陸等場景
TCP如何保證可靠傳輸
含需要解析的URL。
本地DNS返回I
數據分割;數據包編號;校驗和;接收端丟棄重復數據;流量控制;擁塞控制;ARQ協議;超時重傳
在瀏覽器中輸入url——直到顯示主頁的過程
http://www.rzrgm.cn/davina123/p/12978114.htmlDNS解析-》IP路由尋址-》建立TCP連接-》發送http請求,服務器處理并返回結果-》關閉TCP通道-》客戶端把獲取的結果進行渲染
DNS解析
:https://blog.csdn.net/yipiankongbai/article/details/25031461主機向本地域名服務器發送UDP報文,包P地址,如果無法返回IP地址,則本地DNS向根DNS發送請求。
根DNS返回IP地址或者頂級DNS的地址給本地DNS。
本地DNS向頂級DNS發送請求,頂級返回IP地址或者權限DNS的IP地址。
IP路由尋址
:http://www.rzrgm.cn/hnrainll/archive/2011/10/20/2218506.htmlICMP協議將IP地址封裝為數據包,傳遞給IP協議。這個IP數據包的作用是當到達對方主機時,告訴主機這個數據包需要ICMP協議處理。IP協議會判斷目的IP地址是屬于遠程網絡,還是在本地網絡。這里用到ARP協議將IP地址解析為MAC地址,路由器查找該MAC地址是否有特定的轉發端口,否則就是默認網關。IP數據包打包成數據幀,進入數據鏈路層。這里的目的MAC地址不是目的主機距離源主機最近的默認網關的MAC地址。
到此,數據包封裝完成。接下來是路由器選擇協議。
數據鏈路層的路由器/交換機將數據幀中的IP數據包抽出來,向上層傳遞。路由器根據IP地址轉發數據包到對方所在的網絡中。到達后利用ARP協議找到MAC地址。
對方主機收到該數據幀,解析內容并發送回應消息。
狀態碼
1xx 信息性狀態碼 接收的請求正在處理
2xx 成功狀態碼 請求正常處理完畢
3xx 重定向狀態碼 需要進行附加操作以完成請求
4xx 客戶端錯誤狀態碼 服務器無法處理請求
5xx 服務器錯誤狀態碼 服務器處理請求出錯
Cookie與Session
Cookie主要保存用戶信息,例如客戶登錄過一次網站,第二次登陸可以由Cookie自動填寫用戶名密碼;
Session主要用來通過服務器端記錄用戶的狀態,例如同一個網站的其它頁面無需登錄可以直接瀏覽
C保存在客戶端,S保存在服務器端
http講解
HTTPS建立連接具體過程
當客戶在瀏覽器中輸入網址的并且按下回車,瀏覽器會在瀏覽器DNS緩存,本地DNS緩存,和Hosts中尋找對應的記錄,如果沒有獲取到則會請求DNS服務來獲取對應的ip,獲取到ip地址進行tcp三次握手建立連接。客戶端發送客戶端支持的ssl/tls加密協議版本,服務器端選擇一個加密協議然后返回帶公鑰的證書;客戶端驗證證書的合法性,生成對稱密鑰并用公鑰加密消息發送到服務器端;服務器端用私鑰解密獲取對稱密鑰,使用對稱密鑰加密數據;客戶端解密數據然后開始ssl通信
浙公網安備 33010602011771號