一、三次握手四次揮手
1.1 為什么連接的時候是三次握手,關閉的時候卻是四次握手?
答:因為當Server端收到Client端的SYN連接請求報文后,可以直接發送SYN+ACK報文。其中ACK報文是用來應答的,SYN報文是用來同步的。但是關閉連接時,當Server端收到FIN報文時,很可能並不會立即關閉SOCKET,所以只能先回復一個ACK報文,告訴Client端,”你發的FIN報文我收到了”。只有等到我Server端所有的報文都發送完了,我才能發送FIN報文,因此不能一起發送。故需要四步握手。
1.2 為什么TIME_WAIT狀態需要經過2MSL(最大報文段生存時間)才能返回到CLOSE狀態?
MSL(MaximumSegment Lifetime),TCP允許不同的實現可以設置不同的MSL值。第一,保證客戶端發送的最后一個ACK報文能夠到達服務器,因為這個ACK報文可能丟失,站在服務器的角度看來,我已經發送了FIN+ACK報文請求斷開了,客戶端還沒有給我回應,應該是我發送的請求斷開報文它沒有收到,於是服務器又會重新發送一次,而客戶端就能在這個2MSL時間段內收到這個重傳的報文,接着給出回應報文,並且會重啟2MSL計時器。第二,防止類似與“三次握手”中提到了的“已經失效的連接請求報文段”出現在本連接中。客戶端發送完最后一個確認報文后,在這個2MSL時間中,就可以使本連接持續的時間內所產生的所有報文段都從網絡中消失。這樣新的連接中不會出現舊連接的請求報文。
1.3 為什么建立連接是三次握手,關閉連接確是四次揮手呢?
建立連接的時候,服務器在LISTEN狀態下,收到建立連接請求的SYN報文后,把ACK和SYN放在一個報文里發送給客戶端。而關閉連接時,服務器收到對方的FIN報文時,僅僅表示對方不再發送數據了但是還能接收數據,而自己也未必全部數據都發送給對方了,所以己方可以立即關閉,也可以發送一些數據給對方后,再發送FIN報文給對方來表示同意現在關閉連接,因此,己方ACK和FIN一般都會分開發送,從而導致多了一次。
1.4 為什么不能用兩次握手進行連接?
答:3次握手完成兩個重要的功能,既要雙方做好發送數據的准備工作(雙方都知道彼此已准備好),也要允許雙方就初始序列號進行協商,這個序列號在握手過程中被發送和確認。現在把三次握手改成僅需要兩次握手,死鎖是可能發生的。作為例子,考慮計算機S和C之間的通信,假定C給S發送一個連接請求分組,S收到了這個分組,並發送了確認應答分組。按照兩次握手的協定,S認為連接已經成功地建立了,可以開始發送數據分組。可是,C在S的應答分組在傳輸中被丟失的情況下,將不知道S是否已准備好,不知道S建立什么樣的序列號,C甚至懷疑S是否收到自己的連接請求分組。在這種情況下,C認為連接還未建立成功,將忽略S發來的任何數據分組,只等待連接確認應答分組。而S在發出的分組超時后,重復發送同樣的分組。這樣就形成了死鎖。
1.5 如果已經建立了連接,但是客戶端突然出現故障了怎么辦?
TCP還設有一個保活計時器,顯然,客戶端如果出現故障,服務器不能一直等下去,白白浪費資源。服務器每收到一次客戶端的請求后都會重新復位這個計時器,時間通常是設置為2小時,若兩小時還沒有收到客戶端的任何數據,服務器就會發送一個探測報文段,以后每隔75分鍾發送一次。若一連發送10個探測報文仍然沒反應,服務器就認為客戶端出了故障,接着就關閉連接。
1.6 為什么要三次握手?
保證可靠的核心就是雙方都需要確認自己發送和接受信息的功能正常,但因為網絡環境的不穩定性,這一秒能收發下一秒可能網絡核心就發生嚴重擁塞,所以世界上不存在完全可靠的通信協議.兩次握手會怎樣?若建立連接只需兩次握手,客戶端並沒有太大的變化,在獲得服務端的應答后進入ESTABLISHED狀態,即確認自己的發送和接受信息的功能正常.但如果服務端在收到連接請求后就進入ESTABLISHED狀態,不能保證客戶端能收到自己的信息,此時如果網絡擁塞,客戶端發送的連接請求遲遲到不了服務端,客戶端便超時重發請求,如果服務端正確接收並確認應答,雙方便開始通信,通信結束后釋放連接。此時,如果那個失效的連接請求抵達了服務端,由於只有兩次握手,服務端收到請求就會進入ESTABLISHED狀態,等待發送數據或主動發送數據。但此時的客戶端早已進入CLOSED狀態,服務端將會一直等待下去,這樣浪費服務端連接資源。
1.7 為什么要四次揮手?
TCP連接的釋放一共需要四步,因此稱為『四次揮手』.我們知道,TCP連接是雙向的,因此在四次揮手中,前兩次揮手用於斷開一個方向的連接,后兩次揮手用於斷開另一方向的連接。第一次揮手:若A認為數據發送完成,則它需要向B發送連接釋放請求.該請求只有報文頭,頭中攜帶的主要參數為:FIN=1,seq=u.此時,A將進入FIN-WAIT-1狀態。1,FIN=1表示該報文段是一個連接釋放請求.
2,seq=u,u-1是A向B發送的最后一個字節的序號.
第二次揮手:
B收到連接釋放請求后,會通知相應的應用程序,告訴它A向B這個方向的連接已經釋放.此時B進入CLOSE-WAIT狀態,並向A發送連接釋放的應答,其報文頭包含:ACK=1,seq=v,ack=u+1.
ACK=1:除TCP連接請求報文段以外,TCP通信過程中所有數據報的ACK都為1,表示應答.
1,seq=v,v-1是B向A發送的最后一個字節的序號.
2,ack=u+1表示希望收到從第u+1個字節開始的報文段,並且已經成功接收了前u個字節.A收到該應答,進入FIN-WAIT-2狀態,等待B發送連接釋放請求.
第二次揮手完成后,A到B方向的連接已經釋放,B不會再接收數據,A也不會再發送數據。但B到A方向的連接仍然存在,B可以繼續向A發送數據。
第三次揮手:
當B向A發完所有數據后,向A發送連接釋放請求,請求頭中包含:
FIN=1,ACK=1,seq=w,ack=u+1.隨后B進入LAST-ACK狀態.
第四次揮手:
A收到釋放請求后,向B發送確認應答,此時A進入TIME-WAIT狀態.該狀態會持續2MSL時間,若該時間段內沒有B的重發請求的話,就進入CLOSED狀態,撤銷TCB.當B收到確認應答后,也便進入CLOSED狀態,撤銷TCB。
1.8 為什么TCP客戶端最后還要發送一次確認呢?
一句話,主要防止已經失效的連接請求報文突然又傳送到了服務器,從而產生錯誤。如果使用的是兩次握手建立連接,假設有這樣一種場景,客戶端發送了第一個請求連接並且沒有丟失,只是因為在網絡結點中滯留的時間太長了,由於TCP的客戶端遲遲沒有收到確認報文,以為服務器沒有收到,此時重新向服務器發送這條報文,此后客戶端和服務器經過兩次握手完成連接,傳輸數據,然后關閉連接。此時此前滯留的那一次請求連接,網絡通暢了到達了服務器,這個報文本該是失效的,但是,兩次握手的機制將會讓客戶端和服務器再次建立連接,這將導致不必要的錯誤和資源的浪費。如果采用的是三次握手,就算是那一次失效的報文傳送過來了,服務端接受到了那條失效報文並且回復了確認報文,但是客戶端不會再次發出確認。由於服務器收不到確認,就知道客戶端並沒有請求連接。
1.9 簡述TCP三次握手的過程?
答:在TCP/IP協議中,TCP協議提供可靠的連接服務,采用三次握手建立一個連接。第一次握手:建立連接時,客戶端發送syn包(syn=j)到服務器,並進入SYN_SEND狀態,等待服務器確認。第二次握手:服務器收到syn包,必須確認客戶的SYN(ack=j+1),同時自己也發送一個SYN包(syn=k),即SYN+ACK包,此時服務器進入SYN_RECV狀態。第三次握手:客戶端收到服務器的SYN+ACK包,向服務器發送確認包ACK(ack=k+1),此包發送完畢,客戶端和服務器進入ESTABLISHED狀態,完成三次握手。完成三次握手,客戶端與服務器開始傳送數據簡版:首先A向B發SYN(同步請求),然后B回復SYN+ACK(同步請求應答),最后A回復ACK確認,這樣TCP的一次連接(三次握手)的過程就建立了。三次握手我們先明確兩個定義:
1,client為數據發送方
2,server為數據接收方
好,下面進行三次握手的總結:
1,client想要向server發送數據,請求連接。這時client想服務器發送一個數據包,其中同步位(SYN)被置為1,表明client申請TCP連接,序號為j。
2,當server接收到了來自client的數據包時,解析發現同步位為1,便知道client是想要簡歷TCP連接,於是將當前client的IP、端口之類的加入未連接隊列中,並向client回復接受連接請求,想client發送數據包,其中同步位為1,並附帶確認位ACK=j+1,表明server已經准備好分配資源了,並向client發起連接請求,請求client為建立TCP連接而分配資源。
3,client向server回復一個ACK,並分配資源建立連接。server收到這個確認時也分配資源進行連接的建立。
那么問題來了為什么需要第三次握手?第三次握手失敗了怎么辦?三次握手有什么缺陷可以被黑客利用,用來對服務器進行攻擊?
怎么防范這種攻擊?
接下來進行一一解答。
1.9.1 為什么需要第三次握手?
答:如果沒有第三次握手,可能會出現如下情況:如果只有兩次握手,那么server收到了client的SYN=1的請求連接數據包之后,便會分配資源並且向client發送一個確認位ACK回復數據包。那么,如果在client與server建立連接的過程中,由於網絡不順暢等原因造成的通信鏈路中存在着殘留數據包,即client向server發送的請求建立連接的數據包由於數據鏈路的擁塞或者質量不佳導致該連接請求數據包仍然在網絡的鏈路中,這些殘留數據包會造成如下危害危害:當client與server建立連接,數據發送完畢並且關閉TCP連接之后,如果鏈路中的殘留數據包才到達server,那么server就會認為client重新發送了一次連接申請,便會回復ACK包並且分配資源。並且一直等待client發送數據,這就會造成server的資源浪費。
1.9.2 第三次握手失敗了怎么辦?
答:當client與server的第三次握手失敗了之后,即client發送至server的確認建立連接報文段未能到達server,server在等待client回復ACK的過程中超時了,那么server會向client發送一個RTS報文段並進入關閉狀態,即:並不等待client第三次握手的ACK包重傳,直接關閉連接請求,這主要是為了防止泛洪攻擊,即壞人偽造許多IP向server發送連接請求,從而將server的未連接隊列塞滿,浪費server的資源。
1.9.3 三次握手有什么缺陷可以被黑客利用,用來對服務器進行攻擊?
答:黑客仿造IP大量的向server發送TCP連接請求報文包,從而將server的半連接隊列(上文所說的未連接隊列,即server收到連接請求SYN之后將client加入半連接隊列中)占滿,從而使得server拒絕其他正常的連接請求。即拒絕服務攻擊
1.9.4 怎么防范這種攻擊?
1,縮短服務器接收客戶端SYN報文之后的等待連接時間,即SYNtimeout時間,也就是server接收到SYN報文段,到最后放棄此連接請求的超時時間,將SYNtimeout設置的更低,便可以成倍的減少server的負荷,但是過低的SYNtimeout可能會影響正常的TCP連接的建立,一旦網絡不通暢便可能導致client連接請求失敗2,SYNcookie + SYN proxy 無縫集成(較好的解決方案)SYNcookie:當server接收到client的SYN之后,不立即分配資源,而是根據client發送過來的SYN包計算出一個cookie值,這個cookie值用來存儲server返回給client的SYN+ACK數據包中的初始序列號,當client返回第三次握手的ACK包之后進行校驗,如果校驗成功則server分配資源,建立連接。SYNproxy代理,作為server與client連接的代理,代替server與client建立三次握手的連接,同時SYNproxy與client建立好了三次握手連接之后,確保是正常的TCP連接,而不是TCP泛洪攻擊,那么SYNproxy就與server建立三次握手連接,作為代理(網關?)來連通client與server。(類似VPN了解一下。)
二、路由
2.1 填空題。
1. 靜態 路由設定后,若 網絡 拓撲結構發生變化,需由系統 管理員 修改路由的 設置 。
2.網絡管理的重要任務是: 控制 和 監控 。
3.在安裝Linux系統中,使用 netconfig 程序對網絡進行配置,該安裝程序會一步步提示用戶輸入 主機名 、 域名 、 域名服務器 、 IP地址 、 網關地址 和 子網掩碼 等必要信息。
4. RIP 協議是最為普遍的一種內部協議,一般稱為動態路由信息協議。
5. DHCP 可以實現動態IP地址分配。
6.網絡管理通常由 監測 、 傳輸 和 管理 三部分組成,其中 管理部分 是整個網絡管理的中心。
7. Ping 命令可以測試網絡中本機系統是否能到達一台遠程主機,所以常常用於 測試網絡的連通性 。
8.進行遠程登錄的命令是 telnet 。
9.DHCP是動態主機配置協議的簡稱,其作用是: 為網絡中的主機分配IP 地址。
10.路由選擇協議(RIP)的跳數表示到達目的地之前必須通過的網關數,RIP接受的最長距離是 15 跳。
11.ping命令用於測試網絡的連通性,ping命令通過 ICMP 協議(internet控制信息協議)來實現。
2.2 選擇題。
12.下面的網絡協議中,面向連接的的協議是: A 。
A 傳輸控制協議
B 用戶數據報協議
C 網際協議
D 網際控制報文協議
13.一台主機要實現通過局域網與另一個局域網通信,需要做的工作是 C 。
A 配置域名服務器
B 定義一條本機指向所在網絡的路由
C 定義一條本機指向所在網絡網關的路由
D 定義一條本機指向目標網絡網關的路由
14.局域網的網絡地址192.168.1.0/24,局域網絡連接其它網絡的網關地址是192.168.1.1。主機192.168.1.20訪問172.16.1.0/24網絡時,其路由設置正確的是 B 。
A route add –net 192.168.1.0 gw 192.168.1.1 netmask 255.255.255.0metric1
B route add –net 172.16.1.0 gw 192.168.1.1 netmask 255.255.255.255metric1
C route add –net 172.16.1.0 gw 172.16.1.1 netmask 255.255.255.0metric 1
D route add default 192.168.1.0 netmask 172.168.1.1 metric 1
15.下列提法中,不屬於ifconfig命令作用范圍的是 D 。
A 配置本地回環地址
B 配置網卡的IP地址
C 激活網絡適配器
D 加載網卡到內核中
16.在局域網絡內的某台主機用ping 命令測試網絡連接時發現網絡內部的主機都可以連同,而不能與公網連通,問題可能是 C 。
A 主機IP設置有誤
B 沒有設置連接局域網的網關
C 局域網的網關或主機的網關設置有誤
D 局域網DNS服務器設置有誤
17.下列文件中,包含了主機名到IP 地址的映射關系的文件是: B 。
A /etc/HOSTNAME
B /etc/hosts
C /etc/resolv.conf
D /etc/networks
18.在TCP/IP 模型中,應用層包含了所有的高層協議,在下列的一些應用協議中, B 是能夠實現本地與遠程主機之間的文件傳輸工作。
A telnet
B FTP
C SNMP
D NFS
19.當我們與某遠程網絡連接不上時,就需要跟蹤路由查看,以便了解在網絡的什么位置出現了問題,滿足該目的的命令是 C 。
A ping
B ifconfig
C traceroute
D netstat
20.DNS域名系統主要負責主機名和 A 之間的解析。
A IP地址
B MAC地址
C 網絡地址
D 主機別名
21.WWW服務器是在Internet上使用最為廣泛,它采用的是 B 結構。
A 服務器/工作站
B B/S
C 集中式
D 分布式
22.網絡管理具備以下幾大功能:配置管理、 A 、性能管理、安全管理和計費管理等。
A 故障管理
B 日常備份管理
C 升級管理
D 發送郵件
23.關於代理服務器的論述,正確的是 A 。
A 使用internet 上已有的公開代理服務器,只需配置客戶端。
B 代理服務器只能代理客戶端http 的請求。
C 設置好的代理服務器可以被網絡上任何主機使用。
D 使用代理服務器的客戶端沒有自己的ip 地址。
24.實現從IP地址到以太網MAC地址轉換的命令為: C 。
A ping
B ifconfig
C arp
D traceroute
25.在DNS系統測試時,設named進程號是53,命令 D 通知進程重讀配置文件。
A kill –USR2 53
B kill –USR1 53
C kill -INT 63
D kill –HUP 53
26.在DNS配置文件中,用於表示某主機別名的是: B 。
A NS
B CNAME
C NAME
D CN
27.為保證在啟動服務器時自動啟動DHCP 進程,應對 B 文件進行編輯。
A /etc/rc.d/rc.inet2
B /etc/rc.d/rc.inet1
C /etc/dhcpd.conf
D /etc/rc.d/rc.S
2.3 簡答題。
28.寫一條192.168.10.0網段從網關192.168.9.1出去的路由
答:routeadd -net 192.168.10.0/24gw 192.168.9.1
29.給主機host:172.16.0.2增加gateway10.0.0.1
答:routeadd 172.16.0.2 gw 10.0.0.1或者網卡配置文件更改
30.網站出現500,502,400,403,404都是什么意思,怎么排查和解決
答:500:服務器內部錯誤,因為服務器上的程序寫的有問題,需要打開錯誤日志,查看日志,分析錯誤信息。502:網關錯誤,服務器作為網關或代理,從上游服務器收到無效響應。Nginx出現最多,出現502要么是nginx配置的不對,要么是php-fpm資源不夠,可以分析php-fpm的慢執行日志,優化php-fpm的執行速度。400:錯誤請求,服務器不理解請求的語法。這可能是用戶發起的請求不合理,需要檢查客戶端的請求。
403:服務器拒絕請求。檢查服務器配置,是不是對客戶端做了限制。
404:未找到請求的資源。檢查服務器上是否存在請求的資源,看是否是配置問題。
31.TCP有哪些了解,TCP連接狀態中“TIME_WAIT”是什么意思,影響什么?
答:關於tcp有點復雜,直接上圖吧,更直觀
狀態描述:
CLOSED:這個沒什么好說的了,表示初始狀態。
LISTEN:這個也是非常容易理解的一個狀態,表示服務器端的某個SOCKET處於監聽狀態,可以接受連接了。
SYN_RCVD:這個狀態表示接受到了SYN報文,在正常情況下,這個狀態是服務器端的SOCKET在建立TCP連接時的三次握手會話過程中的一個中間狀態,很短暫,基本上用netstat你是很難看到這種狀態的,除非你特意寫了一個客戶端測試程序,故意將三次TCP握手過程中最后一個ACK報文不予發送。因此這種狀態時,當收到客戶端的ACK報文后,它會進入到ESTABLISHED狀態。
SYN_SENT:這個狀態與SYN_RCVD遙想呼應,當客戶端SOCKET執行CONNECT連接時,它首先發送SYN報文,因此也隨即它會進入到了SYN_SENT狀態,並等待服務端的發送三次握手中的第2個報文。SYN_SENT狀態表示客戶端已發送SYN報文。
ESTABLISHED:這個容易理解了,表示連接已經建立了。
FIN_WAIT_1:這個狀態要好好解釋一下,其實FIN_WAIT_1和FIN_WAIT_2狀態的真正含義都是表示等待對方的FIN報文。而這兩種狀態的區別是:FIN_WAIT_1狀態實際上是當SOCKET在ESTABLISHED狀態時,它想主動關閉連接,向對方發送了FIN報文,此時該SOCKET即進入到FIN_WAIT_1狀態。而當對方回應ACK報文后,則進入到FIN_WAIT_2狀態,當然在實際的正常情況下,無論對方何種情況下,都應該馬上回應ACK報文,所以FIN_WAIT_1狀態一般是比較難見到的,而FIN_WAIT_2狀態還有時常常可以用netstat看到。
FIN_WAIT_2:上面已經詳細解釋了這種狀態,實際上FIN_WAIT_2狀態下的SOCKET,表示半連接,也即有一方要求close連接,但另外還告訴對方,我暫時還有點數據需要傳送給你,稍后再關閉連接。
TIME_WAIT:表示收到了對方的FIN報文,並發送出了ACK報文,就等2MSL后即可回到CLOSED可用狀態了。如果FIN_WAIT_1狀態下,收到了對方同時帶FIN標志和ACK標志的報文時,可以直接進入到TIME_WAIT狀態,而無須經過FIN_WAIT_2狀態。
CLOSING:這種狀態比較特殊,實際情況中應該是很少見,屬於一種比較罕見的例外狀態。正常情況下,當你發送FIN報文后,按理來說是應該先收到(或同時收到)對方的ACK報文,再收到對方的FIN報文。但是CLOSING狀態表示你發送FIN報文后,並沒有收到對方的ACK報文,反而卻也收到了對方的FIN報文。什么情況下會出現此種情況呢?其實細想一下,也不難得出結論:那就是如果雙方幾乎在同時close一個SOCKET的話,那么就出現了雙方同時發送FIN報文的情況,也即會出現CLOSING狀態,表示雙方都正在關閉SOCKET連接。
CLOSE_WAIT:這種狀態的含義其實是表示在等待關閉。怎么理解呢?當對方close一個SOCKET后發送FIN報文給自己,你系統毫無疑問地會回應一個ACK報文給對方,此時則進入到CLOSE_WAIT狀態。接下來呢,實際上你真正需要考慮的事情是察看你是否還有數據發送給對方,如果沒有的話,那么你也就可以close這個SOCKET,發送FIN報文給對方,也即關閉連接。所以你在CLOSE_WAIT狀態下,需要完成的事情是等待你去關閉連接。
LAST_ACK:這個狀態還是比較容易好理解的,它是被動關閉一方在發送FIN報文后,最后等待對方的ACK報文。當收到ACK報文后,也即可以進入到CLOSED可用狀態了。
32.簡述DNS進行域名解析的過程。
參考答案:首先,客戶端發出DNS請求翻譯IP地址或主機名。DNS服務器在收到客戶機的請求后:(1)檢查DNS服務器的緩存,若查到請求的地址或名字,即向客戶機發出應答信息;(2)若沒有查到,則在數據庫中查找,若查到請求的地址或名字,即向客戶機發出應答信息;
(3)若沒有查到,則將請求發給根域DNS 服務器,並依序從根域查找頂級域,由頂級查找二級域,二級域查找三級,直至找到要解析的地址或名字,即向客戶機所在網絡的DNS服務器發出應答信息,DNS服務器收到應答后現在緩存中存儲,然后,將解析結果發給客戶機。
(4)若沒有找到,則返回錯誤信息。
33.什么是靜態路由,其特點是什么?什么是動態路由,其特點是什么?
參考答案:靜態路由是由系統管理員設計與構建的路由表規定的路由。適用於網關數量有限的場合,且網絡拓朴結構不經常變化的網絡。其缺點是不能動態地適用網絡狀況的變化,當網絡狀況變化后必須由網絡管理員修改路由表。動態路由是由路由選擇協議而動態構建的,路由協議之間通過交換各自所擁有的路由信息實時更新路由表的內容。動態路由可以自動學習 網絡的拓朴結構,並更新路由表。其缺點是路由廣播更新信息將占據大量的網絡帶寬。
34.linux下常用的DNS服務軟件是什么,舉出幾種常用的DNS記錄,如果域名abc.com配置好了一台郵件服務器,IP地址為202.106.0.20,我該如何做相關的解析?是否了解bind的智能解析,如果了解請簡述一下其原理。
答案:1)常用的DNS軟件是bind2)A記錄地址記錄MX記錄郵件交換記錄
CNAME記錄別名域記錄
3)修改abc.com 域名的配置文件,增加以下記錄
INMX 10 mail.abc.com.
mailIN A 202.106.0.20
4)bind根據請求解析客戶端的IP地址,做出不同的解析,其原理是在配置文件中,設定了view,在每個view都有客戶端的IP地址段,bind服務器根據請求解析客戶端的IP地址,匹配不同的view,再根據該view的配置,到相應的配置文件進行查詢,將結果返回給請求的客戶端。
35.AB網絡是通的,最少列出五種傳輸文件的服務
nfs,ftp,scp,rsync,samba,http://
36.我們都知道,dns既采用了tcp協議,又采用了udp協議,什么時候采用tcp協議?什么時候采用udp協議?為什么要這么設計?
答:這個題需要理解的東西比較的多,分一下幾個方面a,從數據包大小上分:UDP的最大包長度是65507個字節,響應dns查詢的時候數據包長度超過512個字節,而返回的只要前512個字節,這時名字解釋器通常使用TCP 從發原來的請求。b,從協議本身來分:大部分的情況下使用UDP協議,大家都知道UDP協議是一種不可靠的協議,dns不像其它的使用UDP的Internet應用(如:TFTP,BOOTP和SNMP等),大部分集中在局域網,dns查詢和響應需要經過廣域網,分組丟失和往返時間的不確定性在廣域網比局域網上更大,這就要求dns客戶端需要好的重傳和超時算法,這時候使用TCP。
三、七層模型
3.1 說說TCP/IP的七層模型
應用層 (Application):網絡服務與最終用戶的一個接口。協議有:HTTP FTP TFTP SMTP SNMP DNS TELNET HTTPS POP3 DHCP表示層(Presentation Layer):
數據的表示、安全、壓縮。(在五層模型里面已經合並到了應用層)
格式有,JPEG、ASCll、DECOIC、加密格式等
會話層(Session Layer):
建立、管理、終止會話。(在五層模型里面已經合並到了應用層)
對應主機進程,指本地主機與遠程主機正在進行的會話
傳輸層 (Transport):
定義傳輸數據的協議端口號,以及流控和差錯校驗。
協議有:TCP UDP,數據包一旦離開網卡即進入網絡傳輸層
網絡層 (Network):
進行邏輯地址尋址,實現不同網絡之間的路徑選擇。
協議有:ICMP IGMP IP(IPV4 IPV6) ARP RARP
數據鏈路層 (Link):
建立邏輯連接、進行硬件地址尋址、差錯校驗等功能。(由底層網絡定義協議)
將比特組合成字節進而組合成幀,用MAC地址訪問介質,錯誤發現但不能糾正。
物理層(Physical Layer):
是計算機網絡OSI模型中最低的一層。
物理層規定:為傳輸數據所需要的物理鏈路創建、維持、拆除而提供具有機械的,電子的,功能的和規范的特性。
簡單的說,物理層確保原始的數據可在各種物理媒體上傳輸。局域網與廣域網皆屬第1、2層。物理層是OSI的第一層,它雖然處於最底層,卻是整個開放系統的基礎。物理層為設備之間的數據通信提供傳輸媒體及互連設備,為數據傳輸提供可靠的環境。如果您想要用盡量少的詞來記住這個第一層,那就是“信號和介質”。