TCP IP以及socket原理

2021-07-10 05:28:17 字數 1413 閱讀 4593

tcp/ip協議族, tcp/ip(transmission control protocol/internet protocol)即傳輸控制協議/網間協議,定義了主機如何連入網際網路及資料如何再它們之間傳輸的標準,

從字面意思來看tcp/ip是tcp和ip協議的合稱,但實際上tcp/ip協議是指網際網路整個tcp/ip協議族。不同於iso模型的七個分層,tcp/ip協議參考模型把所有的tcp/ip系列協議歸類到四個抽象層中

應用層:tftp,http,snmp,ftp,smtp,dns,telnet 等等

傳輸層:tcp,udp

網路層:ip,icmp,ospf,eigrp,igmp

資料鏈路層:slip,cslip,ppp,mtu

其中tcp協議在傳輸層,ip協議在網路層。

我們知道兩個程序如果需要進行通訊最基本的乙個前提能能夠唯一的標示乙個程序,在本地程序通訊中我們可以使用pid來唯一標示乙個程序,但pid只在本地唯一,網路中的兩個程序pid衝突機率很大,這時候我們需要另闢它徑了,我們知道ip層的ip位址可以唯一標示主機,而tcp層協議和埠號可以唯一標示主機的乙個程序,這樣我們可以利用ip位址+協議+埠號唯一標示網路中的乙個程序。

能夠唯一標示網路中的程序後,它們就可以利用socket進行通訊了,什麼是socket呢?我們經常把socket翻譯為套接字,socket是在應用層和傳輸層之間的乙個抽象層,它把tcp/ip層複雜的操作抽象為幾個簡單的介面**用層呼叫已實現程序在網路中通訊。

socket是"開啟—讀/寫—關閉"模式的實現,以使用tcp協議通訊的socket為例,其互動流程大概是這樣子的

伺服器根據位址型別(ipv4,ipv6)、socket型別、協議建立socket

伺服器為socket繫結ip位址和埠號

伺服器socket監聽埠號請求,隨時準備接收客戶端發來的連線,這時候伺服器的socket並沒有被開啟

客戶端建立socket

客戶端開啟socket,根據伺服器ip位址和埠號試圖連線伺服器socket

伺服器socket接收到客戶端socket請求,被動開啟,開始接收客戶端請求,直到客戶端返回連線資訊。這時候socket進入阻塞狀態,所謂阻塞即accept()方法一直到客戶端返回連線資訊後才返回,開始接收下乙個客戶端諒解請求

客戶端連線成功,向伺服器傳送連線狀態資訊

伺服器accept方法返回,連線成功

客戶端向socket寫入資訊

伺服器讀取資訊

客戶端關閉

伺服器端關閉

FTP協議原理以及TCP IP協議

檔案傳輸協議 ftp利用 tcpftp 協議占用了兩個 tcp埠,ftp伺服器監聽 21號埠,準備接受使用者的連線請求。當使用者訪問 ftp伺服器時便主動與伺服器的 2120 號埠主動發出建立資料連線的請求,檔案傳輸完成後資料連線隨之釋放。在客戶端看來,這種處理方式被叫做 被動式 ftp windo...

tcp ip 網路程式設計 socket

一 使用tcp協議實現client向server傳送資料 tcp程式設計例一 客戶端給服務端傳送資訊。服務端輸出此資訊到控制台上 網路程式設計實際上就是socket的程式設計 public class testtcp1 catch ioexception e finally catch ioexce...

tcp ip工作原理

tcp ip 的工作原理 下面以採用tcp ip協議傳送檔案為例,說明tcp ip的工作原理,其中應用層傳輸檔案採用檔案傳輸協議 ftp tcp ip協議的工作流程如下 在源主機上,應用層將一串應用資料流傳送給傳輸層。傳輸層將應用層的資料流截成分組,並加上tcp報頭形成tcp段,送交網路層。在網路層...