TCP及socket通信原理詳解

TCP/IP原型

DARPA一個項目,逐漸演變而來的。

wps3126.tmp

端口號

0~1023:管理員纔有權限使用,永久地分配給某應用使用;

註冊端口:

1024~41951:只有一部分被註冊,分配原則上非特別嚴格;

動態端口或私有端口:

41952+:

/proc/sys/net/ipv4/ip_local_port_range:內核參數定義兩個數字,表示可以做爲臨時端口的起始數字和結束數字。

套接字類型:

tcp socket    TCP傳輸數據協議、 SCTP流控制傳輸協議

        udp socket   UDP用戶數據報協議      DCCP

raw socket   裸套接字  不通過TCP和UDP等協議直接由應用層的程序直接到達網絡層由ipv4  ipv6封裝傳輸

TCP協議的功能:

①連接建立

②將數據打包成段   MTU通常爲1500以下

       校驗和

③確認、重傳以及超時機制

④排序

序列號 32位  並非從0開始  過大的話循環輪換 從0開始

⑤流量控制  速度不同步2臺數據的服務器    防止阻塞

緩衝區  發送緩衝    接收緩衝

滑動窗口 

⑥擁塞控制  多個進程通信

慢啓動   通過慢啓動的方式探測,啓動的時候很小  隨後以指數級增長。

擁塞避免算法

RFC:請求註解文檔,起草定義這個協議的組織定義這個協議實現的過程等。

wps3137.tmp

socket: IPC的一種實現,用於同一或不同主機上的進程間的通信;

socket通信在domain中實現:

識別一個socket的方法(socket地址格式)

Domain:

Unix Domain: 基於socket機制實現同一主機不同進程間通信的一種方式;AF_UNIX, AF_LOCAL,地址是一個路徑名(文件) 同一主機通過內核中一個文件直接傳輸,而不需要通過協議棧傳輸。

IPv4 Domain: AF_INET, 基於socket機制藉助於ipv4協議實現不同主機(也可以是同一主機)上的進程間通信的機制; 地址是32位的ipv4地址+16位的端口號。

IPv6 Domain: AF_INET6, 地址是128位的Ipv6地址+16位的端口號

socket的類型:

TCP:流式socket,SOCK_STREAM

可靠、雙向、面向字節流

UDP:數據報式socket, SOCK_DGRAM

相關的系統調用:

socket(): 創建一個新的socket

bind():綁定於一個套接字地址上;

listen(): 監聽套接字;

accept(): 接收連接請求;

connect(): 發起連接請求;

close(): 關閉連接

read()和write(): recv(), send(), recvfrom(), sendto()

wps315A.tmp

 

tcp協議通過tcp狀態來標記當前處於通信過程的哪個階段:

CLOSED, LISTEN, SYN_SENT, SYN_RECV, ESTABLISHED, FIN_WAIT1, CLOSE_WAIT, FIN_WAIT2, LAST_ACK, TIME_WAIT, CLOSED

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章