(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.可靠傳輸基本原理 停止等...