並不基礎的基礎——計算機網路筆記
目錄
tcp協議和udp協議有什麼區別?
傳輸控制協議 tcp(transmission control protocol)是面向連線的,提供可靠交付,有流量控制,擁塞控制,提供全雙工通訊,面向位元組流,每一條 tcp 連線只能是點對點的(一對一)
使用者資料報協議 udp(user datagram protocol)是無連線的,盡最大可能交付,沒有擁塞控制,面向報文,支援一對
一、一對多、多對一和多對多的互動通訊
阿呆:為什麼說udp是不可靠的,那什麼情況下udp會丟失資料?
阿強:udp丟包,不外乎傳送方出了問題,或者接收方除了問題。在傳送方,主要出問題的原因在於傳送的報文超過了接收方緩衝區可接收的資料量,簡單說就是一次寄了太多東西,買家家裡放不下。那這裡面又分為兩種,一種是寄東西的頻率太快了,另一種是寄的東西太大了,這兩種方式都會導致買家,也就是接收方的緩衝區溢位。在接受方,主要出問題的原因可能是接收方的socket未開啟監聽,簡單說就是家裡沒人開門,買的東西都送不進去。解決辦法也簡單,傳送頻率過快的時候,就sleep一下執行緒,控制一下頻率;傳送的包太大時,要不就增加家裡的容積(緩衝區),要不就把包裹切分。
總結udp的丟包原因:
1、傳送的包過大
2、傳送的頻率過高
3、接收方監聽介面沒有開啟
解決辦法:
1、調整接收方緩衝區大小
2、傳送執行緒適當休眠,降低頻率
阿呆:那啥是流量控制?
阿強:tcp協議的傳送端是個急性子的年輕人,總想著快點把手頭的資料發完下班回家,但接收端老大爺家裡也不是無限大的,一次發了太多東西過來,接收方就會被撐爆。為了能忙得過來,所以老大爺會把自己家裡還剩餘多少空間(緩衝區)用tcp報文段的方式發給傳送方,傳送方看到接收方發過來的視窗,就知道老大爺還能接受多少包裹。這個傳送過去的剩餘緩衝區大小,就是所謂的「滑動視窗」,可以用來進行流量控制。
阿呆:那這不也得等大爺回應了才知道嗎?那我要是一開始就發一大堆東西過去,不得把大爺逼瘋?
阿強:嘿嘿,你算是問到點子上了
阿呆:那咋辦嘛?
阿強:別急,剛剛不還說了乙個叫擁塞視窗的東西嗎?就是用來幹這事的。剛開始的時候啊,這個擁塞視窗很小,先發點零零碎碎的小東西給大爺,然後每接到一次大爺的反饋,就得寸進尺,變本加厲,以指數級的資料增長,這樣速度就能很快提公升啦
阿呆:那也得有個限度吧?大爺都老胳膊老腿的了
阿強:是啊,所以擁塞視窗會設定乙個閾值,當發現老大爺忙不過來的時候(丟包),就趕緊把擁塞視窗重新設為1,並把閾值減半,這樣下次大爺就不會再手忙腳亂啦
阿呆:那擁塞視窗和滑動視窗不一樣大的時候呢,聽誰的?
阿強:誰小聽誰的
阿呆:???
阿強:嘿嘿嘿(#^.^#)
總結滑動視窗:接收端發給傳送端的緩衝區剩餘大小
。通過這個視窗可以限制傳送端的資料傳送量,從而實現流量控制
擁塞視窗:為了避免tcp啟動時傳送的資料量太大,設定乙個初始值為1的擁塞視窗,每次傳送成功後以指數倍增。如果出現丟包,則將閾值減半,視窗置1,直到能夠穩定傳送不丟包
傳送量為滑動視窗和擁塞視窗中的最小值
阿呆:你說了這麼多,我還是沒懂tcp協議有啥用?
阿強:這樣,給你說個例子吧。ping過ip嗎?
阿呆:看你ping過
阿強:... ...
阿呆:... ...
阿強:ping命令用到的就是tcp/ip協議族裡面的icmp協議,用於在ip主機、路由器之間傳遞控制訊息
總結ping命令就是tcp的乙個應用
計算機網路概述 計算機網路基礎
邊緣部分 核心部分 報文交換 報文一般比分組長,報文交換的時延較長。對於廣域網區域網新的理解 不單單從網路覆蓋範圍區分區域網和廣域網,而是在應用技術方面進行區分,應用了區域網技術就是區域網,應用了廣域網技術就是廣域網。區域網一般是自己購買裝置,自己維護,寬頻固定。廣域網 花錢買服務,花錢買頻寬,效能...
計算機網路基礎
計算機網路的基本目的是實現資料通訊和資源共享,計算機網路的主要功能歸結為 1.資源共享2.資料通訊3.提高計算機的可靠性和可用性4.分布式處理 資料通訊 是計算機或其他數字終端裝置之間通過通訊通道進行的資料交換。影響資料通訊的質量的兩個最主要指標 1.資料傳輸速率 2.誤位元速率 表示一段之間內接收...
計算機網路基礎
網路通訊中的阻塞模式和非阻塞模式 主要是用在網路傳輸中 阻塞模式是 每乙個tcp套接字有乙個傳送緩衝區,當應用程式呼叫write操作的時候,核心從應用程序的緩衝區中複製資料到套接字的傳送緩衝區。如果傳送緩衝區無法容納應用程式的所有資料,應用程式將會被掛起,核心將不會從write系統呼叫返回,知道應用...