網路 TCP協議詳解

2021-09-23 20:39:44 字數 2631 閱讀 9373

(1)源埠號以及目的埠號:各佔2個位元組,埠是傳輸層和應用層的服務介面,用於尋找傳送端和接收端的程序, 一般來講,通過埠號和ip位址,可以唯一確定乙個tcp連線,在網路程式設計中,通常被稱為乙個socket介面。

(2)序號:佔4位元組,用來標識從tcp傳送端向tcp接收端傳送的資料字節流(seq)。

(4)資料偏移:4位用於指出tcp首部長度,若不存在選項,則這個值為20位元組,資料偏移的最大值為60位元組。

(5)保留字段:6位,暫時可忽略,值全為0

(6)標誌位:

urg(緊急) : 為1時表明緊急指標字段有效;

ack(確認):為1時表明確認號字段有效;

psh(推送):為1時接收方應盡快將這個報文段交給應用層;

rst(復位):為1時表明tcp連線出現故障必須重建連線;

syn(同步):在連線建立時用來同步序號;

fin (終止): 為1時表明傳送端資料傳送完畢要求釋放連線,斷開連線;

(7)接收視窗:佔2個位元組,用於流量控制和擁塞控制,表示當前接收緩衝區的大小。動態控制緩衝區大小。在計算機網路中,通常是用接收方的接收能力的大小來控制傳送方的資料傳送量。tcp連線的一端根據緩衝區大小確定自己的接收視窗值,告訴對方,使對方可以確定傳送資料的位元組數。

(8)校驗和 :佔2個位元組,範圍包括首部和資料兩部分。

選項是可選的,預設情況是不選。

(1)ip位址:用來標識網路中的乙個通訊實體的位址。通訊實體可以是計算機、路由器等。為實現網路中不同計算機之間的通訊,每台計算機都必須有乙個唯一的標識—ip位址。 32位二進位制。(定位電腦)

(2)埠:區分一台主機的多個不同應用程式,埠號範圍為0-65535,其中0-1023位為系統保留。表示是乙個16位的二進位制整數,2個位元組。(定位電腦中的軟體)

如:http:80 ftp:21 telnet:23 ;tomcat:8080;oracle:1521;mysql:3306

檢視埠的命令:

檢視所有埠:netstat -ano;

檢視指定埠:netstat -ano|findstr 「埠號」;

檢視指定程序:tasklist findstr 「程序號」

檢視具體程式:使用任務管理器檢視pid

套接字就像傳輸層向應用層開的乙個小口,應用程式通過這個小口向遠端傳送資料,或者接受遠端發來的資料。

socket原理機制:

通訊的兩端都有socket,網路通訊其實就是socket間的通訊,資料在兩個socket間通過io傳輸,ip位址+埠號組成了所謂的socket,socket是網路上執行的程式之間雙向通訊鏈路的終結點,是tcp和udp的基礎。

傳輸特點:

tcp協議是面向連線的、可靠的、有序的、以位元組流的方式傳送資料,通過三次握手方式建立連線,形成傳輸資料的通道,在連線中進行大量資料的傳輸,效率會稍低;

客戶端的socket類

伺服器端的serversocket類

socket通訊的步驟:

① 建立serversocket和socket;

② 開啟連線到socket的輸入/輸出流 ;

③ 按照協議對socket進行讀/寫操作 ;

④ 關閉輸入輸出流、關閉socket;

伺服器端

(1)建立serversocket物件,繫結監聽埠;bind(埠)

(2)通過accept()方法監聽客戶端請求 ;listen(監聽狀態)accept(返回和客戶端連線的例項)

(3)連線建立後,通過輸入流讀取客戶端傳送的請求資訊 ;read/write(讀寫)

(4)通過輸出流向客戶端傳送相應資訊;outputstream.write()

(5)關閉相關資源;close(關閉資源)

客戶端(1)建立socket物件,指明需要連線的伺服器的位址和埠號;connect(連線 ip + 埠)

(2) 連線建立後,通過輸出流想伺服器端傳送請求資訊 ;read/write (讀寫)

(3)通過輸入流獲取伺服器響應的資訊;inputstream.read();

(4)關閉響應資源 ;close(關閉資源)====》四次揮手(雙向的過程)

server:

public

static

void

main

(string[

] args)

throws ioexception

//關閉資源

reader.

close()

; socket.

close()

; serversocket.

close()

;}client:

public

static

void

main

(string[

] args)

throws ioexception

詳解TCP協議

16位的源埠號 傳送源的埠號 16位的目標埠號 目標的埠號 32位的序號 互動的初始資料段,序號值由系統生成的隨機值 isn。後續的報文段的序號為isn 所攜帶資料在整個位元組流中的偏移量。特點 1 所有的報文段序號不重複。2 後續的報文段序號值比前面的大。32位的確認號 由接收段填充,其值為序列號...

TCP協議詳解

參考部落格 在可靠的tcp網路通訊中,客戶端和伺服器端通訊建立連線的過程可簡單表述為三次握手 建立連線的階段 和四次揮手 釋放連線階段 下圖是這兩個階段的乙個完整的表述 其狀態圖可以表示為,在tcp連線建立的時候,存在乙個如下的有限狀態機 在狀態轉化圖中,其中客戶端的狀態轉移用帶箭頭的粗實線表示,伺...

TCP協議詳解

首先tcp是一種可靠的面向位元組流的協議,流指的是流入到程序或從程序流出的位元組序列。tcp的可靠性主要是由其首部的複雜結構結合可靠性傳輸原理 比如停止等待協議 arq 協議實現,可以說,tcp的首部是tcp能可靠傳輸的必要保障,了解tcp的首部很有必要 1.tcp首部 2.可靠傳輸基本原理 停止等...