有那么一些零碎的小知識點,偶爾很迷惑,偶爾被忽略,偶然卻發現它們很重要,也是各大筆試和面試高頻出現考點。這段時間正好在溫習這些,就整理在這里,一起學習一起提高!后面還會繼續補充。
——前言
1.TCP的三次握手四次揮手
第一次握手:Client將標志位SYN置為1,隨機產生一個值seq=J,並將該數據包發送給Server,Client進入SYN_SENT狀態,等待Server確認。
第二次握手:Server收到數據包后由標志位SYN=1知道Client請求建立連接,Server將標志位SYN和ACK都置為1,ack=J+1,隨機產生一個值seq=K,並將該數據包發送給Client以確認連接請求,Server進入SYN_RCVD狀態。
第三次握手:Client收到確認后,檢查ack是否為J+1,ACK是否為1,如果正確則將標志位ACK置為1,ack=K+1,並將該數據包發送給Server,Server檢查ack是否為K+1,ACK是否為1,如果正確則連接建立成功,Client和Server進入ESTABLISHED狀態,完成三次握手,隨后Client與Server之間可以開始傳輸數據了。

第一次揮手:Client發送一個FIN,用來關閉Client到Server的數據傳送,Client進入FIN_WAIT_1狀態。
第二次揮手:Server收到FIN后,發送一個ACK給Client,確認序號為收到序號+1(與SYN相同,一個FIN占用一個序號),Server進入CLOSE_WAIT狀態。
第三次揮手:Server發送一個FIN,用來關閉Server到Client的數據傳送,Server進入LAST_ACK狀態。
第四次揮手:Client收到FIN后,Client進入TIME_WAIT狀態,接着發送一個ACK給Server,確認序號為收到序號+1,Server進入CLOSED狀態,完成四次揮手。

實際中還會出現同時發起主動關閉的情況,即同時揮手,示意圖如下:

TIME_WAIT狀態后需等待2MSL(最大報文段生存時間)才能返回到CLOSE狀態,因為我們必須假想網絡是不可靠的,有可以最后一個ACK丟失。所以TIME_WAIT狀態就是用來重發可能丟失的ACK報文。
2.TCP的滑動窗口,流量控制和擁塞控制,快重傳和快恢復,超時重傳
TCP協議作為一個可靠的面向流的傳輸協議,其可靠性和流量控制由滑動窗口協議保證,而擁塞控制則由控制窗口結合一系列的控制算法實現。
滑動窗口協議:1. “窗口”對應的是一段可以被發送者發送的字節序列,其連續的范圍稱之為“窗口”;2. “滑動”則是指這段“允許發送的范圍”是可以隨着發送的過程而變化的,方式就是按順序“滑動”。
流量控制,主要是接收方傳遞信息給發送方,使其不要發送數據太快,是一種端到端的控制。主要的方式就是返回的ACK中會包含自己的接收窗口的大小,並且利用大小來控制發送方的數據發送。
擁塞控制就是防止過多的數據注入到網絡中,這樣可以使網絡中的路由器或鏈路不致過載。常用的方法就是:(1)慢開始、擁塞控制(2)快重傳、快恢復。
數據在傳輸時不僅一個窗口協議,還有一個擁塞窗口來控制數據的流量,使得數據不會一下子都跑到網路中引起“擁塞”。擁塞窗口最初使用指數增長的速度來增加自身的窗口,直到發生超時重傳,再利用擁塞避免算法和慢啟動門限進行一次微調。
擁塞避免算法就是:每經過一個往返時間RTT就把發送方的擁塞窗口+1,即讓擁塞窗口緩慢地增大,按照線性規律增長;當出現網絡擁塞,比如丟包時,將慢開始門限設為原先的一半,然后將cwnd設為1,執行慢啟動算法(較低的起點,指數級增長);
慢啟動門限就是說,當擁塞窗口超過門限時,就使用擁塞避免算法,而在門限以內就采用慢啟動算法。通常擁塞窗口記做cwnd,慢啟動門限記做ssthresh。
慢開始和擁塞控制算法常常作為一個整體使用,而快重傳和快恢復則是為了減少因為擁塞導致的數據包丟失帶來的重傳時間,從而避免傳遞無用的數據到網絡。
快重傳的機制是:
1.接收方如果發現一個包丟失,則對后續的包繼續發送針對該包的重傳請求;
2. 一旦發送方接收到三個一樣的確認,就知道該包之后出現了錯誤,立刻重傳該包;
3. 此時發送方開始執行“快恢復”算法:
*1. 慢開始門限減半;
*2. cwnd設為慢開始門限減半后的數值;
*3. 執行擁塞避免算法(高起點,線性增長);
超時重傳是TCP協議保證數據可靠性的另一個重要機制,其原理是在發送某一個數據以后就開啟一個計時器,在一定時間內如果沒有得到發送的數據報的ACK報文,那么就重新發送數據,直到發送成功為止。
3.TCP/IP結構及協議
網絡接口層:Wi-Fi、ATM 、GPRS、EVDO、HSPA、PPP、 幀中繼等
網際層:IP、ICMP(Ping的時候用到)、IGMP 、ARP、RARP(這兩個有爭議,一般說TCP/IP中是網絡層協議,在OSI模型中划分為數據鏈路層協議)
傳輸層:TCP、UDP、TLS等
應用層:FTP、TELNET、DNS、SMTP(郵件傳輸)、DHCP、HTTP、HTTPS、POP3、SSH等。
ARP(Address Resolution Protocol,地址解析協議)。ARP協議的基本功能就是通過目標設備的IP地址,查詢目標設備的MAC地址,以保證通信的順利進行。
4.IP網絡地址分布
IP地址根據網絡ID的不同分為5種類型,A類地址、B類地址、C類地址、D類地址和E類地址。
1.A類IP地址:一個A類IP地址由1字節的網絡地址和3字節主機地址組成,網絡地址的最高位必須是“0”,地址范圍從1.0.0.1 到126.255.255.254。可用的A類網絡有126個,每個網絡能容納1億多個主機。
2.B類IP地址:一個B類IP地址由2個字節的網絡地址和2個字節的主機地址組成,網絡地址的最高位必須是“10”,地址范圍從128.0.0.1到191.255.255.254。可用的B類網絡有16382個,每個網絡能容納6萬多個主機 。
3.C類IP地址:一個C類IP地址由3字節的網絡地址和1字節的主機地址組成,網絡地址的最高位必須是“110”。范圍從192.0.0.1到223.255.255.254。C類網絡可達209萬余個,每個網絡能容納254個主機。
4.D類地址用於多點廣播:D類IP地址第一個字節以“lll0”開始,它是一個專門保留的地址。它並不指向特定的網絡,目前這一類地址被用在多點廣播(Multicast)中。多點廣播地址用來一次尋址一組計算機,它標識共享同一協議的一組計算機。
5.E類IP地址:以“llll0”開始,為將來使用保留。
在IP地址3種主要類型里,各保留了3個區域作為私有地址,其地址范圍如下:
A類地址中的保留地址:10.0.0.0~10.255.255.255
B類地址中的保留地址:172.16.0.0~172.31.255.255
C類地址中的保留地址:192.168.0.0~192.168.255.255
另外IPv6地址長度為128位。
5.子網划分-主機數
一個網絡號192.168.5.0/24,子網掩碼是255.255.255.248,可以構建的最大子網數和每個子網最多可容納多少台機器?
題目給出的IP地址空間基於CIDR划分,前24位是網絡號,后8位是主機號。子網掩碼最后是 248(1111 1000)。相當於主機號又被分成兩部分, 前5位是子網號, 后3位是主機號,所以, 子網個數是 2^5, 主機個數為 2^3. 另外,主機號全 0 代表本地主機, 全 1 表示廣播. 共 6 個有效的.
6.網絡設備作用及所屬層
(1)物理層
轉發器(repeater):有源轉發器將信號解調后再生放大,再調制后傳輸。
集線器(hub):實現星形拓撲的以太網,簡單轉發比特。
網線、中繼器、網關。
(2)數據鏈路層
適配器(網卡):又稱網絡接口卡,用於計算機和局域網的通信。
網橋(bridge):用於在數據鏈路層擴展以太網,根據MAC幀的目的地址對收到的幀進行轉發和過濾。含有轉發表。它隔離了沖突域,但不隔離廣播域。
第二層交換機(layer2 switch):多接口的網橋,又稱以太網交換機或第二層交換機。可實現虛擬局域網VLAN(Virtual LAN)。
(3)網絡層
第三層交換機(layer3 switch):能進行路由的交換機,具有一部分路由器功能。
路由器(router):連接因特網中各局域網、廣域網的設備。擁有路由選擇處理機、交換結構、一組輸入端口和一組輸出端口。
7.主機字節序與網絡字節序
主機字節序一般分為大端和小端兩種,在X86平台上一般采用小端模式。
“小端”和“大端”表示多字節值的哪一端(小端或大端)存儲在該值的起始地址。小端存在起始地址,即是小端字節序;大端存在起始地址,即是大端字節序。
1.小端法(Little-Endian)就是低位字節排放在內存的低地址端即該值的起始地址,高位字節排放在內存的高地址端。
2.大端法(Big-Endian)就是高位字節排放在內存的低地址端即該值的起始地址,低位字節排放在內存的高地址端。

網絡字節序:網絡上的數據流是字節流,對於一個多字節數值,在進行網絡傳輸的時候,收到的第一個字節被當作高位看待,這就要求發送端發送的第一個字節應當是高位。而在發送端發送數據時,發送的第一個字節是該數字在內存中起始地址對應的字節。可見多字節數值在發送前,在內存中數值應該以大端法存放。網絡字節序說是大端字節序。
8.TCP和UDP的區別?
TCP提供面向連接的、可靠的數據流傳輸,而UDP提供的是非面向連接的、不可靠的數據流傳輸。
TCP傳輸單位稱為TCP報文段,UDP傳輸單位稱為用戶數據報。
TCP注重數據安全性,UDP數據傳輸快,因為不需要連接等待,少了許多操作,但是其安全性卻一般。
附:TCP對應的協議和UDP對應的協議
TCP對應的協議:
(1) FTP:定義了文件傳輸協議,使用21端口。
(2) Telnet:一種用於遠程登陸的端口,使用23端口,用戶可以以自己的身份遠程連接到計算機上,可提供基於DOS模式下的通信服務。
(3) SMTP:郵件傳送協議,用於發送郵件。服務器開放的是25號端口。
(4) POP3:它是和SMTP對應,POP3用於接收郵件。POP3協議所用的是110端口。
(5)HTTP:是從Web服務器傳輸超文本到本地瀏覽器的傳送協議。
UDP對應的協議:
(1) DNS:用於域名解析服務,將域名地址轉換為IP地址。DNS用的是53號端口。
(2) SNMP:簡單網絡管理協議,使用161號端口,是用來管理網絡設備的。由於網絡設備很多,無連接的服務就體現出其優勢。
(3) TFTP(Trival File Tran敏感詞er Protocal),簡單文件傳輸協議,該協議在熟知端口69上使用UDP服務。
參考資料:
計算機網絡系列的暫時整理到這里吧,如果讀者發現還有哪些這方面的經典常考知識點也請指出,待續~
轉載請注明出處,謝謝!
