tcp/ip协议

想象一下,TCP传输就像快递小哥送包裹,每个数据帧就像一个包裹的**快递单**,以下是几个关键的"快递单"信息:

  1. **源端口号 & 目的端口号**
  • **源端口号**:就像寄件人地址,告诉对方"这是谁发的"。

  • **目的端口号**:就像收件人地址,告诉数据"送到哪里"。

  1. **序列号(Sequence Number)**
  • 数据分成一块块,就像书页的页码,**序列号**就是页码,保证数据到达后能按顺序拼好。
  1. **确认号(Acknowledgment Number)**
  • 收件人收到包裹后,会用一个"签收单"告诉快递小哥"包裹几号到几号我都收到了,接下来请送后面的"。
  1. **标志位(Flags)**
  • **SYN**:打招呼------"你好,我想建立连接"。

  • **ACK**:点头------"好的,我收到了"。

  • **FIN**:挥手------"我要挂断啦"。

  • **RST**:掀桌子------"出问题了,重置连接吧"。

  1. **窗口大小(Window Size)**
  • 就像收件人告诉快递员:"我一次最多能收 10 个包裹,别给太多哦!"
  1. **校验和(Checksum)**
  • 检查包裹有没有破损,如果损坏,就像快递员要退回包裹。

三次握手

**建立连接的过程,就像交朋友前打招呼,确认对方是否愿意聊天。**

场景:两个人在电话上互相认识

  1. **第一次握手(请求连接)**
  • **客户端**:喂,你好,我想和你聊天!(发起 `SYN`)

  • *客户端发送请求,进入"等待回应"状态(SYN_SENT)。*

  1. **第二次握手(确认请求)**
  • **服务器**:喂,我听到了!我同意和你聊天!(发 `SYN+ACK`)

  • *服务器收到请求,进入"等待确认"状态(SYN_RECEIVED)。*

  1. **第三次握手(确认建立)**
  • **客户端**:好的,那咱们开始吧!(发 `ACK`)

  • *客户端确认连接,正式进入"聊天状态"(ESTABLISHED)。*

总结:

  • 第一步:客户端发起请求------"我想聊聊!"

  • 第二步:服务器回应------"好的,我愿意!"

  • 第三步:客户端确认------"那我们开始!"


四次挥手

**结束连接的过程,就像两个人通完电话,依次挂断。**

场景:电话聊天结束

  1. **第一次挥手(发起挂断)**
  • **客户端**:我说完了,想挂电话了!(发 `FIN`)

  • *客户端表示自己不再发送数据了,进入"准备挂断"状态(FIN_WAIT_1)。*

  1. **第二次挥手(确认挂断)**
  • **服务器**:好的,我知道了,你准备挂吧!(发 `ACK`)

  • *服务器同意挂断,但还有话没说完,进入"等待完成"状态(CLOSE_WAIT)。*

  1. **第三次挥手(服务器也挂断)**
  • **服务器**:我也说完了,现在可以挂了!(发 `FIN`)

  • *服务器也准备挂断,进入"等待确认"状态(LAST_ACK)。*

  1. **第四次挥手(确认断开)**
  • **客户端**:好的,我知道你挂了,那我也挂了!(发 `ACK`)

  • *客户端确认挂断,彻底结束通话,进入"连接关闭"状态。*

总结:

  • 第一步:客户端说------"我不说了,你慢慢说吧。"

  • 第二步:服务器回------"行,那你等我说完。"

  • 第三步:服务器说------"我也说完了,现在可以挂了。"

  • 第四步:客户端回------"行,那挂了,拜拜!"


为什么不是二次握手和三次挥手?

  1. **三次握手不是二次握手:为了防止旧数据误导通信,确保双方确认连接正常。**
  • 如果没有第三次确认,可能会误连接到旧的请求,导致通信失败。
  1. **四次挥手不是三次挥手:因为 TCP 是双向通信,双方需要独立关闭发送和接收,不能省略步骤。**
  • 如果没有四次确认,可能会导致数据丢失或状态不同步。

  • **三次握手**:像打招呼,先确认对方身份,再开始聊天。

  • **四次挥手**:像挂电话,先告诉对方"我不说了",然后等对方也确认"我也说完了"。

  • **TCP关键字段**:快递单上的地址、页码、签收单,确保快递能顺利到达收件人手中!

相关推荐
AuroraDPY1 小时前
计算机网络:Socket编程预备
网络·计算机网络
笨蛋不要掉眼泪4 小时前
deepseek封装结合websocket实现与ai对话
人工智能·websocket·网络协议
小李独爱秋6 小时前
计算机网络经典问题透视:当路由器需要同时连接以太网和ATM网络时,需要添加什么硬件?
运维·网络协议·计算机网络·网络安全·智能路由器
国服第二切图仔8 小时前
Rust开发之错误处理与日志记录结合(log crate使用)
网络·算法·rust
天***88968 小时前
驱动精灵、驱动人生、NVIDIA专业显卡驱动、360驱动大师、联想乐驱动,电脑驱动修复工具大全
网络·电脑·负载均衡
AORO20258 小时前
三防平板三防是指哪三防?适合应用在什么场景?
服务器·网络·智能手机·电脑·1024程序员节
王道长服务器 | 亚马逊云8 小时前
AWS + SeyouCMS:海外资源站的高性能部署实战
服务器·网络·数据库·云计算·软件构建·aws
泷羽Sec-静安9 小时前
Less-7 GET-Dump into outfile-String
android·前端·网络·sql·安全·web安全
一瓢一瓢的饮 alanchan9 小时前
HTTPS接口国密安全设计-示例
网络协议·安全·https·国密 国家商用密码·数字签名 数字证书·sm2 sm4 sm3·对称加密 非对称加密
2501_915909069 小时前
HTTPS 错误排查实战,从握手到应用层的工程化流程
网络协议·http·ios·小程序·https·uni-app·iphone