一。TCP状态机
1.青粗线:理想TCP状态转变(服务器视角下)
2.虚线:被动TCP状态转变(服务器视角下)
3.细实线:不经常出现的TCP状态转变(类似于边界处理)
1.青粗线解释--》服务器主动通信,客户端被动通信(服务器也可作为客户端)
(1)服务器主动创建socket后开始监听Listen,像客户端发送SYN字段,表示需要连接
状态:CLOSED关闭状态 ----》 SYN_SENT连接_发送SYN字段状态
(2)服务器收到ACK回复,TCP连接成功,进入数据传送阶段
状态:SYN_SENT连接_发送SYN字段状态 ----》ESTABLISTHED数据发送阶段
(3)服务器发送FIN字段,准备进入结束等待1阶段(结束的第一次挥手)
状态:ESTABLISTHED数据发送阶段 ----》FIN_WAIT_1结束等待1阶段
(4)服务器收到ACK,进入结束等待2阶段(等待回复,一次挥手)
状态:FIN_WAIT_1结束等待1阶段 ----》FIN_WAIT_2结束等待2阶段
(5)服务器收到FIN,向客户端发送ACK确认,进入最后等待,如果客户端没有超时重传,关闭socket。
FIN_WAIT_2结束等待2阶段 ----》TIME_WAIT 最终等待 ----》CLOSED关闭
2.虚线解释--》客户端向服务器端通信,服务器被动接受信息
(1)服务器被动打开
状态:CLOSED ----》LISTEN
(2)收到SYN,发送SYN,ACK(三次握手的前两次)
状态:LISTEN ----》SYN_RCVD
(3)收到ACK(三次握手的最后一次),进入数据传送阶段
状态:SYN_RCVD ----》ESTABLISTHED
(4)收到FIN,发送ACK(四次挥手的前两次),进入退出阶段
状态:ESTABLISTHED ----》CLOSE_WAIT
(5)发送FIN(四次挥手的第三次挥手)
状态:CLOSE_WAIT ----》LAST_ACK
(6)收到ACK(四次挥手的第四次挥手)
状态:LAST_ACK ----》CLOSED
3.细实线解释--》只是一些不经常的处理,比如服务器被动打开后没有人响应,在比如连接的三次挥手还没有挥手完毕建立连接,用户点了重新连接。。。
二。NC命令,netstat命令,find命令
1.nc命令
注意:上述命令有很多参数,具体可以看参考手册
(1)nc连接服务器
nc 127.0.0.1 6666
(2)nc建立服务器
-l端口模式
-p指定端口号
nc -l -p 6666
2.netstat命令find命令
netstat -an -p tcp | find "6666"
3.上述的实验
实验:nc创建客户端,COMMBOX创建服务器
(1)commbox创建服务器
(2)nc命令创建客户端
nc 127.0.0.1 6666
(3)netstat查看tcp状态
新开一个控制台窗口
(4)关掉COMMBOX
(5) commbox停止监听后,nc创建客户端的会关闭
(6)另一个控制台会显示
注意:一开始会显示等待,过一分钟才消失(这是在等待是否有超时重发报文过来)
实验:commbox创建socket客户端(目标端口为127.0.0.1),nc创建服务器
(1)commbox创建socket客户端.
(2)nc创建服务器
(3)netstat观察TCP状态
(3)当我关闭commbox时,会有等待时段
(4)等待时段,一分钟后消失
综上所述:netstat是查询网络传输的好帮手,帮助查询网络传输的状态
三。shutdown应用
1.close()与shutdown()区别
(1)close使用之后,socket会关闭并释放内存,shutdown使用之后,仅仅只是关闭
(2)int shutdown(int sockfd, int how);
参数
sockfd :要断开的套接字
how :要断开的方式
- SHUT_RD:断开输入流
- SHUT_WR:断开输出流
- SHUT_RDWR:同时断开 I/O 流
返回值
0 :成功
-1:error所以:可以只断开输入或者输出
总之shutdown:
1、保证数据不丢包(因为在调用shutdown时候,会检测发送缓冲区,直到发送缓冲区传输完毕后,才会发送FIN包)文章来源:https://www.toymoban.com/news/detail-693931.html
2、当我们有多个任务(进程)共享一个socket,我们可以通过shutdown进行关闭,保证其他任务可以正常使用文章来源地址https://www.toymoban.com/news/detail-693931.html
到了这里,关于10.物联网LWIP之TCP状态转变的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!