2024年TCP协议漫谈,深入浅出实战网络编程开发,带给你不一样的认知,菜鸟网络java面试题

Kafka实战笔记

关于这份笔记,为了不影响大家的阅读体验,我只能在文章中展示部分的章节内容和核心截图

image.png

  • Kafka入门
  • 为什么选择Kafka
  • Karka的安装、管理和配置

image.png

  • Kafka的集群
  • 第一个Kafka程序
  • image.png

afka的生产者

image.png

  • Kafka的消费者
  • 深入理解Kafka
  • 可靠的数据传递

image.png

image.png

  • Spring和Kalka的整合
  • Sprinboot和Kafka的整合
  • Kafka实战之削峰填谷
  • 数据管道和流式处理(了解即可)

image.png

  • Kafka实战之削峰填谷

image.png

本文已被CODING开源项目:【一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码】收录

需要这份系统化的资料的朋友,可以点击这里获取

9、选项(Option):长度不定,但长度必须以是32bits的整数倍。常见的选项包括MSS、SACK、Timestamp等等。

二、TCP状态机

============

关于TCP的状态机理解我们从几张经典的示意图开始

TCP状态转换图

TCP协议漫谈,深入浅出实战网络编程开发,带给你不一样的认知

TCP三次握手、四次挥手时序图

TCP协议漫谈,深入浅出实战网络编程开发,带给你不一样的认知

基于TCP的网络编程中链接的建立断开、数据发送都是依赖TCP状态转换实现的,例如所谓的建立链接并不是真正的链接,而是一种状态的维持,表面上的链接其实是通讯双方共同维护了一个“链接状态”,而建立链接–数据传输–断开链接的TCP通信过程,也是这些状态转换的过程,这其中状态的转换一部分是收到或发送的某个控制位字段的变化而引起的,如SYN、FIN、ACK等,还有一些是由于应用程序的动作或计时器超时引发的。

了解了以上的内容,下面我们就结合实际报文数据,对TCP链接三次握手,数据传输,断开四次挥手,进行一个简单的跟踪验证;

三、TCP通讯

===========

1、三次握手

建立链接的三次握手的作用主要是初始化Sequence Number 的初始值,同时把这个值通过Synchronize Sequence Numbers(SYN包)告知对端。

通过Wireshark可以捕获到三次握手的报文

TCP协议漫谈,深入浅出实战网络编程开发,带给你不一样的认知

握手流程:

  • 1、client首先初始化该值,发送一个SYN包给server端,告诉server端一个初始化的SN值

  • 2、server收到client发送的数据,回复一包数据,包括ACK确认与SYN, 既要告诉client端收到了数据,同时告知对方SYN值;

  • 3、client回复ACK确认包,告知server端收到了数据;

2、数据传输

通过Wireshark,我们可以看下TCP传输中一包数据的组成,对照前面的协议组成,可以看到这里我们发送的是0x11,0x11两个字节的数据

TCP协议漫谈,深入浅出实战网络编程开发,带给你不一样的认知

可以看到接收一段回复的确认包里ACK从1变成了3,为保证数据的顺序性与可靠性,TCP是有一整套的机制来控制的,如大家熟悉的滑动窗口、超时重传等;

TCP协议漫谈,深入浅出实战网络编程开发,带给你不一样的认知

这里有一个需要注意的细节,这里ACK确认号的真实值其实是从0xffeb49ed 变为 0xffed49ef的,这是由于当某个主机开启一个TCP会话时,他的初始序列号与确认号是随机的,可能是0和4,294,967,295之间的任意值,在Wireshark里显示的都是相对序列号/确认号,而不是实际序列号/确认号,相对序列号/确认号是和TCP会话的初始序列号相关联的。这里Wireshark为方便大家跟踪查看显示的是相对值,因为比起真实序列号/确认号,跟踪更小的相对序列号/确认号会相对容易一些。

3、四次挥手

断开链接的四次挥手的作用主要是回收资源,停止数据传输。由于TCP是全双工的,需要client与server两端分别断开各自的通向对方的通道。

通过Wireshark可以捕获到四次挥手的报文

TCP协议漫谈,深入浅出实战网络编程开发,带给你不一样的认知

挥手流程:

  • 1、client端发送一个FIN包告诉server服务端已经没有数据要传输了,准备断开链接;

  • 2、server端回复一个ACK确认包,也就是告诉cient端,好,我知道你要断开了;

  • 3、server端这时要看自己还有没有数据要发送给client,如果没有了,也要发送一个FIN包告诉client端,我也没有数据要传输了,准备断开链接;

  • 4、client端回复一个ACK确认包,告诉server端,好的,我知道你要断开了;
    四次挥手的流程中,sever端在接收到client端的断开要求后,ACK确认包与FIN包是否可以合并为一个包来发送,也就是四次挥手是否可能变成三次挥手,答案是可能的,但由于TCP是全双工的,server端与client端数据传输的终止在时序上是独立且可能相隔较长时间,那么一般情况下一个完整的断开链接操作都是需要四次挥手来完成的。
    以上就是笔者整理的关于TCP-IP通信协议的内容,只是个人的一些随想,哪里不准确的地方,还请各位大佬多多指出,咱们共同进步。
    喜欢的话请多多点赞评论转发,关注笔者,你们的支持就是笔者最大的动力~~~~

分享

1、算法大厂——字节跳动面试题

2、2000页互联网Java面试题大全

3、高阶必备,算法学习

本文已被CODING开源项目:【一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码】收录

需要这份系统化的资料的朋友,可以点击这里获取

大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码】](https://bbs.csdn.net/forums/4f45ff00ff254613a03fab5e56a57acb)收录**

需要这份系统化的资料的朋友,可以点击这里获取

  • 8
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值