原创 淺談對TCP擁塞控制的理解

擁塞控制和流量控制不同,前者是一個全局性的過程,而後者指點對點通信量的控制。在某段時間,若對網絡中某一資源的需求超過了該資源所能提供的可用部分,網絡的性能就要變壞。這種情況就叫擁塞。 擁塞控制就是爲了防止過多的數據注入到網絡中,這樣就可

原创 TCP粘包是怎麼產生的

發送方產生粘包 採用 TCP 協議傳輸數據的客戶端與服務器經常是保持一個長連接的狀態(一次連接發一次數據不存在粘包),雙方在連接不斷開的情況下,可以一直傳輸數據。但當發送的數據包過於的小時,那麼 TCP 協議默認的會啓用 Nagle

原创 網絡中保活計時器的作用

除時間等待計時器外,TCP 還有一個保活計時器(keepalive timer)。設想這樣的場景:客戶已主動與服務器建立了 TCP 連接。但後來客戶端的主機突然發生故障。顯然,服務器以後就不能再收到客戶端發來的數據。因此,應當有措施使服

原创 Git基礎學習總結

幾個常用命令 git status 查看狀態 git branch 查看當前處於那個分支 git checkout *** 對分支的操作 git add 將文件添加到緩衝區 git commit 添加描述 一般是-m git merge

原创 MySQL中對於庫的操作

創建數據庫 語法: CREATE DATABASE [IF NOT EXISTS] db_name [create_specification [, create_specification] ...] 示例: 創建名爲db1的數據庫

原创 停止等待協議

停止等待協議是爲了實現可靠傳輸的,它的基本原理就是每發完一個分組就停止發送,等待對方確認。在收到確認後再發下一個分組;在停止等待協議中,若接收方收到重複分組,就丟棄該分組,但同時還要發送確認。主要包括以下幾種情況:無差錯情況、出現差錯情

原创 HTTPS的工作過程

1. 客戶端發送自己支持的加密規則給服務器,代表告訴服務器要進行連接了; 2. 服務器從中選出一套加密算法和 hash 算法以及自己的身份信息(地址等)以證書的形式發送給瀏覽器,證書中包含服務器信息,加密公鑰,證書的辦法機構; 3. 客

原创 域名緩存

爲了提高 DNS 查詢效率,並減輕服務器的負荷和減少因特網上的 DNS 查詢報文數量,在域名服務器中廣泛使用了高速緩存,用來存放最近查詢過的域名以及從何處獲得域名映射信息的記錄。 由於名字到地址的綁定並不經常改變,爲保持高速緩存中的內容

原创 HTTP 1.0 和 1.1、1.2 的主要變化

HTTP1.1 的主要變化: 1. HTTP1.0 經過多年發展,在 1.1 提出了改進。首先是提出了長連接,HTTP 可以在一次 TCP 連接中不斷髮送請求。 2. 然後 HTTP1.1 支持只發送 header 而不發送 bod

原创 Java和C++的異同

兩者均爲面嚮對象語言,都使用了面向對象思想(封裝,繼承,多態) 不同點如下 va爲解釋型語言,C++爲編譯型語言。java的運行過程:源代碼經過java編譯器編譯成字節碼,然後由JVM解釋執行;C++運行過程:源代碼經過編譯和鏈接後生成

原创 DNS協議的解析過程

1. 主機向本地域名服務器的查詢一般都是採用遞歸查詢。所謂遞歸查詢就是:如果主機所詢問的本地域名服務器不知道被查詢的域名的 IP 地址,那麼本地域名服務器就以 DNS 客戶的身份,向根域名服務器繼續發出查詢請求報文(即替主機繼續查詢),

原创 SSA大法好

在學一門語言的過程中,如果不看中間代碼和源碼怎麼能知曉這門語言調度器的調度過程呢? 今天我就來介紹一個用於看golang重點代碼的小工具 GOSSAFUNC=hello go build hello.go 例如這麼一個問題

原创 淺談對滑動窗口的理解

TCP利用滑動窗口實現流量控制的機制。滑動窗口是一種流量控制技術。早期的網絡通信中,通信雙方不會考慮網絡的擁擠情況直接發送數據。由於大家不知道網絡擁塞狀況,同時發送數據,導致中間節點阻塞掉包,誰也發送不了數據,所以就有了滑動窗口機制來解

原创 MySQL中對於表的操作

創建表 CREATE TABLE table_name ( field1 datatype, field2 datatype, field3 datatype ) character set 字符集 collate 校驗規則 e

原创 C++內存空間分佈

如上所示即爲典型C內存空間分佈圖,從高地址向低地址進行說明: 1.stack,即棧區,存放自動變量,以及函數調用時保存的信息。每當進行函數調用時,函數的實參和返回地址以及調用者的上下文環境會被存放在棧中;棧區由編譯器自動分配,