精华内容
下载资源
问答
  • 一个数据包发送到接收在网络中经历了那些过程 假设学生给老师发送电子邮件,内容为:“老师您好!”。从计算机A向另一台计算机B发送电子邮件,站在网络原理的角度来分析整个过程。 启动应用程序新建邮件,将件...

    一个数据包从发送到接收在网络中经历了那些过程

    假设学生给老师发送电子邮件,内容为:“老师您好!”。从计算机A向另一台计算机B发送电子邮件,站在网络原理的角度来分析整个过程。

    1. 启动应用程序新建邮件,将收件人邮箱和邮件内容填写好,应用程序进行编码处理。(应用层

    2. 应用在发送邮件那一刻建立TCP连接(三次握手),将数据交给传输层

      第一次握手:建立连接时,主机A向主机A发送请求报文
      第二次握手:主机B收到请求报文后,如同意连接,则向主机A发送确认报文
      第三次握手,主机A收到主机B的确认后,再次向主机B给出确认报文,完成连接

    3. TCP 就会把这个数据构成一个TCP数据报(附加上TCP首部包括源端口号和目标端口号(用以识别发送主机跟接收主机上的应用)、序号(标明发送的包那部分是数据)以及校验和(判断数据是否被更改)),然后将该数据报交给IP协议(网络层)。

    4. IP协议就会构造一个IP数据报(IP会将TCP传过来的数据报当作自己的数据,加上IP首部包含接收端IP地址以及发送端的IP地址),此处要根据数据报的长度,以及MTU的限制,考虑是否进行分包,查路由表决定从哪一个端口转发,将数据交给数据链路层

    5. 数据链路层将数据构造一个以太网数据帧,其中以太网首部包含接收端MAC地址、发送端MAC地址以及标志以太网类型的以太网数据的协议。源mac就是本机mac,目的mac根据上面IP确定的转发端口来决定(基于mac学习完成,ARP查找)

    数据报的结构:
    在这里插入图片描述

    1. 数据到达物理层,物理层将数据报转换成光电信号或者电信号进行传输;
    2. 首先传输到下一台路由器上,路由器进行解析和分用(解析到传输层)NAT 路由选择 ,继续查路由表,把数据再次封装的,往下一个路由器设备上转发(在这里封装和分用和上边是一样的)
    3. 中间会经过若干个路由器转发的过程,最终到达目的服务器;
    4. 服务器就会进行分用。物理层把光电信号转成二进制bit流,交给数据链路层;
    5. 数据链路层从以太网数据报的首部找到MAC地址判断是否为发给自己的包,如果不是发给自己的数据则丢掉。如果是就解析出其中的IP数据报交给网络层,但是如果是无法识别的协议类型也会丢掉。
    6. 网络层收到数据报,同样进行解析判断自己是不是首部中的目标IP,如果是则接收数据包并查找上一层的协议类型,如果是TCP就交给TCP处理如果是UDP就交给UDP处理。网络层可能需要组包(取决于第4步是否分包),组包后将数据交给传输层;
    7. 传输层TCP收到数据,首先计算校验和保证数据的完整性,然后按照序号检查接收数据,检查端口号确定具体的应用程序 ,将解析出的应用层数据,交给应用程序,返回ACK(确认序号、窗口大小、延时应答、捎带应答)在这里ACK也是一个TCP数据报,也会涉及到一系列的封装和分用过程,如果没有收到ACK就会反复发送。
    8. 服务器的应用程序读取数据,解析数据获知邮件的收件人信息以及邮件内容。(应用层
    9. 主机B给发送端返回一个回执信息。
    10. 断开连接(四次挥手)
      第一次挥手:主机A想分手,发送消息给主机B
      第二次挥手:主机B通知主机A已经接受到分手请求,但还没做好分手准备
      第三次回收:主机B已经做好分手准备,通知主机A
      第四次挥手:主机A发送消息给主机B,确定分手,主机B关闭连接

    基本上就是这样一个过程,我在慢慢在细化每一个过程。

    参考文献
    【图解HTTP读书笔记】第一章:了解Web及网络基础
    【图解HTTP读书笔记】第二章:简单的HTTP协议
    【图解HTTP读书笔记】第三章:HTTP报文内的HTTP信息
    【图解HTTP读书笔记】第四章:返回结果的HTTP状态码
    【图解HTTP读书笔记】第五章:与HTTP协作的Web服务器
    【图解HTTP读书笔记】第六章:HTTP首部
    【图解HTTP读书笔记】第七章:确保Web安全的HTTPS
    【图解HTTP读书笔记】第八章:Session 和 Cookie工作原理
    【图解TCP_IP读书笔记】第一章:网络基础知识
    【图解TCP_IP读书笔记】第二章:TCP/IP 基础知识
    ----------------------------------------------------------------------------------
    TCP协议 十大特性详解(上)
    TCP协议 十大特性详解(中)
    TCP协议 十大特性详解(下)
    展开全文
  • 网络数据包发送接收详细过程

    千次阅读 2018-09-21 09:47:23
    原文链接:...  Linux的网络接口分为四部分:网络设备接口,网络接口核心,网络协议族,网络接口socket层。 ... 网络设备接口部分主要负责从物理介质接收和发送数据,实现的文件在linu/d...


    原文链接:http://blog.csdn.net/hilyoo/article/details/4455031


     Linux的网络接口分为四部分:网络设备接口,网络接口核心,网络协议族,网络接口socket层。
    可参考:
    http://lxr.linux.no/linux+v2.6.30.4/net/
      网络设备接口部分主要负责从物理介质接收和发送数据,实现的文件在linu/driver/net目录下面。

      网络接口核心部分是整个网络接口的关键部位,它为网络协议提供统一的发送接口,屏蔽各种各样的物理介质,同时有负责把来自下层的包向合适的协议配送。它是网络接口的中枢部份。它的主要实现文件在linux/net/core目录下,其中linux/net/core/dev.c为主要管理文件。

      网络协议族部分是各种具体协议实现的部份。Linux支持TCP/IP,IPX,X.25,AppleTalk等的协议,各种具体协议实现的源码在linux/net/目录下相应的名称。在这里主要讨论TCP/IP(IPv4)协议,实现的源码在linux/net/ipv4,其中linux/net/ipv4/af_inet.c是主要的管理文件。

      网络接口Socket层为用户提供的网络服务的编程接口,主要的源码在linux/net/socket.c

    发送:

    应用程序调用系统调用,将数据发送给socket
    socket检查数据类型,调用相应的send函数
    send函数检查socket状态、协议类型,传给传输层
    tcp/udp(传输层协议)为这些数据创建数据结构,加入协议头部,比如端口号、检验和,传给下层(网络层)
    ip(网络层协议)添加ip头,比如ip地址、检验和
    如果数据包大小超过了mtu(最大数据包大小),则分片;ip将这些数据包传给链路层
    链路层写到网卡队列
    网卡调用响应中断驱动程序,发送到网络

    接收:

    数据包从网络到达网卡,网卡接收帧,放入网卡buffer,在向系统发送中断请求
    cpu调用相应中断函数,这些中断处理程序在网卡驱动中
    中断处理函数从网卡读入内存,交给链路层
    链路层将包放入自己的队列,置软中断标志位
    进程调度器看到了标志位,调度相应进程
    该进程将包从队列取出,与相应协议匹配,一般为ip协议,再将包传递给该协议接收函数
    ip层对包进行错误检测,无错,路由
    路由结果,packet被转发或者继续向上层传递
    如果发往本机,进入链路层
    链路层再进行错误侦测,查找相应端口关联socket,包被放入相应socket接收队列

    socket唤醒拥有该socket的进程,进程从系统调用read中返回,将数据拷贝到自己的buffer,返回用户态。


    DNS请求流程

    1、PC1要访问www.google.com,需要先知道对应IP地址。
    域名只起助记作用,互联网访问通过IP进行。
    比方,DNS是公民身份信息库,ip是身份证号,域名是该身份证号对应的人名。
    当然,这个比方不是很恰当,域名也必须唯一的,与ip对应。

    2、于是,PC1需要像DNS请求,查找www.google.com对应的ip,即发送dns请求:
    PC1查找dns,发现不在同一个网络,不同网段需要网关转发。
    但是,PC1需要先发送给网关,就需要先知道网关ip。
    网关用于连接不同网络,并且有自己的IP,PC1需要知道网关ip。于是,通过ARP请求,像内网广播网关ip,网关回复mac地址。
    PC1得到了网关的mac地址,将ip包封装到以太网帧,发送给网关。

    3、网关收到该以太网帧,需要转交给dns服务器。
    同样,网关可能需要发送ARP请求,得到dns的mac地址。

    4、dns服务器收到请求,将www.google.com的ip发送给网关,网关再根据NAT会话表项,将目的ip转换成PC1的,再发送给PC1(此过程可能同样需要ARP请求)。

    5、PC1收到了目的ip,再可以通过类似上面的方式发送请求(目的ip再可以直接填上获取的ip)。

    其中:
    ARP==>将ip广播,目的主机响应,反馈mac地址。


    NAT==>在一个网络内部,自定义合法的ip地址。内网各主机通过内网通讯;与外网通过NAT转换,变成外网合法ip。这样,将内网与外网隔离,各个网络有自己的ip,既可以重叠,又可以通过少数几个ip与外网通讯,在ip大量缺乏的现代,节省了很多。



    展开全文
  • 我需要自己构建IP数据包,在IP选项部分添加一些数据,因此用原始套接字发送TCP数据包但是发送成功了,另一台主机接收不到,用的2003系统,不知道哪位好心人帮助下,万分感激,谢谢
  • 解决 QT udp接收不到数据包问题

    千次阅读 2020-09-16 17:44:29
    通过bool打印connect是成功连接的,readyRead也相应,但就是收不到数据 UdpCommunication::UdpCommunication(QObject *parent) :QObject(parent) { udpSocket = new QUdpSocket(this); qint16 port; port = ...

    本次记录了两Qsocket的问题。

    问题一描述:

    QUDP一开始就接收不到数据,通过bool打印connect是成功连接的,readyRead也响应,但就是收不到数据。

    UdpCommunication::UdpCommunication(QObject *parent)
        :QObject(parent)
    {
      	udpSocket = new QUdpSocket(this);
        qint16 port;
        port = 8806;
        udpSocket->bind(QHostAddress::AnyIPv4,8806);
        connect(udpSocket, &QUdpSocket::readyRead, this, &UdpCommunication::unicastRev);
    }
    

    1.1最终找到了问题所在:

    原因是调用 writeDatagram() 发送数据包时,程序不知道有没有发完,会一直指向这里,相当于阻塞了。
    即使socket信号readyRead()发送了,也不会调用接收函数readDatagram();所以导致接收端一直接收不到数据。
    需要在发送的时候调用udpSocket->waitForReadyRead(100);告诉程序发送完毕。目前发现在windows下会出现这个问题。

    1.2示例:

    UdpCommunication::UdpCommunication(QObject *parent)
        :QObject(parent)
    {
      	udpSocket = new QUdpSocket(this);
        qint16 port;
        port = 8806;
        udpSocket->bind(QHostAddress::AnyIPv4,port );//绑定本机发送的端口,否则随机端口发送
        udpSocket->bind(port, QUdpSocket::ShareAddress | QUdpSocket::ReuseAddressHint);//绑定本机端口
        connect(udpSocket, &QUdpSocket::readyRead, this, &UdpCom::unicastRev);
    }
    
    	//发送
     	udpSocket->writeDatagram((char *)sendBuff, 2, QHostAddress::Broadcast, CONNECT_PORT_SEND);
        udpSocket->waitForReadyRead(100);//结束发送,等待读取
    
    //接收
    	QByteArray array;
        QHostAddress address;
        quint16 port;
        array.resize(udpSocket->bytesAvailable());//根据可读数据来设置空间大小
        udpSocket->readDatagram(array.data(),array.size(),&address,&port); //读取数据
    

    问题二描述:

    程序运行一段时间,readyRead不响应,无法接收数据的问题。
    本人猜测udpsocket缓存接收中,有数据我没有接收完,导致readyRead不响应。

    2.1readyRead的触发机制

    1)readyRead信号触发是在QTcpSocket缓存接收到新的数据时,并不等同于发送端write函数调用一次。
    2)当数据从系统缓冲区到QTcpSocket缓存时,readyRead信号触发一次。如果此时readyRead槽函数还没有及时执行,又有新的数据到来了,而且来了很多次(QTcpSocket缓存还没满的情况,满的情况下系统不再发数据给应用),那么这些所有的都将会只触发一次readyRead信号。
    3)当数据从系统缓冲区到QTcpSocket缓存时,readyRead信号触发一次。如果此时readyRead槽函数执行了,后续再来的新数据,将会触发新的readyRead信号。但这个QTcpSocket连接中,还没有响应的readyRead信号最多只有两个。

    2.2于是在这次问题的解决办法是:

    关闭连接,重新建立连接。

     if(udpsocket->bytesAvailable()!=0)
         {
             qDebug()<<"接收不到数据,重启";
             udpsocket->close ();
             udpsocket=new QUdpSocket(this);
             udpsocket->bind (1234,QUdpSocket::ShareAddress);
             connect (udpsocket,&QUdpSocket::readyRead,this,&UdpCom::unicastRev);
         }
    

    若接收数据正常,udpsocket->bytesAvailable()的值将为0,接收不到数据则为非零值,这样就可用个定时器,循环检测下,若不为零,将SOCKET重启即可。

    虽然挖到了QUDP的比较底层的原理,其实我感觉这个解决办法并没有解决根本原因,如果真的是缓存有数据没取完,是什么原因造成的,还得继续深挖。怎么说呢,这个问题也算是解决完了,不然一直卡着也不行。

    展开全文
  • 网络数据包发送接收全过程

    千次阅读 2016-04-14 16:38:53
    Linux的网络接口分为四部分:网络设备接口,网络接口核心,网络协议族,网络接口socket层。 可参考: http://lxr.linux.no/linux+v2.6.30.4/net/  网络设备接口部分主要负责从物理介质接收和发送数据,实现的...

    Linux的网络接口分为四部分:网络设备接口,网络接口核心,网络协议族,网络接口socket层。
    可参考:
    http://lxr.linux.no/linux+v2.6.30.4/net/
      网络设备接口部分主要负责从物理介质接收和发送数据,实现的文件在linu/driver/net目录下面。

      网络接口核心部分是整个网络接口的关键部位,它为网络协议提供统一的发送接口,屏蔽各种各样的物理介质,同时有负责把来自下层的包向合适的协议配送。它是网络接口的中枢部份。它的主要实现文件在linux/net/core目录下,其中linux/net/core/dev.c为主要管理文件。

      网络协议族部分是各种具体协议实现的部份。Linux支持TCP/IP,IPX,X.25,AppleTalk等的协议,各种具体协议实现的源码在linux/net/目录下相应的名称。在这里主要讨论TCP/IP(IPv4)协议,实现的源码在linux/net/ipv4,其中linux/net/ipv4/af_inet.c是主要的管理文件。

      网络接口Socket层为用户提供的网络服务的编程接口,主要的源码在linux/net/socket.c

    发送:

    应用程序调用系统调用,将数据发送给socket
    socket检查数据类型,调用相应的send函数
    send函数检查socket状态、协议类型,传给传输层
    tcp/udp(传输层协议)为这些数据创建数据结构,加入协议头部,比如端口号、检验和,传给下层(网络层)
    ip(网络层协议)添加ip头,比如ip地址、检验和
    如果数据包大小超过了mtu(最大数据包大小),则分片;ip将这些数据包传给链路层
    链路层写到网卡队列
    网卡调用响应中断驱动程序,发送到网络

    接收:

    数据包从网络到达网卡,网卡接收帧,放入网卡buffer,在向系统发送中断请求
    cpu调用相应中断函数,这些中断处理程序在网卡驱动中
    中断处理函数从网卡读入内存,交给链路层
    链路层将包放入自己的队列,置软中断标志位
    进程调度器看到了标志位,调度相应进程
    该进程将包从队列取出,与相应协议匹配,一般为ip协议,再将包传递给该协议接收函数
    ip层对包进行错误检测,无错,路由
    路由结果,packet被转发或者继续向上层传递
    如果发往本机,进入链路层
    链路层再进行错误侦测,查找相应端口关联socket,包被放入相应socket接收队列

    socket唤醒拥有该socket的进程,进程从系统调用read中返回,将数据拷贝到自己的buffer,返回用户态。


    DNS请求流程

    1、PC1要访问www.google.com,需要先知道对应IP地址。
    域名只起助记作用,互联网访问通过IP进行。
    比方,DNS是公民身份信息库,ip是身份证号,域名是该身份证号对应的人名。
    当然,这个比方不是很恰当,域名也必须唯一的,与ip对应。

    2、于是,PC1需要像DNS请求,查找www.google.com对应的ip,即发送dns请求:
    PC1查找dns,发现不在同一个网络,不同网段需要网关转发。
    但是,PC1需要先发送给网关,就需要先知道网关ip。
    网关用于连接不同网络,并且有自己的IP,PC1需要知道网关ip。于是,通过ARP请求,像内网广播网关ip,网关回复mac地址。
    PC1得到了网关的mac地址,将ip包封装到以太网帧,发送给网关。

    3、网关收到该以太网帧,需要转交给dns服务器。
    同样,网关可能需要发送ARP请求,得到dns的mac地址。

    4、dns服务器收到请求,将www.google.com的ip发送给网关,网关再根据NAT会话表项,将目的ip转换成PC1的,再发送给PC1(此过程可能同样需要ARP请求)。

    5、PC1收到了目的ip,再可以通过类似上面的方式发送请求(目的ip再可以直接填上获取的ip)。

    其中:
    ARP==>将ip广播,目的主机响应,反馈mac地址。


    NAT==>在一个网络内部,自定义合法的ip地址。内网各主机通过内网通讯;与外网通过NAT转换,变成外网合法ip。这样,将内网与外网隔离,各个网络有自己的ip,既可以重叠,又可以通过少数几个ip与外网通讯,在ip大量缺乏的现代,节省了很多。

    展开全文
  • Python Scapy发送数据包

    千次阅读 2019-08-25 09:15:02
    数据包 包是TCP/IP协议通信传输中的数据单位,一般也称“数据包”。 TCP/IP协议是工作在OSI模型第三层(网络层)、第四层(传输层)上的,帧工作在第二层(数据链路层)。上一层的内容由下一层的内容来传输,所以在...
  • 但是如果只有发送,却没有接收,碰到这样的故障到底又是怎么回事呢?但他们发生的原因又各有不同。 一般来说,出现这种故障的时候,网络连接都是都是好的,即不会出现红色的叉子图标。但这又只是一种表现的正常,...
  • 用UDP数据报发送数据给本机,数据可以发出去,但是服务端(本机)却接收不到任何数据,刚接触网络,请指教! 服务器端: SOCKET server_socket_udp; sockaddr_in server_address_udp,from_address_udp; char ...
  • 网络数据包转发和接收全过程

    万次阅读 2016-09-18 13:30:09
    网络知识欠缺很多,利用业余时间多看看网络方面的知识。
  • Linux内核中网络数据包的接收-第一部分 概念和框架

    万次阅读 多人点赞 2016-01-16 15:26:51
    网络数据包发送不同,网络收包是异步的的,因为你确定谁会在什么时候突然发一个网络包给你,因此这个网络收包逻辑其实包含两件事:1.数据包到来后的通知2.收到通知并从数据包中获取数据这两件事发生在协议栈的...
  • wireshark抓取聊天网络数据包

    千次阅读 2021-11-16 23:08:47
    wireshark抓取聊天网络数据包一、实验任务二、实验步骤 一、实验任务 据包。在两台及两台以上的电脑(已知IPv4地址)上运行 “疯狂聊天室”程序,通过wireshark抓包: 1)分析此程序网络连接采用的是哪种协议(TCP...
  • 网络数据包各层结构

    万次阅读 2021-01-19 11:39:38
    如果为1 ,则表示对方应当立即把数据提交给上层应用,而不是缓存起来,如果应用程序将接收的数据读走,就会一直停留在TCP 接收缓冲区中 RST :如果收到一个RST=1 的报文,说明与主机的连接出现了严重错误(如...
  • 在最近这段时间的网络故障排除工作中,发现很多情况下有本地连接已经连接但是发送包却没有接收包的情况,现总结出如下几种情况: 1、双铰线的故障 在修理的过程中已经排除了网卡的故障,线直接连接在电脑上后...
  • 接前文connect 函数剖析(一) 接收数据包函数,release_sock 函数是在 sock.c中,该函数是...//如果对应的套接字正忙或被中断,则将数据包暂存sock结构back_log队列中,这不能算被接收 //数据包要插入receive_queue
  • 网络数据包转发过程

    千次阅读 2018-01-30 09:14:41
    网络数据包转发过程 参考连接:http://blog.csdn.net/hanbo622/article/details/39694149 ...1、当PC1 ping PC3时,发现它们的IP在同一网段,PC1就将数据包发送至网关(1.1.1.1/24),这时需要
  • 网络数据包传输过程总结

    万次阅读 多人点赞 2016-03-01 13:39:17
    一、数据包是如何在网络中传输的 我们电脑上的数据,是如何“走”远端的另一台电脑的呢?这是个最基础的问题,可能很多人回答上来,尽管我们每天都在使用网络。这里我们以一个最简单的“ping”命令,来解释一...
  • 本地连接接收数据包为零怎么办?

    千次阅读 2010-01-25 15:57:51
    但是如果只有发送,却没有接收,碰到这样的故障到底又是怎么回事呢?在笔者短暂的两年网管生涯中,出现了几次这样的故障,但他们发生的原因又各有不同。今天笔者就把一些解决方法奉献给大家。  一般来说,出现这种...
  • Golang 构建网络传输数据包

    千次阅读 2018-07-26 22:06:15
    网络通信中,端与端之间只能传输二进制数据流。TCP/IP协议的解析已经完全交给了硬件设备完成,即便是软路由等用服务器上装软件来替代硬件设备也已经相当成熟。...总之网络通信只剩下序列化对象,发送...
  • 局域网A中主机A产生的数据包是如何发送至局域网B中的主机B的。下图展示了数据包从主机A中应用程序生成转发主机B的过程。 主机A的应用程序先生成应用层数据,应用层数据达到传输层后,传输层根据应用层协议类型...
  • 在TCP协议中,为了确保数据稳定发送,协议使用数据包中的syn,ack两个字段来监控数据是否正确发生和接收,本节我们看看这两个字段如何保证数据的平稳传输。 假设客户端和服务器通过三次握手建立了连接,然后双方...
  • 这几天第一次遇到了这样的问题,网络连接发送和接收的数据量特别大,之前我用自己的台式电脑,后来帮我朋友弄手提电脑,发现接收和发送的数据量特别地大,刚开始没注意看是接收数据包还是接收字节,以为是电脑出问题了或者...
  • 一分钟读懂低功耗蓝牙(BLE)连接数据包1.概述 BLE 连接过程中有三个重要的数据包:SCAN_REQ, SCAN_RSP 和 CONNECT_REQ。 SCAN_REQ: 扫描请求,由主设备(MASTER DEVICE)向从设备(SLAVE DEVICE)发出,目的是...
  • 原文链接 ... 最近把跨路由的数据传输过程搞的差不多了,所以特意写下这篇文章,仅为以后回忆之用。...只要理解这些,那也就差不多可以理解跨路由传输过程了(两者不同之处在于源和目标MAC地址的转换)。
  • 发送TCP数据包

    千次阅读 2014-06-10 21:12:26
    本设计的功能是填充一个TCP数据包,并发送给目的主机。 二、实验要求: 1)以命令行形式运行:SendTCP source_IP source_port dest_ip dest_port 其中,SendTCP为程序名,source_IP为源端IP地址,source_port...
  • 网络编程之UDP程序数据包发送

    千次阅读 2011-06-06 11:44:00
    UDP是面向无连接的通信,它发送的是数据包,效率高,但是保证通信的可靠,也就是说他保证数据包能完全到达目的主机。 写一实例程序来体验UDP通信在写示例程序之前首先应查阅API文档,了解UDP通信...
  • 网络编程】---C++实现原始套接字捕获数据包

    千次阅读 多人点赞 2019-12-18 18:09:21
    网络编程】—C++实现原始套接字捕获数据包 引言:通过创建原始套接字,获取本地可用的Ip地址,选择捕获数据包使用的网卡,绑定本地地址后,设置网卡为混杂模式,实现循环接收并显示数据来实现捕获数据包。 ...
  • 这是PC与模拟器间UDP包不通的解决方案android模拟器接收不到UDP数据包解决方法 代码如下: DatagramPacket pack = null; DatagramSocket mail_data = null; byte receiver[] = new byte[100]; try { pack = ...
  • tcp发送和接收的原理

    千次阅读 2017-05-29 15:29:26
    每个TCP socket在内核中都有一个发送缓冲区和一个接收缓冲区,TCP的全双工的工作模式以及TCP的流量(拥塞)控制便是依赖于这两个独立的buffer以及buffer的填充状态。接收缓冲区把数据缓存入内核,应用进程一直没有调用...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 227,179
精华内容 90,871
关键字:

网络连接数据包能发送但是收不到