欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 科技 > 能源 > 沾包问题,wireshark和netstat的使用

沾包问题,wireshark和netstat的使用

2024/10/25 23:33:16 来源:https://blog.csdn.net/m0_63897134/article/details/141487100  浏览:    关键词:沾包问题,wireshark和netstat的使用

一.沾包

TCP是一个面向字节流的传输层协议。“流” 意味着 TCP 所传输的数据是没有边界的。这不同于 UDP 协议提供的是面向消息的传输服务,其传输的数据是有边界的。TCP 的发送方无法保证对方每次收到的都是一个完整的数据包。于是就有了粘包、拆包问题的出现。粘包、拆包问题只发生在TCP协议中。

TCP协议是面向字节流的协议,接收方不知道消息的界限,不知道一次提取多少数据,这就造成了粘包问题。

粘包问题出现的原因: 

     1. 发送端:需要等缓冲区满时才发送出去,造成粘包;

     2. 接收端:不及时的接收缓冲区内的包,造成多个包接收。

 避免粘包问题的方法:

     1. 对于定长的包,保证每次都按固定大小读取即可;//  结构体

     2. 对于变长的包,还可以在包和包之间使用明确的分隔符,这个分隔符是由程序员自己来定的,只要保证分隔符不和正文冲突即可。


     
TCP报文头

    标志位:
    1. URG: 紧急指针标志, 为1时表示紧急指针有效, 该报文应该优先传送。
    2. ACK: 确认应答标志
    3. PSH:  表示发送数据,提示接收端从TCP接收缓冲区中读走数据,为接收后续数据腾出空间
    4. RST: 重置连接标志
    5. SYN: 表示请求建立一个连接
    6. FIN: finish标志, 表示释放连接

TCP的机制

TCP复杂是因为它既要保证可靠性,同时又要尽可能的提高性能。

    可靠性:

        (1)三次握手和四次挥手机制
        
         (2) 确认应答:TCP将每个字节的数据都进行了编号,即为序列号。每一个ACK都带有对应的确认序列号,保证数据不丢失的按序到达

        (3)超时重传:当发送端发送的数据在网络中丢失时,在一定时间内没有收到接收端的ACK,则发送端会重新发送丢失数据。

        (4)流量控制:按照ACK中“窗口大小”字段控制发送端的发送速度

二.wireshark抓包工具

 

 

三.# ubuntu开启telnet服务
sudo apt-get install openbsd-inetd
sudo apt-get install telnetd
sudo /etc/init.d/openbsd-inetd restart
注意:
安装之前,确保ubuntu能上网
ping www.baidu.com
# 查看 telnet服务是否开启
sudo netstat -a | grep telnet 

四.netstat

 

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com