1. osi七層模型
第七層:應用層 資料 使用者介面,提供使用者程式「介面」。2. tcp/ip有哪幾層第六層:表示層 資料 資料的表現形式,特定功能的實現,如資料加密。
第五層:會話層 資料 允許不同機器上的使用者之間建立會話關係,如windows
第四層:傳輸層 段 實現網路不同主機上使用者程序之間的資料通訊,可靠 與不可靠的傳輸,傳輸層的錯誤檢測,流量控制等。
第一層:物理層 位元流 裝置之間位元流的傳輸,物理介面,電氣特性等。
①網路介面層
②網路層
③傳輸層
④應用層
3. arp協議的用途 及演算法、在哪一層上會使用arp ?
根據ip位址獲得mac,tcp/ip上是網路層
4.分組**演算法
(1) 從資料報的首部提取目的站的 ip 位址 d, 得出目的網路位址為 n。
(2) 若網路 n 與此路由器直接相連,則直接將資料報交付給目的站 d;否則是間接交付,執行(3)。
(3) 若路由表中有目的位址為 d 的特定主機路由,則將資料報傳送給路由表中所指明的下一跳路由器;否則,執行(4)。
(4) 若路由表中有到達網路 n 的路由,則將資料報傳送給路由表指明的下一跳路由器;否則,執行(5)。
(5) 若路由表中有乙個預設路由,則將資料報傳送給路由表中所指明的預設路由器;否則,執行(6)。
(6) 報告**分組出錯。
5. tcp與udp的概念,相互的區別及優劣。
tcp和udp都是傳輸層的協議,他們的區別主要如下:
①tcp,全名「傳輸控制協議」,是面向連線的,也就是說在傳送方和接收方在傳送資料之前,必須通過三次握手建立連線,相當於現實生活中的打**功能,必須先撥號,接通後才能說話,udp,全名「使用者資料報協議」,是無連線的,其中一方向向另一方傳送資料時不需要建立連線,直接傳送,相當於現實中的發簡訊
②tcp是可靠的傳輸協議:tcp在ip協議的基礎之上新增了序號機制,確認機制,超時重傳機制,資料校驗,從而保證傳輸的可靠性,而udp是不可靠的協議,udp協議僅僅就是在ip協議的基礎上新增了埠和差錯檢查的功能,由於ip協議時盡最大努力傳輸,從而導致了udp的不可靠性
③tcp協議是面向位元組流的,tcp將應用層傳遞下來的資料僅僅當做無結構的資料流,並不知道所傳資料流的含義,它可能將應用程式的兩個資料塊拼接到一起組成乙個段傳送。udp是面向報文的,應用程式交給udp多長的報文,udp就加上首部後傳送,如果報文過大,就會導致ip層分片,從而降低了ip層的效率。
④tcp是一對一通訊的,而udp支援一對一和一對多以及多對多通訊
6. 三次握手,四次斷開過程
第一次握手:建立連線時,客戶端傳送syn包(syn=j)到伺服器,並進入syn_send狀態,等待伺服器確認;
第二次握手:伺服器收到syn包,必須確認客戶的syn(ack=j+1),同時自己也傳送乙個syn包(syn=k),即syn+ack包,此時伺服器 進入syn_recv狀態;
第三次握手:客戶端收到伺服器的syn+ack包,向伺服器傳送確認包ack(ack=k+1),此包傳送完畢,客戶端和伺服器進入 established狀態,完成三次握手。 完成三次握手,客戶端與伺服器開始傳送資料.
7. 四次揮手過程
①客戶端執行close原語,傳送fin報文,進入狀態fin_wait 1
②伺服器收到fin報文,回應ack報文,同時進入close_wait狀態,客戶端收到確認ack報文,就進入到fin_wait 2狀態,此時乙個方向上的連線斷開。
③伺服器在傳送完資料後,執行close原語,並傳送fin報文,並進入last_ack狀態
④客戶端收到fin報文,進入time_wait狀態在等待兩倍報文最大生存時間後,進入到closed狀態。伺服器端收到ack報文後進入closed狀態
8. time_wait狀態的意義
因為我們必須要假想網路是不可靠的,你無法保證你最後傳送的
ack報文會一定被對方收到,因此對方處於
last_ack
狀態下的
socket
可能會因為超時未收到
ack報文,而重發
fin報文,所以這個
time_wait
狀態的作用就是用來重發可能丟失的
ack報文。
9.滑動視窗協議 與停止等待協議的區別
傳送視窗維持乙個連續的允許傳送的的序號,接受視窗維持乙個連續的允許接受的序號;當傳送視窗和接收視窗的大小大於1時,就可以支援同時傳送幾個幀和同時接受幾個幀
當傳送視窗和接收視窗的大小固定為
1時,滑動視窗協議退化為停等協議(
stop
-and
-wait
)。該協議規定傳送方每傳送一幀後就要停下來,等待接收方已正確接收的確認(
acknowledgement
)返回後才能繼續傳送下一幀。
選擇重傳協議
在後退n協議中,接收方若發現錯誤幀就不再接收後續的幀,即使是正確到達的幀,這顯然是一種浪費。另一種效率更高的策略是當接收方發現某幀出錯後,其後繼續送來的正確的幀雖然不能立即遞交給接收方的高層,但接收方仍可收下來,存放在乙個緩衝區中,同時要求傳送方重新傳送出錯的那一幀。一旦收到重新傳來的幀後,就可以原已存於緩衝區中的其餘幀一併按正確的順序遞交高層。這種方法稱為選擇重發(selectice repeat),選擇重發減少了浪費,但要求接收方有足夠大的緩衝區空間。
11. tcp socket程式設計流程
伺服器:
①socket函式,建立套接字檔案描述符,第一引數為協議族,如ipv4,第二引數是型別,如sock_stream,位元組流套接字,適用於tcp,第三引數一般為0,表示1第一第二引數所形成的預設協議如tcp
②bind函式,檔案描述符與相應的ip位址和埠繫結
③listen函式,socket函式建立的套接字為主動套接字,呼叫listen函式可將主動套接字變為被動套接字,即伺服器端
④accept函式,核心會為監聽套接字維護兩個佇列,一是未完成連線(三次握手)的佇列,二是完成連線的的佇列。而accept就從已完成的佇列中取出乙個已完成的連線,函式的返回引數為連線套接字,用來讀寫資料,而socket建立的為監聽套接字
⑤read函式
⑥write函式
⑦close函式
客戶端:
①socket函式,同上
②connect函式,返回連線套接字,用於讀寫
③read函式
④write函式
⑤close函式
12. epoll和select區別
問題的引出,當需要讀兩個以上的i/o的時候,如果使用阻塞式的i/o,那麼可能長時間的阻塞在乙個描述符上面,另外的描述符雖然有資料但是不能讀出來,這樣實時性不能滿足要求,大概的解決方案有以下幾種:
1.使用多程序或者多執行緒,但是這種方法會造成程式的複雜,而且對與程序與執行緒的建立維護也需要很多的開銷。(apache伺服器是用的子程序的方式,優點可以隔離使用者)
2.用乙個程序,但是使用非阻塞的i/o讀取資料,當乙個i/o不可讀的時候立刻返回,檢查下乙個是否可讀,這種形式的迴圈為輪詢(polling),這種方法比較浪費cpu時間,因為大多數時間是不可讀,但是仍花費時間不斷反覆執行read系統呼叫。
3.非同步i/o(asynchronous i/o),當乙個描述符準備好的時候用乙個訊號告訴程序,但是由於訊號個數有限,多個描述符時不適用。
4.一種較好的方式為i/o多路轉接(i/o multiplexing)(貌似也翻譯多路復用),先構造一張有關描述符的列表(epoll中為佇列),然後呼叫乙個函式,直到這些描述符中的乙個準備好時才返回,返回時告訴程序哪些i/o就緒。select和epoll這兩個機制都是多路i/o機制的解決方案,select為posix標準中的,而epoll為linux所特有的。
區別(epoll相對select優點)主要有三:
1.select的控制代碼數目受限,在linux/posix_types.h標頭檔案有這樣的宣告:#define __fd_setsize 1024 表示select最多同時監聽1024個fd。而epoll沒有,它的限制是最大的開啟檔案控制代碼數目。
2.epoll的最大好處是不會隨著fd的數目增長而降低效率,在selec中採用輪詢處理,其中的資料結構類似乙個陣列的資料結構,而epoll是維護乙個佇列,直接看佇列是不是空就可以了。epoll只會對"活躍"的socket進行操作---這是因為在核心實現中epoll是根據每個fd上面的callback函式實現的。那麼,只有"活躍"的socket才會主動的去呼叫 callback函式(把這個控制代碼加入佇列),其他idle狀態控制代碼則不會,在這點上,epoll實現了乙個"偽"aio。但是如果絕大部分的i/o都是「活躍的」,每個i/o埠使用率很高的話,epoll效率不一定比select高(可能是要維護佇列複雜)。
3.使用mmap加速核心與使用者空間的訊息傳遞。無論是select,poll還是epoll都需要核心把fd訊息通知給使用者空間,如何避免不必要的記憶體拷貝就很重要,在這點上,epoll是通過核心於使用者空間mmap同一塊記憶體實現的。
11. tcp的流量控制和擁塞控制實現原理(會畫擁塞控制的典型圖)
tcp的流量控制可通過調節接受視窗的大小來改變
28.tcp的快速重傳與快速恢復演算法。
30.阻塞方式和非阻塞方式,阻塞connect與非阻塞connect。(比較難,有興趣可以了解)
計算機網路9 計算機網路效能
1.網路效能的衡量指標 2.速率 3.頻寬 4.延遲 5.丟包率 6.時延頻寬積 7.吞吐率 網路效能的好壞可以由網路的速率 頻寬 延遲 丟包率 網路頻寬積 吞吐率等方面來判斷,下面讓我們一一詳細介紹。速率 資料率 data rate 也稱 資料傳輸速率或位元率 bit rate 指的是 單位時間 ...
計算機網路 計算機網路的效能
目錄 1.網路效能的衡量指標 2.速率 3.頻寬 4.延遲 5.丟包率 6.時延頻寬積 7.吞吐率 網路效能的好壞可以由網路的速率 頻寬 延遲 丟包率 網路頻寬積 吞吐率等方面來判斷,下面讓我們一一詳細介紹。速率 資料率 data rate 也稱 資料傳輸速率或位元率 bit rate 指的是 單位...
計算機網路學習 計算機網路效能
出自 1.網路效能的衡量指標 2.速率 3.頻寬 4.延遲 5.丟包率 6.時延頻寬積 7.吞吐率 網路效能的好壞可以由網路的速率 頻寬 延遲 丟包率 網路頻寬積 吞吐率等方面來判斷,下面讓我們一一詳細介紹。速率 資料率 data rate 也稱 資料傳輸速率或位元率 bit rate 指的是 單位...