傳輸控制協議(tcp):tcp(傳輸控制協議)定義了兩台計算機之間進行可靠的傳輸而交換的資料和確認資訊的格式,以及計算機為了確保資料的正確到達而採取的措施。協議規定了tcp軟體怎樣識別給定計算機上的多個目的程序如何對分組重複這類差錯進行恢復。協議還規定了兩台計算機如何初始化乙個tcp資料流傳輸以及如何結束這一傳輸。tcp最大的特點就是提供的是面向連線、可靠的位元組流服務。
使用者資料報協議(udp):udp(使用者資料報協議)是乙個簡單的面向資料報的傳輸層協議。提供的是非面向連線的、不可靠的資料流傳輸。udp不提供可靠性,也不提供報文到達確認、排序以及流量控制等功能。它只是把應用程式傳給ip層的資料報傳送出去,但是並不能保證它們能到達目的地。因此報文可能會丟失、重複以及亂序等。但由於udp在傳輸資料報前不用在客戶和伺服器之間建立乙個連線,且沒有超時重發等機制,故而傳輸速度很快。
tcp報文是tcp層傳輸的資料單元,也叫報文段。
1、埠號:用來標識同一臺計算機的不同的應用程序。
2)目的埠:埠指明接收方計算機上的應用程式介面。
tcp報頭中的源埠號和目的埠號同ip資料報中的源ip與目的ip唯一確定一條tcp連線。
2、序號和確認號:是tcp可靠傳輸的關鍵部分。序號是本報文段傳送的資料組的第乙個位元組的序號。在tcp傳送的流中,每乙個位元組乙個序號。e.g.乙個報文段的序號為300,此報文段資料部分共有100位元組,則下乙個報文段的序號為400。所以序號確保了tcp傳輸的有序性。確認號,即ack,指明下乙個期待收到的位元組序號,表明該序號之前的所有資料已經正確無誤的收到。確認號只有當ack標誌為1時才有效。比如建立連線時,syn報文的ack標誌位為0。
3、資料偏移/首部長度:4bits。由於首部可能含有可選項內容,因此tcp報頭的長度是不確定的,報頭不包含任何任選欄位則長度為20位元組,4位首部長度欄位所能表示的最大值為1111,轉化為10進製為15,15*32/8 = 60,故報頭最大長度為60位元組。首部長度也叫資料偏移,是因為首部長度實際上指示了資料區在報文段中的起始偏移值。
4、保留:為將來定義新的用途保留,現在一般置0。
5、控制位:urg ack psh rst syn fin,共6個,每乙個標誌位表示乙個控制功能。
1)urg:緊急指標標誌,為1時表示緊急指標有效,為0則忽略緊急指標。
2)ack:確認序號標誌,為1時表示確認號有效,為0表示報文中不含確認資訊,忽略確認號字段。
3)psh:push標誌,為1表示是帶有push標誌的資料,指示接收方在接收到該報文段以後,應盡快將這個報文段交給應用程式,而不是在緩衝區排隊。
4)rst:重置連線標誌,用於重置由於主機崩潰或其他原因而出現錯誤的連線。或者用於拒絕非法的報文段和拒絕連線請求。
5)syn:同步序號,用於建立連線過程,在連線請求中,syn=1和ack=0表示該資料段沒有使用捎帶的確認域,而連線應答捎帶乙個確認,即syn=1和ack=1。
6)fin:finish標誌,用於釋放連線,為1時表示傳送方已經沒有資料傳送了,即關閉本方資料流。
6、視窗:滑動視窗大小,用來告知傳送端接受端的快取大小,以此控制傳送端傳送資料的速率,從而達到流量控制。視窗大小時乙個16bit欄位,因而視窗大小最大為65535。
7、校驗和:奇偶校驗,此校驗和是對整個的 tcp 報文段,包括 tcp 頭部和 tcp 資料,以 16 位字進行計算所得。由傳送端計算和儲存,並由接收端進行驗證。
8、緊急指標:只有當 urg 標誌置 1 時緊急指標才有效。緊急指標是乙個正的偏移量,和順序號欄位中的值相加表示緊急資料最後乙個位元組的序號。 tcp 的緊急方式是傳送端向另一端傳送緊急資料的一種方式。
9、選項和填充:最常見的可選字段是最長報文大小,又稱為mss(maximum segment size),每個連線方通常都在通訊的第乙個報文段(為建立連線而設定syn標誌為1的那個段)中指明這個選項,它表示本端所能接受的最大報文段的長度。選項長度不一定是32位的整數倍,所以要加填充位,即在這個欄位中加入額外的零,以保證tcp頭是32的整數倍。
10、資料部分: tcp 報文段中的資料部分是可選的。在乙個連線建立和乙個連線終止時,雙方交換的報文段僅有 tcp 首部。如果一方沒有資料要傳送,也使用沒有任何資料的首部來確認收到的資料。在處理超時的許多情況中,也會傳送不帶任何資料的報文段
tcp建立連線的過程稱為三次握手
tcp斷開連線的四次揮手
1、伺服器向客戶端傳送fin和ack位置1的tcp報文段。
2、客戶端向伺服器返回ack位置1的tcp報文段。
3、客戶端向伺服器傳送fin和ack位置1的tcp報文段。
4、伺服器向客戶端返回ack位置1的tcp報文段。
在tcp斷開連線過程中,有乙個半關閉的概念。tcp 一方(通常是客戶端)可以終止傳送資料,但仍然可以接收資料,稱為半關閉。具體描述如下:
1、客戶端傳送fin報文段,半關閉了這個連線,伺服器傳送ack報文段接受半關閉。
2、伺服器繼續傳送資料,而客戶端只傳送ack確認,不再傳送任何資料。
3、當伺服器把所有資料都傳送完畢時,就傳送fin報文段,客戶再傳送ack報文段,這樣就關閉了tcp連線。
4、tcp斷開連線時在中間停止時稱為tcp半關閉。
常用的tcp埠號及其功能專案
埠| 協議 | 說明
21 | ftp | ftp伺服器所開放的控制埠
23 | telnet| 用於遠端登入可以遠端控制管理目標計算機。
25 | smip | smtp伺服器開放的埠,用於傳送郵件。
80 | http | 超文字傳輸協議
110 | pop3 | 用於郵件的接收
三次握手四次揮手協議
一 三次握手 三次握手用正常白話講就是 就這樣經過三次成功建立連線 至於為什麼要經過三報文握手建立連線呢?不是說只能這樣建立連線,只是因為這樣能避免很多建立連線的問題。它可以防止已失效的連線請求報文段突然又傳送到了服務端,因而產生錯誤。比如 client發出的第乙個連線請求報文段並沒有丟失,而是在某...
Http協議三次握手和四次揮手
tcp是主機對主機層的傳輸控制協議,提供可靠的連線服務,採用三次握手確認建立乙個連線 位碼即tcp標誌位,有6種標示 syn synchronous建立聯機 ack acknowledgement 確認 psh push傳送 fin finish結束 rst reset重置 urg urgent緊急...
TCP IP協議三次握手和四次揮手
偶爾聽到同學在談論三次握手什麼的時候,我卻一點也沒印象,過了幾天才想起來時候學習一下了 概念介紹 tcp transmission control protocol 網路傳輸控制協議,是一種面向連線的 可靠的 基於位元組流的傳輸層通訊協議,資料傳輸前建立連線的工作要經過三次握手,資料傳輸後斷開連線的...