当前位置:网站首页>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 .
边栏推荐
- kubeadm系列-01-preflight究竟有多少check
- 2017 USP Try-outs C. Coprimes
- 动漫评分数据分析与可视化 与 IT行业招聘数据分析与可视化
- Sword finger offer 05 Replace spaces
- 游戏商城毕业设计
- 【Jailhouse 文章】Jailhouse Hypervisor
- Corridor and bridge distribution (csp-s-2021-t1) popular problem solution
- [binary search] 69 Square root of X
- Introduction to memory layout of FVP and Juno platforms
- Yolov5 adds attention mechanism
猜你喜欢
[jailhouse article] jailhouse hypervisor
【Jailhouse 文章】Jailhouse Hypervisor
全国中职网络安全B模块之国赛题远程代码执行渗透测试 //PHPstudy的后门漏洞分析
Introduction to tools in TF-A
[to be continued] [UE4 notes] L3 import resources and project migration
CF1634E Fair Share
剑指 Offer 53 - I. 在排序数组中查找数字 I
【Jailhouse 文章】Jailhouse Hypervisor
剑指 Offer 05. 替换空格
R语言【数据集的导入导出】
随机推荐
[merge array] 88 merge two ordered arrays
剑指 Offer 05. 替换空格
【实战技能】非技术背景经理的技术管理
Cluster script of data warehouse project
【实战技能】如何做好技术培训?
Introduction to memory layout of FVP and Juno platforms
Demonstration of using Solon auth authentication framework (simpler authentication framework)
ALU逻辑运算单元
[to be continued] [UE4 notes] L3 import resources and project migration
剑指 Offer 05. 替换空格
Time complexity and space complexity
CCPC Weihai 2021m eight hundred and ten thousand nine hundred and seventy-five
Sword finger offer 06 Print linked list from beginning to end
CF1634 F. Fibonacci Additions
YOLOv5添加注意力机制
Haut OJ 1352: string of choice
sync. Interpretation of mutex source code
Haut OJ 1243: simple mathematical problems
Daily question - Search two-dimensional matrix PS two-dimensional array search
Csp-j-2020-excellent split multiple solutions