1、tcp和套接字層之間的介面
tcp和套接字之間的介面資料結構是struct proto,這個結構體的元素是一系列的函式指標,從tcp_close到tcp_shutdown函式是tcp連線管理處理函式。tcp資料接受函式是tcp_recvmsg和tcp_v4_do_rcv函式實現。struct proto_tcp_prot定義如下:
struct proto tcp_prot = ;
tcp和套接字層的介面資料結構在af_inet協議族套接字初始化函式inet_init呼叫proto_register函式註冊,
static int __init inet_init(void)
2、tcp和ip層之間的介面2.1、tcp和ip層之間的接受介面
tcp協議和ip層的資料結構介面是struct net_protocol,struct net_protocol tcp_protocol如下:
static const struct net_protocol tcp_protocol = ;
ip層通過ip_local_deliver_finish函式處理後將資料報上傳到傳輸層,是根據協議號proto在inet_protos全域性陣列中找打傳輸層的接受函式。tcp和ip層的結構資料結構struct net_protocol tcp_protocol的註冊在inet_init函式中呼叫inet_add_protocol儲存到全域性陣列inet_protos中。
static int __init inet_init(void)
2.2、tcp和ip層之間的傳送介面
tcp和ip層之間的傳送介面資料結構是struct inet_connection_sock_af_ops,tcp的的struct inet_connection_sock_af_ops的資料結構的例項是ipv4_specific,包含了一組af_inet位址族中tcp協議例項操作函式,其目的是實現一組ipv4和ipv6都可以共享tcp和網路層之間的介面。
struct inet_connection_sock_af_ops:
struct inet_connection_sock_af_ops ;
tcp協議struct inet_connection_sock_af_ops資料結構的例項是ipv4_specific
ipv4_specific:
const struct inet_connection_sock_af_ops ipv4_specific = ;
ipv4_specific的註冊是呼叫tcp_v4_init_sock函式
static int tcp_v4_init_sock(struct sock *sk)
3、tcp、套接字、ip層之間介面函式tcp、套接字、和ip層之間的介面函式關係如下圖,通過這張圖就能清晰知道tcp、套接字層、ip層資料報傳送接受流程。
4、tcp套接字初始化
當應用層開啟乙個套接字後就會呼叫tcp_v4_init_sock函式初始化套接字,主要初始化tcp套接字結構,**如下:
static int tcp_v4_init_sock(struct sock *sk)
* cookie_in_always, cookie_out_never,
* s_data_constant, s_data_in, s_data_out
*///設定傳送緩衝區和接受緩衝區大小,
//應用層可以呼叫setsockopt設定
sk->sk_sndbuf = sysctl_tcp_wmem[1];
sk->sk_rcvbuf = sysctl_tcp_rmem[1];
local_bh_disable();
//tcp_sockets_allocated是乙個全域性變數
//儲存的套接字數量,加1
percpu_counter_inc(&tcp_sockets_allocated);
local_bh_enable();
return 0;
}
傳輸層TCP協議和UDP協議
傳輸層是osi中最重要,最關鍵的一層,是唯一負責總體的資料傳輸和資料控制的一層。傳輸層提供端到端的交換資料的機制,檢查分組編號與次序。傳輸層對其上三層如會話層等,提供可靠的傳輸服務,對網路層提供可靠的目的地站點資訊。傳輸層協議有 tcp 傳輸控制協議 udp 使用者資料報協議 tls 安全運輸協議 ...
基於tcp協議的套接字
簡單版本 一 服務端 import socket 1 買手機 拿到套接字物件,用來鏈結建立鏈結 phone socket.socket socket.af inet,socket.sock stream tcp稱為流式協議sock stream,udp稱為資料報協議sock dgram print ...
Linux 傳輸層基於TCP協議的套接字程式設計例項
1.含義 同udp相同也是傳輸層的一種協議。transmission control protocol 傳輸控制協議 2.特點 面向連線 傳輸可靠 提供位元組流服務 面向連線 服務端必須與客戶端建立連線。傳輸可靠 一系列的機制 應答等 保證資料傳輸的可靠性。提供位元組流服務 傳送資料不會像udp那樣...