應用層:提供使用者與網路間的介面。----http、ftp、smtp
運輸層:程序到程序間的資料傳輸。---tcp、udp
網路層:主機到主機之間的資料傳輸。---ip、選路協議
資料鏈路層:相鄰結點之間的資料傳輸。---ppp、乙太網
物理層:在物理介質上傳輸位元流。
傳輸控制協議 tcp(transmission control protocol)是面向連線的,提供可靠交付,有流量控制,擁塞控制,提供全雙工通訊,面向位元組流(把應用層傳下來的報文看成位元組流,把位元組流組織成大小不等的資料塊)。
三次握手:
第一次握手:客戶端傳送syn包(syn=x)到伺服器,並進入syn_send狀態,等待伺服器確認;
第二次握手:伺服器收到syn包,必須確認客戶的syn(ack=x+1),同時自己也傳送乙個syn包(syn=y),即syn+ack包,此時伺服器進入syn_recv狀態;
第三次握手:客戶端收到伺服器的syn+ack包,向伺服器傳送確認包ack(ack=y+1),此包傳送完畢,客戶端和伺服器進入established狀態,完成三次握手。
握手過程中傳送的包裡不包含資料,三次握手完畢後,客戶端與伺服器才正式開始傳送資料。理想狀態下,tcp連線一旦建立,在通訊雙方中的任何一方主動關閉連線之前,tcp 連線都將被一直保持下去。
三次握手的原因
第三次握手是為了防止失效的連線請求到達伺服器,讓伺服器錯誤開啟連線。
失效的連線請求是指,客戶端傳送的連線請求在網路中滯留,客戶端因為沒及時收到伺服器端傳送的連線確認,因此就重新傳送了連線請求。滯留的連線請求並不是丟失,之後還是會到達伺服器。如果不進行第三次握手,那麼伺服器會誤認為客戶端重新請求連線,然後開啟了連線。但是並不是客戶端真正開啟這個連線,因此客戶端不會給伺服器傳送資料,這個連線就白白浪費了。
四次揮手
與建立連線的「三次握手」類似,斷開乙個tcp連線則需要「四次握手」。
第一次揮手:主動關閉方傳送乙個fin,用來關閉主動方到被動關閉方的資料傳送,也就是主動關閉方告訴被動關閉方:我已經不會再給你發資料了(當然,在fin包之前傳送出去的資料,如果沒有收到對應的ack確認報文,主動關閉方依然會重發這些資料),但是,此時主動關閉方還可以接受資料。
第二次揮手:被動關閉方收到fin包後,傳送乙個ack給對方,確認序號為收到序號+1(與syn相同,乙個fin占用乙個序號)。
第三次揮手:被動關閉方傳送乙個fin,用來關閉被動關閉方到主動關閉方的資料傳送,也就是告訴主動關閉方,我的資料也傳送完了,不會再給你發資料了。
第四次揮手:主動關閉方收到fin後,傳送乙個ack給被動關閉方,確認序號為收到序號+1,至此,完成四次揮手。
四次揮手的原因
客戶端傳送了 fin 連線釋放報文之後,伺服器收到了這個報文,就進入了 close-wait 狀態。這個狀態是為了讓伺服器端傳送還未傳送完畢的資料,傳送完畢之後,伺服器會傳送 fin 連線釋放報文。
time_wait
客戶端接收到伺服器端的 fin 報文後進入此狀態,此時並不是直接進入 closed 狀態,還需要等待乙個時間計時器設定的時間 2msl。這麼做有兩個理由:
應用應用層協議
埠號運輸層協議
備註網域名稱解析
dns
53
udp/tcp
長度超過 512 位元組時使用 tcp
動態主機配置協議
dhcp
67/68
udp
簡單網路管理協議
snmp
161/162
udp
檔案傳送協議
ftp
20/21
tcp
控制連線 21,資料連線 20
遠端終端協議
telnet
23
tcp
超文字傳送協議
簡單郵件傳送協議
smtp
25
tcp
郵件讀取協議
pop3
110
tcp
網際報文訪問協議
imap
143
tcp
在瀏覽器中輸入www.baidu.com後執行的全部過程
1、客戶端瀏覽器通過dns解析到www.baidu.com的ip位址220.181.27.48,通過這個ip位址找到客戶端到伺服器的路徑。客戶端瀏覽器發起乙個http會話到220.161.27.48,然後通過tcp進行封裝資料報,輸入到網路層。
2、在客戶端的傳輸層,把http會話請求分成報文段,新增源和目的埠,如伺服器使用80埠監聽客戶端的請求,客戶端由系統隨機選擇乙個埠如5000,與伺服器進行交換,伺服器把相應的請求返回給客戶端的5000埠。然後使用ip層的ip位址查詢目的端。
3、客戶端的網路層不用關心應用層或者傳輸層的東西,主要做的是通過查詢路由表確定如何到達伺服器,期間可能經過多個路由器,這些都是由路由器來完成的工作,我不作過多的描述,無非就是通過查詢路由表決定通過那個路徑到達伺服器。
4、客戶端的鏈路層,包通過鏈路層傳送到路由器,通過鄰居協議查詢給定ip位址的mac位址,然後傳送arp請求查詢目的位址,如果得到回應後就可以使用arp的請求應答交換的ip資料報現在就可以傳輸了,然後傳送ip資料報到達伺服器的位址。
計算機網路面試題
tcp udp區別以及tcp如何保證傳輸可靠性 tcp是基於連線的協議,udp是面向非連線的協議 tcp傳輸可靠,udp傳輸不可靠 tcp的可靠性是通過順序編號和確認 ack 來實現的。tcp在開始傳送乙個段時,首先將該段插入到傳送佇列之中,同時啟動時鐘。其後,如果收到了接受端對該段的ack資訊,就...
計算機網路面試題
常見題 1 osi開放式網際網路參考模型有哪些組成?2 客戶端傳給伺服器時經過tcp ip的四層模型?3 從輸入 到獲得頁面的過程?4 cookie作用是啥?和session區別是啥?tcp ip 1 什麼是tcp協議?什麼是udp協議?2 tcp udp區別?3 tcp報文頭有哪些組成?4 udp...
計算機網路面試題
傳輸層網路層 應用層 3 http協議 報文格式 請求報文 響應報文 請求頭各種字段 響應頭各種字段 http狀態碼。4 https協議 詳細握手過程 各種演算法 摘要演算法 數字簽名 數字證書的原理與過程 http與https 輸入乙個url到瀏覽器返回頁面發生了什麼 網易 cookie與sess...