深入理解TCP/IP

1、OSI七层模型

(1)物理层(RS-232):负责传输比特流,定义物理介质和电信号传输
(2)数据链路层(PPP):负责将数据帧划分为数据包,并进行错误检测和纠正
(3)网络层(IP、ICMP):负责将数据包从源主机传输到目标主机,进行路由选择和分组转发
(4)传输层(TCP、UDP):提供端到端的可靠数据传输
(5)会话层(RPC):负责建立、管理和终止会话连接
(6)表示层(SSL):负责数据的格式转换、加密和解密
(7)应用层(HTTP、FTP、SMTP):提供用户应用程序与网络的接口,处理特定应用协议

2、TCP/IP四层模型

(1)网络接口层(PPP)
(2)网络层
(3)传输层
(4)应用层

3、TCP三次握手

(1)第一次握手(SYN)
客户端发送一个SYN同步标志的 数据包 给服务器,请求建立连接。客户端进入SYN_SENT状态等待服务器的确认。

(2)第二次握手(SYN + ACK)
服务器接收到客户端的SYN请求后,返回SYN+ACK标志的数据包作为应答,表示接收到了客户端的请求,并且服务器也请求建立连接。此时服务器进入SYN_RCVD状态。

(3)第三次握手(ACK)
客户端收到服务器的SYN+ACK应答后,会发送一个带有ACK标志的数据包给服务器,表示确认收到了服务器的应答。此时客户端和服务器都进入ENABLE_LISHED状态,连接建立成功。

4、TCP四次挥手

(1)第一次握手(FIN)
客户端发送一个带有FIN(结束)标志的数据包给服务器,表示客户端已经没有数据要发送了,但仍然允许接收数据。此时客户端进入FIN_WAIT_1状态。

(2)第二次握手(ACK)
服务器接收FIN会发送一个带有ACK。此时服务器进入CLOSE_WAIT状态。

(3)第三次握手(FIN)
服务器发送一个FIN标志的数据包给客户端,表示服务器已经没有数据要发送了,也请求关闭连接。此时服务器进入LAST_ACK状态。

(4)第四次握手(ACK)
客户端接收到服务器FIN再发送一个带有ACK,表示确认收到了服务器的请求。此时客户端进入TIME_WAIT状态。服务器进入CLOSED状态。

5、TCP丢包问题优化

(1)调整TCP连接参数,滑动窗口大小、超时重传时间、启用快速重传等

(2)使用更可靠的链路、实施网络优化

(3)使用前向纠错码(FEC):在一些对传输可靠性要求较高的场景,可以使用前向纠错码来增强数据的容错能力

(4)使用链路质量监控工具如tcpdump

是一个命令行下运行的网络数据包分析工具

(4)实施重传机制:当检测到丢包时,应用层开启重试

6、TCP粘包如何解决

(1)使用固定长度的消息

发送端在消息的开头添加固定长度的消息头,指定消息的长度,接收端在接收消息时,根据消息头指定的长度来准确地拆分消息,避免粘包问题的发生

(2)使用特定的分隔符

(3) 使用消息头+消息体的方式

发送端在发送消息时,可以在消息的开头添加消息头,包括消息的长度等信息,接收端根据消息头中的长度信息来准确地拆分消息,从而避免粘包问题的发生

(4)使用消息确认机制

在通信协议中加入消息确认机制,发送端发送完一个消息后,等待接收端的确认消息,确保接收端已经正确接收了消息才发送下一个消息,从而避免粘包问题的发生

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值