当前位置:网站首页>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 .
边栏推荐
- 第六章 数据流建模—课后习题
- Graduation project of game mall
- 26、 File system API (device sharing between applications; directory and file API)
- 【实战技能】如何做好技术培训?
- Chapter 6 data flow modeling - after class exercises
- Haut OJ 1316: sister choice buys candy III
- Haut OJ 1218: maximum continuous sub segment sum
- 剑指 Offer 06.从头到尾打印链表
- Pointnet++的改进
- A misunderstanding about the console window
猜你喜欢
随机推荐
object serialization
Little known skills of Task Manager
Fried chicken nuggets and fifa22
Chapter 6 data flow modeling - after class exercises
[to be continued] I believe that everyone has the right to choose their own way of life - written in front of the art column
Csp-j-2020-excellent split multiple solutions
R语言【数据集的导入导出】
[to be continued] [UE4 notes] L3 import resources and project migration
After setting up the database and website When you open the app for testing, it shows that the server is being maintained
【实战技能】如何做好技术培训?
CF1634 F. Fibonacci Additions
Palindrome (csp-s-2021-palin) solution
Haut OJ 1401: praise energy
全国中职网络安全B模块之国赛题远程代码执行渗透测试 //PHPstudy的后门漏洞分析
Drawing dynamic 3D circle with pure C language
A problem and solution of recording QT memory leakage
注解与反射
Educational codeforces round 109 (rated for Div. 2) C. robot collisions D. armchairs
[es practice] use the native realm security mode on es
Codeforces Round #716 (Div. 2) D. Cut and Stick