文章引用了 : https://www.cnblogs.com/Andya/p/7272462.html
wireshark 用來抓包的軟體
1.OSI 開放式網際網路參考模型(7層)
實體層,資料鍊路層,網絡層(IP),傳輸層(TCP/UDP),
會話層,表示層,應用層
OSI模型隻是一個參考的标準,并沒有實作
OSI的實作是“TCP/IP”
2.“TCP/IP”協定 分四層
3.IP 協定 網絡層 不可靠傳輸
4.TCP 協定 傳輸層 面向連接配接的、可靠的、基于位元組流的傳輸層通信協定
6個标志位:
URG-緊急指針有效
ACK-确認序号有效
PSH-接收方應盡快将這個封包交給應用層
RST-連接配接重置
SYN-同步序号用來發起一個連接配接
FIN-終止一個連接配接
(IP是用來标示唯一的主機,
TCP中的端口号用來标示唯一的程序)
5.tcp三次握手
第一次:A(SYN-SENT) ----> B(LISTEN) SYN=1,seq=x,
第二次: B (SYN-RCVD) ----> A SYN=1,ACK=1,seq=y,ack=x+1
第三次:A(ESTABLISHED) ----> B(ESTABLISHED) ACK=1,seq=x+1,ack=y+1
ACK是用來确認是否接收到了資料
Seq 是用來排序,用來最後将tcp傳輸的包進行排序,
同時防止丢包後,重新發缺少序号的包

server 收到 client 的SYN,回複SYN-ACK的後,為再收到client 發來的 ACK包,sever則會不斷重試請求直至逾時,liunx預設等待是63秒才斷開連接配接,差不多5次
會造成 SYN Flood的防護措施
SYN隊列滿了後,通過tcp_syncookies參數回發SYN Cookie
若為正常連接配接則Client會回發SYN Cookie,直接建立連接配接
建立連接配接後,client出現故障:
保活機制(keep alive time)
1.向對方發送保活探測封包,如果未收到響應則繼續發送
嘗試次數達到保活探測數仍未響應則應中斷連接配接。
TCP 四次揮手
第一次: A---->B FIN=1,seq=u
第二次: B---->A ACK=1,seq=v,ack=u+1
第三次: B---->A FIN=1,ACK=1,seq=w,ack=u+1
第四次: A---->B ACK=1,seq=u+1,ack=w+1
為什麼會有TIME_WAIT狀态
確定有足夠的時間讓對方收到ACK包
避免新舊連接配接混淆
伺服器出現大量CLOSE_WAIT狀态的原因
對方關閉socket連接配接,我方忙于讀或寫,沒有
及時關閉連接配接
檢查代碼,特别是釋放資源的代碼
檢查配置,特别是處理請求的線程配置
linux 指令:netstat
UDP協定
沒有報錯重傳,滑動視窗
面向非連接配接
不維護連接配接狀态,支援同時向多個用戶端傳輸相同的消息
資料包報頭隻有8個位元組,額外開銷較小
吞吐量隻受限于資料生成速率、傳輸速率以及機器性能
不拆分或者合并封包
TCP與UDP 差別
面向連接配接 VS 無連接配接
可靠性
有序性
速度
量級
TCP的滑動視窗
RTT 和 RTO
RTT:發送一個資料包到收到對應的ACK,所花的時間
RTO:重傳時間間隔,需要根據RTT進行計算
TCP使用滑動視窗做流量控制與亂序重排
保證TCP的可靠性
保證TCP的流控特性
可靠性是通過滑動視窗的确認重傳機制
HTTP:
http協定的主要特點:
支援客戶/伺服器模式
簡單快速
靈活
無連接配接
無狀态
在浏覽器位址欄輸入url,之後經曆的流程
1.DNS解析,根據URL 從 浏覽器緩存,系統緩存,路由緩存等等找IP位址
2.根據IP位址和對應的端口 建立TCP
3.發送HTTP請求
4.伺服器處理請求并傳回HTTP封包
5.浏覽器解析渲染頁面
HTTP狀态碼
1xx : 訓示資訊-表示請求已接受,繼續處理
2xx :成功--表示請求已被成功接收、了解、接受
3xx : 重定向--要完成請求必須進行更進一步的操作
4xx :用戶端錯誤--請求有文法錯誤或請求無法實作
5xx :伺服器端錯誤--伺服器未能實作合法的請求
200 成功
400 用戶端請求有文法問題
401 請求未經授權
404 沒找到頁面
403 伺服器接到請求,但拒絕服務
500 伺服器問題
503 伺服器目前不能處理用戶端請求,一段時間後才能回複正常
因為http是無狀态的是以要引用
cookie 和 session
cookie 是由伺服器發給用戶端的特殊資訊,以文本
的形式存放在用戶端。
用戶端再次請求的時候,會把Cookie回發
伺服器接收到後,會解析Cookie生成與用戶端
相對應的内容
session 伺服器端的機制,在伺服器上儲存的資訊
解析用戶端請求并操作session id,按需儲存狀态資訊
實作方式:使用cookie 或url 實作 jsessionID
cookie 更快 session 更安全
http 與 https 的差別
https 中包含了
SSL :
為網絡通信提供安全及資料完整性的一種安全協定
是作業系統對外的API
采用身份驗證 和 資料加密 保證安全
https資料的傳輸流程:
浏覽器将支援的加密算法資訊發送給伺服器
伺服器選擇一套浏覽器支援的加密算法,以證書的形式回發浏覽器
浏覽器驗證證書的合法性,并結合證書中的公鑰加密
資訊發送給伺服器
伺服器使用私鑰解密資訊,驗證哈希,加密響應消息
回發浏覽器
浏覽器解密響應消息,并對消息進行驗真,之後
進行加密互動資料
https 需要到CA申請證書,Http 不需要
https 密文傳輸 , http 明文傳輸
https 預設使用443端口 http 預設使用80端口
socket
ip+端口 唯一标示網絡中的程序