1.缓冲区:作用:将程序和网络解耦分为输入缓冲区, 输出缓冲区  每个 socket 被创建后,都会分配两个缓冲区,输入缓冲区和输出缓冲区。write()/send() 并不立即向网络中传输数据,而是先将数据写入缓冲区中,再由TCP协议将数据从缓冲区发送到目标机器。一旦将数据写入到缓冲区,函数就可以成功返回,不管它们有没有到达目标机器,也不管它们何时被发送到网络,这些都是TCP协议负责的事情。TC
暂时不会用markdown,先凑活写着。1.信息搜集简单描述,不是重点,在目标web 10000端口的bin文件夹下发现brainpan.exe,也是目标机器运行在9999端口的程序。2.缓冲区溢出getshell:写python脚本定位eip大致位置:这里比较奇怪的是python2可以发包成功,但是python3不行,十分奇葩。#!/usr/bin/python import socket im
在《发送数据和接收数据》一节中讲到,可以使用 write()/send() 函数发送数据,使用 read()/recv() 函数接收数据,本节就来看看数据是如何传递的。 socket缓冲区每个 socket 被创建后,都会分配两个缓冲区,输入缓冲区和输出缓冲区。 write()/send() 并不立即向网络中传输数据,而是先将数据写入缓冲区中,再由TCP协议将数据从缓冲区发送到目标机器。一旦将数据
 有一个问题: 我搜索了一些关于recvbuf/sndbuf的blog,基本上说的是recvbuf就是socket的滑动窗口大小,而滑动窗口大小是16位的,最大也就是64k, 你这边读取出来的数据已经超过64k了,是否我理解上有什么偏差?答:在TCP头部只有16位来表示,所以它的最大值是65536,但是对于一些情况来说需要使用更大的滑动窗口,这时候就要使用扩展的滑动窗口,这时会使用扩展的
网络的概念:主机   端口  IP  协议           服务器:      localhost/127.0.0.1  客户端:      只是在本机启动客户端,用127.0.0.1访问
本来刚接触python,最近因为疫情无聊把买来好久没用的pyboard v102拿出来自己耍着玩。pyboard用的是micropython针对这块板的“PYB1.0-thread-1.12”这个版本的micropython固件。这个版本的固件是比普通固件多了个多线程功能(虽然据说thread的API开发还不完全)说明以上原因是我只是偶然遇到并且只在上述环境下发现并测试研究的。闲言少续,说正题。&
转载 7月前
56阅读
linux send与recv函数详解 1 #include <sys/socket.h> 2 ssize_t recv(int sockfd, void *buff, size_t nbytes, int flags); 3 ssize_t send(int sockfd, const void *buff, size_t nbytes, int flags); recv 和
tcp: 属于长连接,与一个客户端进行连接了以后,其他的客户端要等待.要想连接另外一个客户端,需要优雅地断开当前客户端的连接 允许地址重用: server.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) 在bind IP地址和端口之前,写这句话,防止端口被占用无法使用. 缓冲区: 输入缓冲区 # recv 输出缓
转载 2023-06-14 18:35:02
776阅读
Python网络编程03 /缓存、基于TCP的socket循环通信、执行远程命令、socketserver通信目录Python网络编程03 /缓存、基于TCP的socket循环通信、执行远程命令、socketserver通信1. 操作系统的缓冲区2. 基于TCP协议的socket循环通信服务端(server)客户端(client)3. 基于TCP协议的socket链接+循环 通信服务端(ser
转载 2023-07-27 16:51:47
290阅读
一、socket缓冲区每个 socket 被创建后,都会分配两个缓冲区,输入缓冲区和输出缓冲区。以下用write()/send()表示写数据/发送数据,read()/recv() 表示读数据/接收数据进行说明。write()/send()并不立即向网络中传输数据,而是先将数据写入缓冲区中,再由TCP协议将数据从缓冲区发送到目标机器。一旦将数据写入到缓冲区,函数就可以成功返回,不管它们有没有到达目标
转载 2月前
44阅读
目录网络收发缓冲区TCP粘包UDP服务端编程UDP客户端编程TCP与UDP编程区别套接字对象UDP应用之广播TCP应用之HTTP服务1. 网络收发缓冲区套接字传输注意事项 1.监听套接字存在客户端即可发起连接 但是最终连接的处理需要accept处理 2.如果连接的另外一端退出 则 recv会立即返回空字符串并解除阻塞 3.当连接的另一端退出是,再试图 .send 发送 就会
一、缓冲区 每个socket被创建以后,都会分配两个缓冲区,输入缓冲区和输出缓冲区,默认大小都为8k,可以通过getsocket()获取,暂时存放传输数据,防止程序在发送数据的时候卡组,提高代码运行效率 首先看python的系统交互subprocessimport subprocess sub_obj = subprocess.Popen( 'dir',
转载 2023-07-10 20:35:05
646阅读
说粘包之前,先了解两个内容:  1.缓冲区  2.windows下cmd窗口调用系统指令缓冲区(下面粘包现象的图里面还有关于缓冲区的解释)每个socket被创建后,都会分配两个缓冲区,输入缓冲区和输出缓冲区.write()/send() 并不立即向网络中传输数据,而是先将数据写入缓冲区中,再由TCP协议将数据从缓冲区发送到目标机器.一旦将数据写入到缓冲区,函数就可以成功返回,不管它们有没有到达目标
socket缓冲区 每个 socket 被创建后,都会分配两个缓冲区,输入缓冲区和输出缓冲区。 write()/send() 并不立即向网络中传输数据,而是先将数据写入缓冲区中,再由TCP协议将数据从缓冲区发送到目标机器。一旦将数据写入到缓冲区,函数就可以成功返回,不管它们有没有到达目标机器,也不管它们何时被发送到网络,这些都是TCP协议负责的事情。 TCP协议独立于 write()/send(
send并不立即向网络中传输数据,而是将数据...
转载 2017-03-02 22:22:00
516阅读
2评论
Socket有一个缓冲区缓冲区是一个流,先进先出,发送和取出的可自定义大小的,如果取出的数据未取完缓冲区,则可能存在数据怠慢。其中【recv(1024)】表示从缓冲区里取最大为1024个字节,但实际取值大小是不确定的,推荐其值小于等于8192。黏包问题:Socket发送两条连续数据时,可能最终会拼接成一条进行发送解决方法一:两条数据间进行延时发送,如【tiem.sleep(0.5) #延时0.5
转载 2023-08-11 15:26:19
910阅读
socket缓冲区每一个socket在被创建之后,系统都会给它分配两个缓冲区,即输入缓冲区和输出缓冲区。 send函数并不是直接将数据传输到网络中,而是负责将数据写入输出缓冲区,数据从输出缓冲区发送到目标主机是由TCP协议完成的。数据写入到输出缓冲区之后,send函数就可以返回了,数据是否发送出去,是否发送成功,何时到达目标主机,都不由它负责了,而是由协议负责。recv函数也是一样的,它并不是直接
1.粘包现象每个 socket 被创建后,都会分配两个缓冲区,输入缓冲区和输出缓冲区。write()/send() 并不会立即向网络中传输数据,而是先将数据写入缓冲区中,再由TCP协议将数据从缓冲区发送到目标机器。一旦将数据写入到缓冲区,函数就可以成功返回,不管它们有没有到达目标机器,也不管它们何时被发送到网络,这些都是TCP协议负责的事情,tcp的协议数据不会丢,没有收完包,下次接收,会继续上次
转载 2023-09-09 09:29:47
382阅读
在《socket数据的接收和发送》一节中讲到,可以使用 write()/send() 函数发送数据,使用 read()/recv() 函数接收数据,本节就来看看数据是如何传递的。 socket缓冲区每个 socket 被创建后,都会分配两个缓冲区,输入缓冲区和输出缓冲区。 write()/send() 并不立即向网络中传输数据,而是先将数据写入缓冲区中,再由TCP协议将数据从缓冲区发送到目标机器。
转载 10月前
105阅读
1.缓冲区每个socket被创建以后,都会分配两个缓冲区,输入缓冲区和输出缓冲区,默认大小都是8k,可以通过getsocket()获取,暂时存放传输数据,防止程序在发送的时候卡阻,提高代码运行效率.首先看python的系统交互subprocess:import subprocess sub_obj = subprocess.Popen(    'l
  • 1
  • 2
  • 3
  • 4
  • 5