建立TCP连接的时候,syn包什么情况下会被对端rst?

1.访问的服务器端口未打开

访问的主机对应的端口没有开放,就会回RST。

2.请求超时

例:主机A向主机B发送SYN信号,想连接6666端口,主机A设置了设置了recv的超时时间为100ms,如果在100ms内还没收到主机B的ACK和SYN回复,则主机A发送了RST拒绝进一步发送数据。

3.服务端提前关闭socket

例如,客户端发了两个请求,服务器只从buffer 读取第一个请求处理完就关闭连接,tcp层认为数据没有正确提交到应用,使用rst关闭连接。

4 .服务器关闭或异常终止了连接,由于网络问题,客户端没有收到服务器的关闭请求,这称为TCP半打开连接。
就算重启服务器,也没有连接信息。如果客户端向提其写入数据,对方就会回应一个RST报文段。

5.假的rst

比如你在国内打开墙外的某些网站,防火墙会模拟服务器给你发个rst,让你打不开网站。

### TCP 和 UDP 数据结构 #### TCP 数据结构 TCP 协议头至少有20字节,具体字段如下: | 字段名称 | 大小 (bit) | 描述 | | --- | --- | --- | | 源口 | 16 | 发送方的口号 | | 目的口 | 16 | 接收方的口号 | | 序列号 | 32 | 当前数据的第一个字节在全球序列中的编号 | | 确认号 | 32 | 下一个期望接收的数据的序列号 | | 数据偏移 | 4 | 表示头部长度,最小值为5(即20字节),最大值为15(即60字节) | | 保留位 | 6 | 总是设置为0 | | 控制标志 | 6 | 含URG, ACK, PSH, RST, SYN, FIN六个标志位 | | 窗口大小 | 16 | 告诉对方自己的接收缓冲区还能容纳多少字节的数据 | | 校验和 | 16 | 对整个TCP报文段计算得出,用于检测错误并请求重发 | | 紧急指针 | 16 | 如果设置了紧急标志,则表示该位置之后都是正常数据 | 选项部分不是固定的,可以根据需要增加额外的信息[^1]。 ```plaintext +-------------------------------+ | Source Port | +--+ | Destination Port | +-------------------------------+ | Sequence Number | +--+ | Window Size | +-------------------------------+ | Checksum | +--+ | Urgent Pointer | +-------------------------------+ | Options | +--+ | | | Payload Data | | | +-------------------------------+ ``` #### UDP 数据结构 UDP 的头部非常简洁,只有8个字节固定不变的部分: | 字段名称 | 大小 (bit) | 描述 | | --- | --- | --- | | 源口 | 16 | 发送者的口号 | | 目的口 | 16 | 接收者的口号 | | 长度 | 16 | 整个UDP用户数据报的总长度,括头部和负载 | | 校验和 | 16 | 可选字段,默认情况下会启用校验功能 | 相比于TCP而言,UDP没有复杂的连接状态维护机制,也没有流量控制或拥塞控制等功能,这使得其头部更加紧凑高效。 ```plaintext +-------------------------------+ | Source Port | +-------------------------------+ | Destination Port | +-------------------------------+ | Length | +-------------------------------+ | Checksum | +-------------------------------+ | | | Payload Data | | | +-------------------------------+ ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值