正確答案: B C
A.在星形結構的網絡中,只能采用集中式訪問控制策略
B.典型的環形網絡有Token-Ring和FDDI等
C.總線型網絡一般采用CSMA/CD介質訪問控制協議
D.環形網絡常用的訪問控制方法是基於令牌的訪問控制,是一種集中式訪問控制技術
解析:A。星型拓撲結構采用CSMA/CD(載波監聽多點接入/碰撞檢測)。
D改為:環形網絡常用的訪問控制方法是基於令牌的訪問控制,是一種分布式訪問控制技術。
2、IP地址分類:
IPV4簡單粗暴地把IP地址分為五類。分類方法如下圖所示:
也就是說,分為以下幾類:
A: 0.0.0.0-127.255.255,其中段0和127不可用
B: 128.0.0.0-191.255.255.255
C: 192.0.0.0-223.255.255.255
D: 224.0.0.0-239.255.255.255
E: 240.0.0.0-255.255.255.255,其中段255不可用
3、局域網體系結構中 () 被划分成MAC和LLC兩個子層。
正確答案: B
A.物理層
B.數據鏈路層
C.網絡層
D.運輸層
局域網體系結構分為3層:物理層、媒體訪問控制(MAC)子層和邏輯鏈路控制(LLC)子層(實際上仍是兩層,即:物理層和數據鏈路層)。
下面分別介紹它們各自的主要作用。
1.物理層 局域網體系結構中的物理層和計算機網絡OSI參考模型中物理層的功能一樣,主要處理物理鏈路上傳輸的比特流,實現比特流的傳輸與接收、同步前序的產生和刪除;建立、維護、撤銷物理連接,處理機械、電氣和過程的特性。
2.媒體訪問控制MAC子層 MAC子層負責介質訪問控制機制的實現,即處理局域網中各站點對共享通信介質的爭用問題,不同類型的局域網通常使用不同的介質訪問控制協議,另外MAC子層還涉及局域網中的物理尋址。
局域網體系結構中的LLC子層和MAC子層共同完成類似於OSI參考模型中數據鏈路層的功能,將數據組成幀進行傳輸,並對數據幀進行順序控制、差錯控制和流量控制,使不可靠的鏈路變為可靠的鏈路。
3.邏輯鏈路控制LLC子層 LLC子層負責屏蔽掉MAC子層的不同實現,將其變成統一的LLC界面,從而向網絡層提供一致的服務。
一層(物理層):網卡、集線器、中繼器 二層(數據鏈路層):網橋、交換機 三層(網絡層):路由器 傳輸層、應用層:網關。
正確答案: C
-
304
-
404
-
302
-
400
解析:304未修改(表示客戶機緩存的版本是最新的,客戶機應該繼續使用它。)
404找不到改頁面
302暫時重定向
400代表客戶端發起的請求不符合服務器對請求的某些限制,或者請求本身存在一定的錯誤。
1.1 OSI 7層模型 與 TCP/IP 四層模型
OSI 7層模型
-
物理層:負責 0,1 比特流與電壓高低、光的閃滅之間的互換
設備: 中繼器:將電纜傳過來的電信號與光信號經中繼器的波形調整與放大傳給另一個。
-
數據鏈路層: 負責數據幀與比特流的轉換
設備: 網橋:通過 MAC 地址連接兩個網絡。通過CRC(cyclic redundancy check 循環冗余校驗)的方式對數據鏈路層中的 FCS(frame check sequence) 驗證。從而確保數據的完整性。
-
網絡層:負責尋址與路由的選擇
設備: 路由器:根據IP 地址進行處理。
- 傳輸層:管理兩個節點之間數據的傳輸。確保數據被可靠的傳送到目標地址,檢測是否有數據丟失。
- 會話層:負責建立和斷開通信連接
- 表示層:負責數據格式的轉換
-
應用層:針對特定應用的協議
4-7層交換機 網關:負責從傳輸層到應用層的數據進行轉換和轉發的設備。
TCP/IP 四層模型
包為描述數據的全能型單位。
-
網絡接口層
單位:幀
相關技術:- MAC 地址: 使用網卡(NIC) , 有唯一性
- 共享介質型網絡:半雙工通信,只發送或只接收的方式
1、爭用方式(CSMA (carrier sense multiple access) - 載波監聽多路訪問)
2、令牌傳遞方式
- 非共享介質型網絡:雙工通信
每個站直連交換機,由交換機負責轉發數據幀。 - 以太網幀格式: MAC(介質訪問控制層)+LLC(邏輯鏈路控制層)+SNAP+IP+TCP+上層數據+FCS
-
網絡層
協議:IP / ICMP / ARP(Address Resolution Protocol) / NAT / DHCP / DNS
相關技術:- Hop : 數據鏈路層以下分層的傳輸數據幀的一個區間。是主機或路由器網卡不經其他路由器而能直接到達的對象之間的一個區間。
- MTU (Maximum Transmission Unit): 最大傳輸單位
- ARP : 通過 IP 地址 得到 MAC 地址 -- RARP : MAC 得到 IP
- ICMP :確認網絡的正常使用,以及異常的排查
類型3 :目標不可達
類型5 :重定向
類型11 :超時
類型0 :向對方發送消息
類型8 :接收對方發送的消息
ping 命令就是 類型0、8 。
TTL Time To Live 防止IP 包無限制的傳遞下去 - NAT(Network Adddress Translator) : 由本地網絡中的私有地址轉換為全局 IP 地址。
- DNS :域名命名系統 -- 使用 TCP 53號端口
- DHCP :動態域名控制協議
- 路由控制
- 傳輸層
協議:TCP / UDP -
應用層
協議:WWW / HTTP / MIME,SMTP、POP、IMPA / FTP / TELNET - SSH / SNMP
相關技術:-
FTP :用兩條 TCP 連接:
1、數據控制 , 使用 21號端口 2、數據傳輸 , 使用 20號端口 3、狀態碼: 1-提供信息,2-連接管理,3-用戶相關,4-錯誤,5-文件系統
-
HTTP : 使用 80 端口
1、 主要命令:GET.PUT.POST.DELETE.OPTIONS.HEAD.TRACE 2、 狀態碼: 1-提供信息,2-肯定應答,3-重寫向請求,4-客戶端請求內容錯誤,5-服務器錯誤
- HTTPS : 使用 443 端口
-
1.TCP/UDP區別?
1.1 TCP面向連接(如打電話要先撥號建立連接);UDP是無連接的,即發送數據之前不需要建立連接
1.2 TCP提供可靠的服務。也就是說,通過TCP連接傳送的數據,無差錯,不丟失,不重復,且按序到達;UDP盡最大努力交付,即不保證可靠交付
Tcp通過校驗和,重傳控制,序號標識,滑動窗口、確認應答實現可靠傳輸。如丟包時的重發控制,還可以對次序亂掉的分包進行順序控制。
1.3 UDP具有較好的實時性,工作效率比TCP高,適用於對高速傳輸和實時性有較高的通信或廣播通信。
1.4 每一條TCP連接只能是點到點的;UDP支持一對一,一對多,多對一和多對多的交互通信
1.5 TCP對系統資源要求較多,UDP對系統資源要求較少。
2. 擁塞控制?
在某段時間內,對網絡中的資源(鏈路容量,交換節點中的緩存和處理機等)需求大於可用的,就會造成擁塞。
擁塞控制就是防止過多的數據注入到網絡中造成擁塞,是路由器或鏈路不會過載。
擁塞控制有四種算法:1.慢開始;2擁塞避免;3.快重傳和快恢復算法;4快恢復算法和快重傳算法配合使用。
擁塞控制和流量控制的區別:
擁塞控制是一個全局性的過程,涉及所有主機和路由器,以及其他因素。
流量控制是端到端的,發送端和接收端,需要做的是抑制發送端的發送速率,以便來的及接收。
3. 流量控制?
TCP的流量控制是利用滑動窗口機制實現的,接收方在返回的ACK中會包含自己的接收窗口的大小,以控制發送方的數據發送。
TCP的報頭:
1. 源端口號:表示發送端端口號,字段長為16位。
2. 目標端口號:表示接收端口號,字段長為16位。
3. 序列號:表示發送數據的位置,字段長為32位。每發送一次數據,就累加一次該數據字節數的大小。
注意:序列號不會從0或1開始,而是在建立連接時由計算機生成的一個隨機數作為其初始值,通過SYN包發送給接收端主機。然后再將每轉發過去的字節數累加到初始值上表示數據的位置。
4. 確認應答號:表示下一次應該收到的數據的序列號,字段長為32字節。發送端收到這個確認應答以后可以認為在這個序號以前的數據都已經被正常接收。
序號的優點:
(1)保證報文按序到達。
(2)保證可靠性。
(3)保證效率。
(4)精准的報告哪些報文已經收到,哪些需要重傳。
- 首部長度:該字段長度為4位,單位為4字節(32位)。TCP首部長度不包括選項的話,是20個字節,20/4=5,5的二進制序列:0101,報頭長度也叫數據偏移,所以該字段可以設置為5,選項字段最大的是40字節,所以,TCP首部長度為最大為20+40=60字節,該字段可以設置的最大長度為60/4=15。
- 保留:該字段主要是為了以后擴展時使用,其長度為4位。一般設置為0,即使收到的包在該字段不為0,此包也不會丟棄。
- 控制位:字段長為6,每一位從左到右分別為:URG、ACK、PSH、RST、SYN、FIN。當對應的值為1,表示有具體含義。
字段 | 含義 |
---|---|
URG | 緊急指針是否有效。為1,表示某一位需要被優先處理。 |
ACK | 確認號是否有效,一般置為1。 |
PSH | 提示接收端應用程序立即從TCP緩沖區把數據讀走。 |
RST | 對方要求重新建立連接,復位。 |
SYN | 請求建立連接,並在其序列號的字段進行序列號的初始值設定。建立連接,設置為1. |
FIN | 希望斷開連接。 |
8. 窗口大小:接收緩沖區的大小,TCP不允許發送超過此處所示大小的數據。
9. 校驗和:發送端填充,CRC校驗,接收校驗不通過,則認為數據有問題。和UDP的區別是,UDP校驗的是數據本身,TCP校驗的不僅包含TCP首部,而且包含TCP數據部分。
10. 緊急指針:只有在URG為1時有效,該字段為1表示本報文的段中的緊急數據的指針。
11. 選項:用於提高TCP的傳輸性能。需要根據首部長度進行控制,其最大長度為40字節。
我們在着重講一下在三次握手和四次揮手中的用到序列號、確認號及標志位。
1. 序列號seq
占4個字節,用來標記數據段的順序,TCP把連接中發送的所有數據字節都編上一個序號,第一個字節的編號由本地隨機產生,給字節編上序號后,就給每一個報文段指派一個序號,序列號seq就是這個報文段中的第一個字節的數據編號。
2. 確認號ack
占4個字節,期待收到對方下一個報文段的第一個數據字節的序號,序列號表示報文段攜帶數據的第一個字節的編號,而確認號指的是期望接受到下一個字節的編號,因此擋牆報文段最后一個字節的編號+1即是確認號。
3. 確認ACK
占1個比特位,僅當ACK=1,確認號字段才有效。ACK=0,確認號無效。
4. 同步SYN
連接建立時用於同步序號。當SYN=1,ACK=0表示:這是一個連接請求報文段。若同意連接,則在響應報文段中使用SYN=1,ACK=1.因此,SYN=1表示這是一個連接請求,或連接接收報文,SYN這個標志位只有在TCP建立連接才會被置為1,握手完成后SYN標志位被置為0.
5. 終止FIN
用來釋放一個
TCP三次握手以及四次揮手的過程
三次握手的過程
step1:第一次握手
建立連接時,客戶端發送SYN包到服務器,其中包含客戶端的初始序號seq=x,並進入SYN_SENT狀態,等待服務器確認。(其中,SYN=1,ACK=0,表示這是一個TCP連接請求數據報文;序號seq=x,表明傳輸數據時的第一個數據字節的序號是x)。
step2:第二次握手
服務器收到請求后,必須確認客戶的數據包。同時自己也發送一個SYN包,即SYN+ACK包,此時服務器進入SYN_RECV狀態。(其中確認報文段中,標識位SYN=1,ACK=1,表示這是一個TCP連接響應數據報文,並含服務端的初始序號seq(服務器)=y,以及服務器對客戶端初始序號的確認號ack(服務器)=seq(客戶端)+1=x+1)。
step3:第三次握手
客戶端收到服務器的SYN+ACK包,向服務器發送一個序列號(seq=x+1),確認號為ack(客戶端)=y+1,此包發送完畢,客戶端和服務器進入ESTAB_LISHED(TCP連接成功)狀態,完成三次握手。
未連接隊列
在三次握手協議中,服務器維護一個未連接隊列,該隊列為每個客戶端的SYN包(syn=j)開設一個條目,該條目表明服務器已收到SYN包,並向客戶發出確認,正在等待客戶的確認包時,刪除該條目,服務器進入ESTAB_LISHED狀態。
常見面試題:
1.為什么需要三次握手,兩次不可以嗎?或者四次、五次可以嗎?
我們來分析一種特殊情況,假設客戶端請求建立連接,發給服務器SYN包等待服務器確認,服務器收到確認后,如果是兩次握手,假設服務器給客戶端在第二次握手時發送數據,數據從服務器發出,服務器認為連接已經建立,但在發送數據的過程中數據丟失,客戶端認為連接沒有建立,會進行重傳。假設每次發送的數據一直在丟失,客戶端一直SYN,服務器就會產生多個無效連接,占用資源,這個時候服務器可能會掛掉。這個現象就是我們聽過的“SYN的洪水攻擊”。
總結:第三次握手是為了防止:如果客戶端遲遲沒有收到服務器返回確認報文,這時會放棄連接,重新啟動一條連接請求,但問題是:服務器不知道客戶端沒有收到,所以他會收到兩個連接,浪費連接開銷。如果每次都是這樣,就會浪費多個連接開銷。
四次揮手過程(關閉客戶端到服務器的連接)
step1:第一次揮手
首先,客戶端發送一個FIN,用來關閉客戶端到服務器的數據傳送,然后等待服務器的確認。其中終止標志位FIN=1,序列號seq=u。
step2:第二次揮手
服務器收到這個FIN,它發送一個ACK,確認ack為收到的序號加一。
step3:第三次揮手
關閉服務器到客戶端的連接,發送一個FIN給客戶端。
step4:第四次揮手
客戶端收到FIN后,並發回一個ACK報文確認,並將確認序號seq設置為收到序號加一。首先進行關閉的一方將執行主動關閉,而另一方執行被動關閉。
客戶端發送FIN后,進入終止等待狀態,服務器收到客戶端連接釋放報文段后,就立即給客戶端發送確認,服務器就進入CLOSE_WAIT狀態,此時TCP服務器進程就通知高層應用進程,因而從客戶端到服務器的連接就釋放了。此時是“半關閉狀態”,即客戶端不可以發送給服務器,服務器可以發送給客戶端。
此時,如果服務器沒有數據報發送給客戶端,其應用程序就通知TCP釋放連接,然后發送給客戶端連接釋放數據報,並等待確認。客戶端發送確認后,進入TIME_WAIT狀態,但是此時TCP連接還沒有釋放,然后經過等待計時器設置的2MSL后,才進入到CLOSE狀態。
2.為什么需要2MSL時間?
首先,MSL即Maximum Segment Lifetime,就是最大報文生存時間,是任何報文在網絡上的存在的最長時間,超過這個時間報文將被丟棄。《TCP/IP詳解》中是這樣描述的:MSL是任何報文段被丟棄前在網絡內的最長時間。RFC 793中規定MSL為2分鍾,實際應用中常用的是30秒、1分鍾、2分鍾等。
TCP的TIME_WAIT需要等待2MSL,當TCP的一端發起主動關閉,三次揮手完成后發送第四次揮手的ACK包后就進入這個狀態,等待2MSL時間主要目的是:防止最后一個ACK包對方沒有收到,那么對方在超時后將重發第三次握手的FIN包,主動關閉端接到重發的FIN包后可以再發一個ACK應答包。在TIME_WAIT狀態時兩端的端口不能使用,要等到2MSL時間結束才可以繼續使用。當連接處於2MSL等待階段時任何遲到的報文段都將被丟棄。
3.為什么是四次揮手,而不是三次或是五次、六次?
雙方關閉連接要經過雙方都同意。所以,首先是客服端給服務器發送FIN,要求關閉連接,服務器收到后會發送一個ACK進行確認。服務器然后再發送一個FIN,客戶端發送ACK確認,並進入TIME_WAIT狀態。等待2MSL后自動關閉。
總結:
(1)為了保證客戶端發送的最后一個ACK報文段能夠到達服務器。即最后一個確認報文可能丟失,服務器會超時重傳,然后服務器發送FIN請求關閉連接,客戶端發送ACK確認。一個來回是兩個報文生命周期。
如果沒有等待時間,發送完確認報文段就立即釋放連接的話,服務器就無法重傳,因此也就收不到確認,就無法按步驟進入CLOSE狀態,即必須收到確認才能close。
(2)防止已經失效的連接請求報文出現在連接中。經過2MSL,在這個連續持續的時間內,產生的所有報文段就可以都從網絡消失。