TCP協議和套接字 IP層之間的介面

2021-09-02 00:04:08 字數 2240 閱讀 8040

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那樣...