当前位置:网站首页>API related to TCP connection
API related to TCP connection
2022-07-05 05:35:00 【Raise items】
List of articles
On establishment and termination
TCP
When connecting , Both ends of the communication will send some messages with Special mark ( Such as SYN
、 ACK
、 FIN
、 RST
) Message of , and Maintain their respective States . You can put With special marks And Without data information Of tcp Message as
Protocol message
; hold Carry data information Of tcp Message asThe data packet
.
Establishing a connection
Three handshake process :
TCP The process of establishing a connection is transparent to the user process .
In the process , Client blocked on connect
system call , The server is blocked in accept
system call .
// #include <sys/types.h>
// #include <sys/socket.h>
int connect(int socket, const struct sockaddr *address, socklen_t address_len);
int accept(int socket, struct sockaddr *restrict address, socklen_t *restrict address_len);
If TCP
Connection established successfully ,connect
return 0
,accept
return Connect socket The descriptor ; If the connection fails , All back to -1
.
Only after the connection is established 、 Until the termination of , Both parties can send The data packet . in fact , The third handshake , The client can Carrying data Send it to the server .
Terminate connection
The process of terminating the connection is more complicated , Involved API Also more . The initiator of terminating the connection may be either the server or the client , Take client initiation as an example , Four waves :
2MSL
Is the longest segmented life span MSL
(maximum segment lifetime) Twice as many , This design is to ensure that in When the connection terminates , There is no message related to this connection in the network .
After the first two steps , Get into Half closed state : The client cannot send data to the server , But the server can send data to the client . When the client and the server All in CLOSED state after ,TCP The connection is officially terminated .
have access to close
or shutdown
Terminate connection , The usage of the two is slightly different .
close
// #include <unistd.h>
int close(int fildes);
close
Can do two things :
- Send a... To the opposite end
FIN
package . here , The opposite user process will readEOF
, namelyread
The function returns0
. If analogy becomes a read file , This means that you have read the file At the end of . - Close to socket Of Read and write . Although at this time in
FIN_WAIT_2
state , But if there is a data message sent from the opposite end , The local end cannot read , And will return to the other party aRST
message , namely To the end socket Will be reset, And in theRST
Of socket Write operation , It will triggerSIGPIPE
The signal ( The default behavior is Process exits directly ). Cannot pass the current socket send data .
shutdown
// #include <sys/socket.h>
int shutdown(int socket, int how);
shutdown
The function will choose to close the pair socket read 、 Write perhaps Reading and writing .
- Turn off reading : Do not send
FIN
message ; If there is data sent from the opposite end , No reception , Return one to the otherRST
message . - Turn off write : send out
FIN
message , Cannot pass this socket send data . - Turn off reading and writing : Be similar to
close
.
If a socket Of Reference count Greater than
1
,close
It won't close , andshutdown
The corresponding socket.
RST message
When you encounter some abnormal Scene time , The client or server will send a RST
message . These scenes include :
- Customer requests connection , The relevant services are not enabled 、 When it is not present or fails , The customer will receive a
RST
message . - towards Read turned off Of socket When sending data , I'll get one
RST
message .
边栏推荐
- Haut OJ 1241: League activities of class XXX
- Convolution neural network -- convolution layer
- 常见的最优化方法
- AtCoder Grand Contest 013 E - Placing Squares
- 剑指 Offer 05. 替换空格
- 【实战技能】非技术背景经理的技术管理
- Sword finger offer 09 Implementing queues with two stacks
- CF1637E Best Pair
- Time complexity and space complexity
- 【Jailhouse 文章】Jailhouse Hypervisor
猜你喜欢
On-off and on-off of quality system construction
[merge array] 88 merge two ordered arrays
Gbase database helps the development of digital finance in the Bay Area
游戏商城毕业设计
剑指 Offer 05. 替换空格
第六章 数据流建模—课后习题
Sword finger offer 09 Implementing queues with two stacks
EOJ 2021.10 E. XOR tree
CF1634E Fair Share
Fried chicken nuggets and fifa22
随机推荐
Graduation project of game mall
Sword finger offer 05 Replace spaces
网络工程师考核的一些常见的问题:WLAN、BGP、交换机
【ES实战】ES上的native realm安全方式使用
object serialization
Haut OJ 1241: League activities of class XXX
Zheng Qing 21 ACM is fun. (3) part of the problem solution and summary
Developing desktop applications with electron
Codeforces Round #715 (Div. 2) D. Binary Literature
[jailhouse article] look mum, no VM exits
Introduction to memory layout of FVP and Juno platforms
sync. Interpretation of mutex source code
Gbase database helps the development of digital finance in the Bay Area
26、 File system API (device sharing between applications; directory and file API)
A problem and solution of recording QT memory leakage
Common optimization methods
CF1637E Best Pair
CF1634 F. Fibonacci Additions
Use of room database
Hang wait lock vs spin lock (where both are used)