三、鏈接網絡的另外一種途徑是使用網橋,網橋是在鏈路上對網絡進行互連,而路由器則是在網絡層上對網絡進行互連。網橋使得多個局域網組合在一塊兒,這樣對上層來講就好像是一個局域網。
一、TCP/IP對IP提供不可靠的、無鏈接的數據報傳送服務。
不可靠:它不能保證IP數據能成功到達目的地。IP僅提供盡力而爲的傳輸服務,若是發生某種錯誤,IP有一個簡單的錯誤處理算法:丟棄該數據報,而後發送ICMP消息報給信源端。
無鏈接:IP並不維護任何關於後續數據報的狀態信息,每一個數據報的處理都是相互獨立的,也就是說,IP數據報能夠不按發送順序接收。
二、IP數據報
TTL:time-to-live,生存時間字段設置了數據報能夠通過的最多路由器數。它指定了數據報的生存時間,TTL的初始值由源主機設置,一旦通過一個處理它的路由器,它的值就減去1,當該字段的值爲0時,數據報就丟棄,併發送ICMP報文通知源主機。
三、IP路由選擇
若是主機與源主機直接相連或都在共享網絡上(以太網或令牌環網),那麼IP數據報就直接發送到目的主機上,不然,主機把數據報發往一默認的路由器上,由路由器來轉發該數據報。
四、路由表中每一項都包含下面這些信息:
- 目的地址:它既能夠是完整的主機地址,也能夠是一個網絡地址,由該表中的標誌字段來指定。
- 下一跳路由器的IP地址,或者有直接鏈接的網絡IP地址
- 標誌:其中一個標誌指明目的IP地址是網絡地址仍是主機地址,另外一個標誌指明下一站路由器是否爲真正的下一站路由器
- 爲數據報的傳輸指定一個網路接口
五、IP路由選擇主要完成如下這些功能:
1)搜索路由表,尋找能與目的IP地址徹底匹配的表目(網絡號和主機號都要匹配)。若是找到,則把報文發送給該表目指定的下一站路由器或直接鏈接的網絡接口
2)搜索路由表,尋找能與目的網絡號相匹配的表目,若是找到,則把報文發送給該表目指定的下一站路由器或直接鏈接的網絡接口
3)搜索路由表,尋找標爲」默認「的表目,若是找到,則把報文發送給該表目指定的下一站路由器 。
若是上面這些步驟都沒有成功,那麼該數據報就不能被傳送。
六、子網尋址
子網編制不是把IP地址當作是由單純的一個網絡號和一個主機號組成,而是把主機號再分紅一個子網號和一個主機號。
七、子網掩碼
任何主機在引導時進行的部分配置中是指定主機IP地址,除了IP地址之外,主機還須要知道有多少比特用於子網號及多少比特用於主機號,這是在引導過程當中經過子網掩碼來肯定的,這個掩碼是一個32bit的值,其中值爲1的比特留給網絡號和子網號。
八、當一臺主機把以太網數據幀發送到位於同一局域網上的另外一臺主機時,是根據48bit的以太網地址來肯定目的接口的。地址解析協議爲這兩種不一樣的地址形式提供映射:32bit的IP地址和數據鏈路層使用的任何類型的地址。
4、運輸層
一、TCP鏈接的三次握手過程:算法
- 請求端發送一個SYN段(同步序列編號)指明客戶端打算鏈接的服務器端的端口,以及初始序號seq
- 服務器端返回包含服務器的初始序號的SYN報文段做爲應答,同時將序號ack設置爲客戶端的seq+1做爲對客戶端SYN報文段進行確認
- 客戶端將確認序號ack設置爲服務器端的seq+1做爲對服務器端的SYN報文段進行確認
示意圖以下:數據庫
seq:本報文段所發送數據的第一個字節的序號服務器
ack:指望收到對方下一個報文段的第一個數據的字節序號網絡
確認ACK:僅當ACK=1時確認號字段纔有效,當ACK=0時,確認號無效併發
同步SYN:在鏈接創建時,用來同步序號,當SYN=13而ACK=0時,代表這是一個鏈接請求報文段,對方若贊成創建鏈接,則應在響應的報文段中使SYN=1,所以SYN=1表示這是一個鏈接請求或者鏈接接受報文測試
終止FIN:用來釋放一個鏈接,當FIN=1時,代表此報文段的發送方的數據已經發送完畢,並要求釋放運輸鏈接blog
二、TCP的鏈接釋放過程(四次揮手):接口
- 鏈接釋放時,首先由一端發送終止鏈接,向服務器端一個FIN,用來關閉從客戶端到服務器端的數據傳送。
- 當服務器端收到這個FIN後,它發回一個ACK,確認序號ack=收到的序號u+1,而後服務器端就進入關閉狀態,從客戶端到服務器端的鏈接就釋放了。可是若是服務器端要發送數據,客戶端仍要接收
- 當客戶端收到服務器端的確認後,就進入終止狀態2,此時服務器端發送的FIN=1,seq=w,ack仍然爲u+1
- 客戶端在收到服務器端的鏈接釋放報文段後,必須對此發送確認,將ACK置爲1,確認序號ack=w+1,本身序號seq=u+1
- 在通過時間等待計時器設置的時間2MSL後,客戶端才進入關閉狀態(有兩個緣由:一是爲了保證A發送的最後一個ACK報文段可以到達B,二是使得本鏈接持續的時間內所產生的報文段都從網絡消失)
三、TCP可靠傳輸的實現路由
以字節爲單位的滑動窗口同步
超時重傳
選擇確認SACK