1.tcp粘包:tcp是面向連線、流式傳送的,沒有明確的邊界定義。他有乙個緩衝區,每過一段時間或者快取滿了就傳送出去,造成一次傳送的資料可能是多個包或者包的一部分,這就是傳送端的粘包。接收端的粘包指應用程式沒有及時處理緩衝區中的資料,後續到達的資料繼續放到快取中。
解決方法:
a.對傳送的資料劃分邊界,採用「資料長度+實際資料」的格式來傳送。
b.包尾新增特殊分隔符
c.報文大小固定不變,不夠空格補全。
粘包情況是無法絕對避免的,因為網路環境很複雜。
封包:給資料加上包頭,用來劃分資料邊界。
拆包:根據包頭定義的資料邊界,分割成多個包。
2.udp丟包:一種無連線的傳輸協議,優點:速度快,缺點是:資料報無序並且容易丟失。
丟包原因:
a.包傳送的頻率太快 避免複雜操作(多執行緒**機制)
b.接收端處理時間過長 及時接收資料
c.傳送的包太大 控制報文大小
3.資料報:tcp/ip協議通訊傳輸中的資料單位。
資料報主要由「目的ip位址」、「源ip位址」、「淨載資料」等部分構成,包括包頭和包體,包頭是固定長度,包體的長度不定,各字段長度固定,雙方的請求資料報和應答資料報的包頭結構是一致的,不同的是包體的定義。tcp/ip協議是工作在osi模型第三層(網路層)、第四層(傳輸層)上的,而幀是工作在第二層(資料鏈路層)。上一層的內容由下一層的內容來傳輸,所以在區域網中,「包」是包含在「幀」裡的。
5.位元組:計量儲存容量的一種計量單位。
資料儲存是以「位元組」(byte)為單位,資料傳輸是以大多是以「位」(bit,又名「位元」)為單位,乙個位就代表乙個0或1(即二進位制),每8個位(bit,簡寫為b)組成乙個位元組(byte,簡寫為b),是最小一級的資訊單位。1個位元組等於8位二進位制。
6.位運算
按位與&:如果兩個相應的二進位數為1,剛該位的結果為 1 否則為 0 。
按位或|:兩個相應的二進位中只要有乙個為 1,該位的結果就為 1。
xor異或^:若參加運算的兩個二進位同號,則結果為0,異號則為1。
取反 ~ :用來對乙個二進位制按位取反。
左移運算子<<:用來將乙個數各二進位全部左移若干位。
高位左移後溢位,捨棄不起作用。
左移一位相當於該數乘以2。但些結論只適用於該數左移時被溢位捨棄的高位中不包含1 的情況。
左移比乘法運算快得多,有些c編譯程式自動將乘2的運算用左移來實現。
右移運算子》:用來將乙個數各二進位全部右移若干位。
右移一位相當於除以 2 ,右移 n 位相當於除於 2^n。
在右移時,需要注意符號位問題。對無符號數,右移時左邊高位移入 0。對於有符號的值,如果原來符號位為 0 (該數為正),則左邊也是移入 0,如果上例表示的那樣,如果符號位原來為 1(該數為負),則左邊移入的 0 還是 1 ,要取決於所用的計算機系統。移入 0 稱為 邏輯右移,即簡單右移。移入 1 稱為 算術右移。
不同長度的資料進行位運算:如果兩個資料長度不同(例如 long 型和 int 型)進行位運算時(如 a & b 而 a 為 long型,b 為 int 型),系統會將二者按右端對齊。如果 b 為正數,則左側 16 位補滿 0。若 b 為負數,左端應補滿 1。如果 b 為無符號整數型,則左側補滿 0。
超文字傳輸協議,是一種建立在tcp上的無狀態連線,整個基本的工作流程是客戶端傳送乙個http請求,說明客戶端想要訪問的資源和請求的動作,服務端收到請求之後,服務端開始處理請求,並根據請求做出相應的動作訪問伺服器資源,最後通過傳送http響應把結果返回給客戶端。
websocket
websocket 協議本質上是乙個基於 tcp 的協議。
websocket 使用 ws 或 wss 的統一資源標誌符,類似於 https,其中 wss 表示在 tls 之上的 websocket。預設情況下,websocket 協議使用 80 埠;執行在 tls 之上時,預設使用 443 埠。
為什麼需要websocket?http 協議是一種無狀態的、無連線的、單向的應用層協議。http 協議無法實現伺服器主動向客戶端發起訊息。websocket 連線允許客戶端和伺服器之間進行全雙工通訊,以便任一方都可以通過建立的連線將資料推送到另一端。websocket是是 http 協議上的一種補充。websocket 只需要建立一次連線,就可以一直保持連線狀態。這相比於輪詢方式的不停建立連線顯然效率要大大提高。
tcp和udp使用總結
tcp tcp 是面向連線的,並且是一種可靠的協議,在基於 tcp 進行通訊時,通訊雙方需要先建立乙個 tcp 連線,建立連線需要經過三次握手,握手成功才可以進行通訊 1 基於連線的,可靠性高 2 有連線過程 3次握手過程 會有延時,實時性較差,3 傳輸相同的資料時,tcp首部開銷20位元組 udp...
TCP和UDP的總結
近期正在準備找工作,看了n多筆試題,發現考網路真的還不少,網路中尤其tcp,udp等知識點考的較多,此文做個總結,方便以後查閱,閱讀者歡迎找毛病 tcp實現可靠性傳輸,通過三次握手機制,這一機制保證校驗了資料,保證了他的可靠性。udp沒有三次握手機制,所以不可靠。不過udp的速度是tcp比不了的,而...
TCP和UDP對比總結
傳輸層提供的功能如下 傳輸層提供了兩個傳輸協議 tcp tcp 提供面向連線的服務,在傳送資料之前必須要建立連線,並在核心中為該連線維持一些必要的資料結構,比如連線的狀態 讀寫緩衝區以及諸多定時器等。待資料傳送結束後要釋放連線。由於 tcp 提供可靠的傳輸服務,因此不可避免地增加了許多開銷,如序號 ...