Socket、TCP/IP、HTTP、FTP及網路程式設計
1 TCP/IP協議族
1.1 TCP/IP協議(傳輸控制協議)由網路層的IP協議和傳輸層的TCP協議組成;
IP層負責網路主機的定位,資料傳輸的路由,由IP地址可唯一確定Internet上的一臺主機;
TCP層負責面向應用的可靠的或非可靠的資料傳輸機制,這是網路程式設計的主要物件。
1.2 TCP/IP是個協議族,分為三個層次:
網路層:IP協議、ICMP協議、ARP協議、RARP協議、BOOTP協議
傳輸層:TCP協議、UDP協議
應用層:FTP、HTTP、TELNET、SMTP、DNS等協議
HTTP是應用層協議,其傳輸都是被包裝成TCP協議傳輸。可以用SOCKET實現HTTP。SOCKET是實現傳輸層協議的一種程式設計API,可以是TCP,也可以使UDP。
2 TCP
TCP(傳輸控制協議),提供面向連線、可靠的位元組流服務。當客戶和伺服器彼此交換資料前,必須先在雙方之間建立以TCP連線才可傳輸資料。TCP提供超時重發,丟棄重複資料,檢驗資料,流量控制等功能,保證資料能從一端傳到另一端。理想狀態下,TCP連線一旦建立,在通訊雙方中的任何一方主動關閉連線前,TCP連線都將被一直保持下去。斷開連線時伺服器和客戶端均可以主動發起斷開TCP連線的請求。
TCP市一中面積相連線的保證可靠傳輸的協議。通過TCP協議傳輸,得到一個順序的無差錯的資料流。傳送方和接收方的成對的兩個socket之間必須建立連線,以便在TCP協議的基礎上進行通訊,當一個socket等待建立連線時,另一個socket可以要求進行連線,一旦這兩個socket連線起來,它們就可以進行雙向資料傳輸,雙方都可進行傳送或接收操作。
TCP特點:
TCP是面向連線的協議,通過三次握手建立連線,通訊完成時要拆除連線,由於TCP是面向連線協議,所以只能用於點對點的通訊,並建立連線也消耗時間和開銷;
TCP傳輸資料無大小限制,進行大資料傳輸;
TCP是一個可靠的協議,它能保證接收方能完整正確地接收到傳送方傳送的全部資料;
要了解TCP,一定要知道“三次握手、四次拜拜”。”三次握手“是傳送資料前必須建立的連線,握完手才開始傳送。
第一次握手:客戶端傳送syn包(syn=j)到伺服器,並進入SYN_SEND狀態,等待伺服器確認;
第二次握手:伺服器收到syn包,必須確認客戶的SYN(ack=j+1),同時傳送一個SYN包(syn=k),即SYN+ACK包,此時伺服器進入SYN_RECV狀態;
第三次握手:客戶端收到伺服器的SYN+ACK包,向伺服器傳送確認包ACK(ack=k+1),此包傳送完畢,客戶端和伺服器進入ESTABLISHED狀態,完成三次握手;
適用情況:
TCP傳送的包有序號,對方收到包後要給一個反饋,若超過一定時間還沒收到反饋就自動執行超時重發,因此TCP最大優點是可靠。一般網頁HTTP、郵件SMTP、遠端連線TELNET、檔案FTP傳送就用TCP。
TCP在網路通訊商有極強的生命力,如遠端連線TELNET和檔案傳輸FTP都需要不定長度的資料被可靠傳輸。但可靠傳輸是要付出代價的,對資料內容正確性的檢驗必然佔用計算機的處理時間和網路的頻寬,因此TCP傳輸的效率不如UDP高。
3 UDP
UDP(使用者資料包協議),是一個無連線的簡單的面向資料包的運輸層協議。UDP不提供可靠性,它只是把應用程式傳給IP層的資料包傳送出去,但是並不能保證它們能到達目的地。由於UDP在傳輸資料包前不用在客戶和伺服器之間建立一個連線,且沒有超時重發等機制,因此傳輸速度很快。
UDP是一種面向無連線的協議,每個資料包都是一個獨立的資訊,包括完整的源地址或目的地址,它在網路上以任何可能的路徑傳往目的地,因此能否到達目的地,到達目的地的時間以及內容的正確性都是不能保證的。
UDP特點:
UDP是面向無連線的通訊協議,UDP資料包括目的埠號、源埠號資訊,由於通訊不需要連線,所以可實現廣播傳送;
UDP傳輸資料時有大小限制,每個被傳輸的資料包必須限定在64KB內;
UDP是一個不可靠的協議,傳送方所傳送的資料包並不一定以相同次序到達接收方;
適用情況:
UDP是面向訊息的協議,通訊時不需要建立連線,資料的傳輸自然是不可靠的,UDP一般用於多點通訊和實時的資料業務,如語音廣播、視訊、QQ、TFTP(簡單檔案傳送)、SNMP(簡單網路管理協議)、RTP(實時傳送協議)、RIP(路由資訊協議,如報告股票市場、航空資訊)、DNS(域名解釋)。注重速度流暢。
UDP操作簡單,且僅需要較少的監護,因此通常用於區域網高可靠性的分散系統中客戶端/伺服器應用程式。如視訊會議系統,並不需要音訊視訊資料絕對的正確,只要保證連貫性。
4 Socket
Socket也稱套接字,用於描述IP地址和埠,是一個通訊鏈的控制程式碼。網路上的兩個程式通過一個雙向的通訊連線實現資料的交換,這個雙向鏈路的一段是一個socket,一個socket由一個IP地址和一個埠號唯一確定。應用程式通常通過套接字向網路發出請求或者應答網路請求。socket是TCP/IP協議的一個程式設計介面,但socket所支援的協議種類也不光TCP/IP一種,因此兩者之間沒有必然聯絡。在Java環境下,socket程式設計主要是基於TCP/IP協議的網路程式設計。
相關文章
- python網路-Socket之TCP程式設計(26)PythonTCP程式設計
- TCP/IP、HTTP和Socket總結TCPHTTP
- 淺談 TCP/IP 網路程式設計中 socket 的行為TCP程式設計
- 網路通訊——socket(TCP/IP).Http,同步和非同步的區別TCPHTTP非同步
- 網路分層TCP/IP 與HTTPTCPHTTP
- TCP/IP網路程式設計模型TCP程式設計模型
- Linux Socket C語言網路程式設計:TCP SocketLinuxC語言程式設計TCP
- go socket、http網路程式設計demoGoHTTP程式設計
- Socket 程式設計 (網路篇)程式設計
- 網路協議 - TCP/IP、HTTP、HTTPS、HTTP2.0協議TCPHTTP
- 網路程式設計TCP/IP詳解程式設計TCP
- 基於TCP/UDP的Socket程式設計,HTTP/HTTPS協議TCPUDP程式設計HTTP協議
- HTTP、Socket與TCPHTTPTCP
- Python網路Socket程式設計Python程式設計
- [計算機網路]TCP/IP計算機網路TCP
- TCP/IP 和SocketTCP
- TCP/IP、HTTP、socket 這些,你真的瞭解嗎?TCPHTTP
- Socket程式設計,從TCP分析到建立web網站程式設計TCPWeb網站
- 基於TCP協議的Socket網路程式設計( )TCP協議程式設計
- TCP、UDP、HTTP及Socket的簡單講解TCPUDPHTTP
- Go語言中的TCP/IP網路程式設計GoTCP程式設計
- socket,TCP/IP的理解TCP
- 初試python的socket程式設計--ftpPython程式設計FTP
- 【Windows socket+IP+UDP+TCP】網路基礎WindowsUDPTCP
- [面試∙網路] TCP/IP(六):HTTP 與 HTTPS 簡介面試TCPHTTP
- java多執行緒實現TCP網路Socket程式設計(C/S通訊)Java執行緒TCP程式設計
- Java:基於TCP協議網路socket程式設計(實現C/S通訊)JavaTCP協議程式設計
- TCP/IP 協議及網路分層模型TCP協議模型
- 面試 — 網路 TCP/IP面試TCP
- TCP/IP網路模型TCP模型
- 面試 -- 網路 TCP/IP面試TCP
- TCP TCP/IP HTTP HTTPSTCPHTTP
- Linux網路程式設計--TCP/IP協議(轉)Linux程式設計TCP協議
- socket程式設計在TCP中的應用程式設計TCP
- Java Tcp協議socket程式設計學習JavaTCP協議程式設計
- linux下TCP socket程式設計初步(1)LinuxTCP程式設計
- socket與TCP/IP區別TCP
- Socket網路程式設計程式設計