TCP IP協議學習

2021-08-31 21:11:17 字數 1693 閱讀 5019

tcp提供一種面向連線的、可靠的位元組流服務。

tcp/ip一般被認為是四層協議:

應用層:處理特定的應用程式細節。

傳輸層:主機間的應用程式提供端到端的通訊,包括tcp(傳輸控制協議)和udp(使用者資料報協議)。

網路層:網路層的協議包括ip協議、icmp協議(internet網際網路控制報文協議)、igmp協議(internet組管理協議)。

鏈路層:主要作用是:1)為ip模組傳送和接受ip資料段;2)為arp模組傳送arp請求和接受應答;3)為rarp模組傳送rarp請求和接受rarp應答。

面向連線的、可靠的

全雙工協議、半關閉

錯誤檢查

將資料打包成端,排序

確認機制

資料恢復重傳

流量控制,滑動視窗

擁塞控制,慢啟動和擁塞避免演算法

序列號(序列碼,sequence number):32位

應答號(acknowledgment number):32位的序列號由接收端計算機使用,重組分段的報文成最初形式。,如果設定了ack控制位,這個值表示乙個準備接收的包的序列碼。

資料偏移量(hlen):4位包括tcp頭大小,指示何處資料開始

保留(reserved):6位值域,這些位必須是0。為了將來定義新的用途所保留。

標誌(code bits):6位標誌域。表示為:緊急標誌、有意義的應答標誌、推、重置連線標誌、同步序列號標誌、完成傳送資料標誌。按照順序排列是:urg、ack、psh、rst、syn、fin。

三次握手,是指建立乙個tcp連線時,需要客戶端和伺服器共傳送3個包。

建立連線時,客戶端傳送syn包(syn=j)到伺服器,並進入syn_send狀態,等待伺服器確認;

伺服器收到syn包,必須確認客戶的syn(ack=j+1),同時自己也傳送乙個syn包(syn=k),此時伺服器進入syn_recv狀態;

客戶端收到伺服器syn+ack包,向伺服器傳送確認包ack(ack=k+1),此時傳送完畢,客戶端和伺服器進入established狀態,完成三次握手。

客戶端或伺服器均可主動發起揮手動作,在socket程式設計中,任何一方執行close()操作即可產生揮手操作。客戶端傳送fin後,進入終止等待狀態,伺服器收到客戶端連線釋放報文後,立即給客戶端傳送確認;伺服器進入close_wait狀態,此時伺服器請求高層應用程序斷開與客戶端的連線,此時進入「半關閉狀態」,此時客戶端不可用傳送給伺服器,伺服器可以傳送給客戶端;如果伺服器沒有資料傳送給客戶端,其應用程式就通知tcp釋放連線,然後傳送給客戶端連線釋放,並等待確認;客戶端傳送確認後,進入time_wait狀態,tcp連線還沒有釋放,經過等待計時器設定2msl後進入close狀態。

客戶端傳送乙個fin,用來關閉客戶端到伺服器的資料傳送,然後等待伺服器的確認,fin=1;

伺服器收到這個fin,它傳送乙個ack,確認ack為收到的序號+1;

關閉伺服器到客戶端的連線,傳送乙個fin給客戶端,;

客戶端收到fin後,並發回乙個ack報文確認,並將確認序號ack設定為收到+1。

TCP IP協議學習

tcp ip參考模型 是乙個抽象的分層模型,這個模型中,所有的 tcp ip 系列網路協議 都被歸類到4個抽象的 層 中。每一抽象層建立在低一層提供的服務上,並且為高一層提供服務。完成一些特定的任務需要眾多的協議協同工作,這些協議分布在參考模型的不同層中的,因此有時稱它們為乙個 協議棧。最上面的是應...

TCP IP協議學習總結

本文為自己的學習總結,沒有那些大神們那麼的深入,只為自己的一些心得總結,有很多不足之處,請各位勿噴,望多多指正!無限感激 一 tcp ip協議 為什麼會有這個協議 為了實現不同計算機系統 網路系統之間的通訊其他還有很多網路協議,只是很多只能特定某些計算機系統間的通訊,通用性不強 tcp ip協議是什...

如何學習TCP IP協議

學習tcp ip協議的終極方法是自己研究並實現乙個tcp ip協議棧。在linux核心層面,是要實現下圖紅框內的部分。乍看這個做法有點不可思議,但其實並沒有看上去那麼難,下面提供乙個可行的方法。1 確定乙個linux發行版,ubuntu redhat都行,uname檢視核心具體版本,去the lin...