1,OSI,TCP/IP,五層協議的體系結構,以及各層協議
物理層:通過媒介傳輸比特,確定機械及電氣規范(比特Bit)
數據鏈路層:將比特組裝成幀和點到點的傳遞(幀Frame)
網絡層:負責數據包從源到宿的傳遞和網際互連(包PackeT)
傳輸層:提供端到端的可靠報文傳遞和錯誤恢復(段Segment)
會話層:建立、管理和終止會話(會話協議數據單元SPDU)
表示層:對數據進行翻譯、加密和壓縮(表示協議數據單元PPDU)
應用層:允許訪問OSI環境的手段(應用協議數據單元APDU)
2,IP地址分類
IP地址是32位的二進制數值,用於在TCP/IP通訊協議中標記每台計算機的地址。通常我們使用點式十進制來表示,如192.168.0.5等等。
每個IP地址又可分為兩部分。即網絡號部分和主機號部分:網絡號表示其所屬的網絡段編號,主機號則表示該網段中該主機的地址編號。按照網絡規模的大小,IP地址可以分為A、B、C、D、E五類。
A類地址:以0開頭, 第一個字節范圍:0~127(1.0.0.0 - 126.255.255.255);
B類地址:以10開頭, 第一個字節范圍:128~191(128.0.0.0 - 191.255.255.255);
C類地址:以110開頭, 第一個字節范圍:192~223(192.0.0.0 - 223.255.255.255);
類別 網絡號 /占位數 主機號 /占位數 用途 A(以0開頭) 1~126 / 8 0~255 0~255 1~254 / 24 國家級 B(以10開頭) 128~191 0~255 / 16 0~255 1~254 / 16 跨過組織 C(以110開頭)192~223 0~255 0~255 / 24 1~254 / 8 企業組織
注意:
1)以下是留用的內部私有地址,Internet上沒使用的地址
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
2)IP地址與子網掩碼相與得到網絡號
3)主機號,全為0的是網絡號(例如:192.168.2.0),主機號全為1的為廣播地址(192.168.2.255)
3,ARP是地址解析協議,簡單語言解釋一下工作原理。
地址解析協議,即ARP(Address Resolution Protocol),是根據IP地址獲取物理地址的一個TCP/IP協議。
1:首先,每個主機都會在自己的ARP緩沖區中建立一個ARP列表,以表示IP地址和MAC地址之間的對應關系。
2:當源主機要發送數據時,首先檢查ARP列表中是否有對應IP地址的目的主機的MAC地址,如果有,則直接發送數據,如果沒有,就向本網段的所有主機發送ARP數據包,該數據包包括的內容有:源主機 IP地址,源主機MAC地址,目的主機的IP 地址
3:當本網絡的所有主機收到該ARP數據包時,首先檢查數據包中的IP地址是否是自己的IP地址,如果不是,則忽略該數據包,如果是,則首先從數據包中取出源主機的IP和MAC地址寫入到ARP列表中,如果已經存在,則覆蓋,然后將自己的MAC地址寫入ARP響應包中,告訴源主機自己是它想要找的MAC地址。
4:源主機收到ARP響應包后。將目的主機的IP和MAC地址寫入ARP列表,並利用此信息發送數據。如果源主機一直沒有收到ARP響應數據包,表示ARP查詢失敗。
注意:廣播(255.255.255.255)發送ARP請求,單播發送ARP響應。
4,簡單介紹幾種協議
ICMP協議: 因特網控制報文協議。它是TCP/IP協議族的一個子協議,用於在IP主機、路由器之間傳遞控制消息
TFTP協議: 是TCP/IP協議族中的一個用來在客戶機與服務器之間進行簡單文件傳輸的協議,提供不復雜、開銷不大的文件傳輸服務。
HTTP協議: 超文本傳輸協議,是一個屬於應用層的面向對象的協議,由於其簡捷、快速的方式,適用於分布式超媒體信息系統
NAT協議:網絡地址轉換屬接入廣域網(WAN)技術,是一種將私有(保留)地址轉化為合法IP地址的轉換技術
DHCP協議:動態主機配置協議,是一種讓系統得以連接到網絡上,並獲取所需要的配置參數手段,使用UDP協議工作。具體用途:給內部網絡或網絡服務供應商自動分配IP地址,給用戶或者內部網絡管理員作為對所有計算機作中央管理的手段。
5,TCP三次握手四次揮手
三次握手:
第一次握手:客戶端發送syn包(seq=x)到服務器,並進入SYN_SEND(發送)狀態,等待服務器確認;
第二次握手:服務器收到syn包,必須確認客戶的SYN(ack=x+1),同時自己也發送一個SYN包(seq=y),即SYN+ACK包,此時服務器進入SYN_RECV(接收)狀態;
第三次握手:客戶端收到服務器的SYN+ACK包,向服務器發送確認包ACK(ack=y+1),此包發送完畢,客戶端和服務器進入ESTABLISHED(已建立)狀態,完成三次握手。
說明:
1)SYN和ACK是標志位(0/1)(ACK=1表明ack有效),seq是序列號,ack是確認號。2)給對方的確認方式就是把對方傳來的seq+1並賦給ack。
四次揮手:
第一次揮手:主動關閉方發送一個FIN,用來關閉主動方到被動關閉方的數據傳送,也就是主動關閉方告訴被動關閉方:我已經不 會再給你發數據了(當然,在fin包之前發送出去的數據,如果沒有收到對應的ack確認報文,主動關閉方依然會重發這些數據),但是,此時主動關閉方還可 以接受數據。
第二次揮手:被動關閉方收到FIN包后,發送一個ACK給對方,確認序號為收到序號+1。
第三次揮手:被動關閉方發送一個FIN,用來關閉被動關閉方到主動關閉方的數據傳送,也就是告訴主動關閉方,我的數據也發送完了,不會再給你發數據了。
第四次揮手:主動關閉方收到FIN后,發送一個ACK給被動關閉方,確認序號為收到序號+1,至此,完成四次揮手。
說明:
1)SYN攻擊 用眾多偽造ip地址向服務器發送SYN=1(請求連接),讓服務器處於SYN-RCVD狀態,但都無法第三次握手(因為偽造ip不存在)
2)4次揮手中的FIN就相當於三次握手中的SYN。
3)序號seq,確認序號ack,確認標志位ACK作用還是一樣的,就是確認作用(把seq加上1賦給ack,並把ACK置1)
4)為什么一個3次1個4次不一樣?
因為兩端的數據並不是同時發送完,所以兩端誰發送完數據都需要自己告訴對方一次,並且對方確認一次。
6, 在瀏覽器中輸入www.baidu.com后執行的全部過程
1、客戶端瀏覽器通過DNS解析到www.baidu.com的IP地址220.181.27.48,通過這個IP地址找到客戶端到服務器的路徑。客戶端瀏覽器發起一個HTTP會話到220.161.27.48,然后通過TCP進行封裝數據包,輸入到網絡層。
2、在客戶端的傳輸層(添加TCP頭),把HTTP會話請求分成報文段,添加源和目的端口,如服務器使用80端口監聽客戶端的請求,客戶端由系統隨機選擇一個端口如5000,與服務器進行交換,服務器把相應的請求返回給客戶端的5000端口。然后使用IP層的IP地址查找目的端。
3、客戶端的網絡層(添加IP頭)不用關系應用層或者傳輸層的東西,主要做的是通過查找路由表確定如何到達服務器,期間可能經過多個路由器,這些都是由路由器來完成的工作,我不作過多的描述,無非就是通過查找路由表決定通過那個路徑到達服務器。
4、客戶端的鏈路層(添加MAC頭),包通過鏈路層發送到路由器,通過鄰居協議查找給定IP地址的MAC地址,然后發送ARP請求查找目的地址,如果得到回應后就可以使用ARP的請求應答交換的IP數據包現在就可以傳輸了,然后發送IP數據包到達服務器的地址。
7,TCP和UDP的區別
這是傳輸層的兩個協議,先說一下傳輸層的兩大功能:
- 復用:在發送端,多個應用進程公用一個傳輸層;
- 分用:在接收端,傳輸層會根據端口號將數據分給不同的應用進程。
傳輸層和網絡層的區別:
- 網絡層為不同的主機提供通信服務,傳輸層為不同應用進程提供通信服務。
- 網絡層只對報文頭部進行差錯檢測,而傳輸層對整個報文進行差錯檢測。
UDP(User Data Protocol)用戶數據報協議
- 無連接
- 不可靠(不能保證都送達)
- 面向報文(UDP數據傳輸單位是報文,不會對數據進行拆分和拼接操作,只是給上層傳來的數據加個UDP頭或者給下層來的數據去掉UDP頭)
- 沒有擁塞控制,始終以恆定速率發送數據
- 支持一對一、一對多、多對多、多對一
- 首部開銷小,只有8字節
TCP(Transmission Control Protocol)傳輸控制協議
- 有連接
- 可靠的
- 面向字節流
- 全雙工通信,TCP兩端既可以作為發送端也可以作為接收端
- 連接的兩端只能是兩個端點,即一對一,不能一對多
- 至少20個字節,比UDP大的多
什么是TCP連接
TCP連接是一種抽象的概念,表示一條可以通信的鏈路。
每個TCP連接有且僅有兩個端點,表示通信的雙方,且雙方在任意時刻都可以作為發送者和接受者。
什么是套接字
一條TCP連接的兩端就是兩個套接字。
套接字 = IP地址 :端口號
因此,TCP連接 = (套接字1,套接字2)= (IP1:端口號1,IP2:端口號2)
8, 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 Transfer Protocal),簡單文件傳輸協議,該協議在熟知端口69上使用UDP服務。
9,DNS域名系統,簡單描述其工作原理。
當DNS客戶機需要在程序中使用名稱時,它會查詢DNS服務器來解析該名稱。客戶機發送的每條查詢信息包括三條信息:包括:指定的DNS域名,指定的查詢類型,DNS域名的指定類別。基於UDP服務,端口53. 該應用一般不直接為用戶使用,而是為其他應用服務,如HTTP,SMTP等在其中需要完成主機名到IP地址的轉換。
10,面向連接和非面向連接的服務的特點是什么?
面向連接的服務,通信雙方在進行通信之前,要先在雙方建立起一個完整的可以彼此溝通的通道,在通信過程中,整個連接的情況一直可以被實時地監控和管理。
非面向連接的服務,不需要預先建立一個聯絡兩個通信節點的連接,需要通信的時候,發送節點就可以往網絡上發送信息,讓信息自主地在網絡上去傳,一般在傳輸的過程中不再加以監控。
11,TCP的三次握手過程?為什么會采用三次握手,若采用二次握手可以嗎?
答:建立連接的過程是利用客戶服務器模式,假設主機A為客戶端,主機B為服務器端。
(1)TCP的三次握手過程:主機A向B發送連接請求;主機B對收到的主機A的報文段進行確認;主機A再次對主機B的確認進行確認。
(2)采用三次握手是為了防止失效的連接請求報文段突然又傳送到主機B,因而產生錯誤。失效的連接請求報文段是指:主機A發出的連接請求沒有收到主機B的確認,於是經過一段時間后,主機A又重新向主機B發送連接請求,且建立成功,順序完成數據傳輸。考慮這樣一種特殊情況,主機A第一次發送的連接請求並沒有丟失,而是因為網絡節點導致延遲達到主機B,主機B以為是主機A又發起的新連接,於是主機B同意連接,並向主機A發回確認,但是此時主機A根本不會理會,主機B就一直在等待主機A發送數據,導致主機B的資源浪費。(這就是缺少第三次握手(A再給B確認))
(3)采用兩次握手不行,原因就是上面說的實效的連接請求的特殊情況。
12,了解交換機、路由器、網關的概念,並知道各自的用途
1)交換機
在計算機網絡系統中,交換機是針對共享工作模式的弱點而推出的。交換機擁有一條高帶寬的背部總線和內部交換矩陣。交換機的所有的端口都掛接在這條背 部總線上,當控制電路收到數據包以后,處理端口會查找內存中的地址對照表以確定目的MAC(網卡的硬件地址)的NIC(網卡)掛接在哪個端口上,通過內部 交換矩陣迅速將數據包傳送到目的端口。目的MAC若不存在,交換機才廣播到所有的端口,接收端口回應后交換機會“學習”新的地址,並把它添加入內部地址表 中。
交換機工作於OSI參考模型的第二層,即數據鏈路層。交換機內部的CPU會在每個端口成功連接時,通過ARP協議學習它的MAC地址,保存成一張 ARP表。在今后的通訊中,發往該MAC地址的數據包將僅送往其對應的端口,而不是所有的端口。因此,交換機可用於划分數據鏈路層廣播,即沖突域;但它不 能划分網絡層廣播,即廣播域。
交換機被廣泛應用於二層網絡交換,俗稱“二層交換機”。
交換機的種類有:二層交換機、三層交換機、四層交換機、七層交換機分別工作在OSI七層模型中的第二層、第三層、第四層盒第七層,並因此而得名。
2)路由器
路由器(Router)是一種計算機網絡設備,提供了路由與轉送兩種重要機制,可以決定數據包從來源端到目的端所經過 的路由路徑(host到host之間的傳輸路徑),這個過程稱為路由;將路由器輸入端的數據包移送至適當的路由器輸出端(在路由器內部進行),這稱為轉 送。路由工作在OSI模型的第三層——即網絡層,例如網際協議。
路由器的一個作用是連通不同的網絡,另一個作用是選擇信息傳送的線路。 路由器與交換器的差別,路由器是屬於OSI第三層的產品,交換器是OSI第二層的產品(這里特指二層交換機)。
3)網關
網關(Gateway),網關顧名思義就是連接兩個網絡的設備,區別於路由器(由於歷史的原因,許多有關TCP/IP 的文獻曾經把網絡層使用的路由器(Router)稱為網關,在今天很多局域網采用都是路由來接入網絡,因此現在通常指的網關就是路由器的IP),經常在家 庭中或者小型企業網絡中使用,用於連接局域網和Internet。 網關也經常指把一種協議轉成另一種協議的設備,比如語音網關。