三次握手+四次挥手

建立连接的三次握手:

SYN:创新连接

ACK:确认序号,确认网络包没有丢包。

FIN:释放一个连接,表示接受连接。

ack:序号,ack = seq+1

整个的连接过程如下:

 

 

 

用通俗的话说就是:1、客户端向服务器询问:你听得到我吗?

2、服务器向客户端回答:我听得到你,你能听到我吗?

3、客户端回复服务器:我听到了,开始通话吧。

连接过程的第一步就是在TCP模块处创建表示连接控制信息的头部,头部包括很多字段,重要的是接收方和发送方的端口号和IP地址。

当TCP头部创建好后,TCP模块就会将控制信息传递给IP模块并委托它进行发送;IP模块执行网络包发送操作后,网络包会通过网络到达服务器,然后服务器上的IP模块会将接收到的数据传递给TCP模块,服务器的TCP模块根据控制信息中的端口号找到对应的套接字即可。(P74)

 

滑动窗口相关:

滑动窗口来管理数据发送和ACK号的操作,怎么处理数据溢出问题呢?

服务器端会把缓冲区的内存剩余放在窗口字段告诉发送方,这个能够接受的最大数据量被称为窗口的大小,它是TCP调优参数中非常有名的一个。

通常将ACK号与窗口更新的包合并在一起进行发送,避免网络传输效率下降。

 

确认断开的四次挥手(断开连接,删除套接字)

 

 

为什么挥手要四次而不是三次呢?

因为一个方向的断开,仅代表这个方向的传输结束了,而另一方可能还有数据,所以需要等另一方数据也全部传输完毕完成后,才能执行挥手。

 

关于连接操作、收发操作和最后的断开操作,合并图可以看书p94页。

posted on   101欢欢鱼  阅读(104)  评论(0编辑  收藏  举报

编辑推荐:
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
阅读排行:
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix

导航

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5
点击右上角即可分享
微信分享提示