一、網路位元組序與主機位元組序
1、主機位元組序:
就是自己的主機內部,記憶體中資料的儲存順序,可以分為兩種:
2、網路位元組序
大端位元組序即網路位元組序
3、資料傳輸過程
a的固有資料儲存-------標準化--------轉化成b的固有格式
iia的主機位元組序----------網路位元組序 ---------b的主機位元組序
標準化原因:不同的cpu有不同的位元組序型別
二、socket通訊 ---unix版
1、socket通訊流程
socket是"開啟—讀/寫—關閉"模式的實現,以使用tcp協議通訊的socket為例,其互動流程大概如下:
伺服器根據位址型別(ipv4,ipv6)、socket型別、協議建立socket
伺服器為socket繫結ip位址和埠號
伺服器socket監聽埠號請求,隨時準備接收客戶端發來的連線,這時候伺服器的socket並沒有被開啟
客戶端建立socket
客戶端開啟socket,根據伺服器ip位址和埠號試圖連線伺服器socket
伺服器socket接收到客戶端socket請求,被動開啟,開始接收客戶端請求,直到客戶端返回連線資訊。這時候socket進入阻塞狀態,所謂阻塞即accept()方法一直到客戶端返回連線資訊後才返回,開始接收下乙個客戶端諒解請求
客戶端連線成功,向伺服器傳送連線狀態資訊
伺服器accept方法返回,連線成功
客戶端向socket寫入資訊
伺服器讀取資訊
客戶端關閉
伺服器端關閉
2、三次握手建立連線
圖示過程如下:
3、四次揮手斷開連線
圖示過程如下:
接收到這個fin的源傳送端tcp對它進行確認。
這樣每個方向上都有乙個fin和ack。
4、socket通訊主要函式資訊
《---socket()、bind()、listen()、connect()、accept()、read()、write()、close()---》
socket函式 -- int socket(int domain, int type, int protocol)
引數解釋:
可設定值:
名稱 含義
名稱 含義
pf_unix,pf_local
本地通訊
pf_x25
itu-t x25 / iso-8208協議
af_inet,pf_inet
ipv4 internet協議
pf_ax25
amateur radio ax.25
pf_inet6
ipv6 internet協議
pf_atmpvc
原始atm pvc訪問
pf_ipx
ipx-novell協議
pf_netlink
核心使用者介面裝置
pf_packet
底層包訪問
可設定值:
名稱 含義
sock_stream
tcp連線,提供序列化的、可靠的、雙向連線的位元組流。支援帶外資料傳輸
sock_dgram
支援udp連線(無連線狀態的訊息)
sock_seqpacket
序列化包,提供乙個序列化的、可靠的、雙向的基本連線的資料傳輸通道,資料長度定常。每次呼叫讀系統呼叫時資料需要將全部資料讀出
sock_raw
raw型別,提供原始網路協議訪問
sock_rdm
提供可靠的資料報文,不過可能資料會有亂序
sock_packet
這是乙個專用型別,不能呢過在通用程式中使用
注:並不是所有的協議族都實現了這些協議型別,例如,af_inet協議族就沒有實現sock_seqpacket協議型別。
Socket通訊過程
伺服器端 accept 以同步方式從偵聽套接字的連線請求佇列中提取第乙個掛起的連線請求,然後建立並返回新的socket。不能使用返回的這個 socket 接受連線佇列中的任何附加連線。然而,可以呼叫返回的 socket 的remoteendpoint 方法來標識遠端主機的網路位址和埠號。在阻止模式中...
通訊過程Socket程式設計
c s模式 瀏覽器 browser 伺服器 server 模式。只需在一端部署伺服器,而另外一端使用每台pc都預設配置的瀏覽器即可完成資料的傳輸。優缺點 簡單的c s模型通訊 server端 listen函式 func listen network,address string listener,e...
socket 的通訊過程
1.建立套接字 linux在利用socket 系統呼叫建立新的套接字時,需要傳遞套接字的位址族識別符號 套接字型別以及協議,其函式定義於net socket.c中 asmlinkage long sys socket int family,int type,int protocol 實際上,套接字對...