TCP自连接

陈硕的第8节视频介绍了TCP自连接这个特性。

程序代码类似于:

for i in range(65536):
    try:
        sock = socket.create_connection(('localhost', port))
        time.sleep(60*60)
    except:
        ...

这里主要是这样的一个逻辑:

首先在循环中每次尝试创建连接的时候,TCP会分配一个IP给客户端,这个IP不是每次都随机的而是会自增。在最多尝试了65536或更少次后,一定会恰好和我们输入的port参数重合(如果port没有被占用),那么就产生了一个客户端连接到自己的现象。要避免这个现象,可以在网络库中进行判断。

时间: 2024-08-31 15:07:59

TCP自连接的相关文章

TCP/IP协议体系结构简介

  1.TCP/IP协议栈 四层模型 TCP/IP这个协议遵守一个四层的模型概念:应用层.传输层.互联层和网络 接口层. 网络接口层 模型的基层是网络接口层.负责数据帧的发送和接收,帧是独立的网络信息传 输单元.网络接口层将帧放在网上,或从网上把帧取下来. 互联层 互联协议将数据包封装成internet数据报,并运行必要的路由算法. 这里有四个互联协议: 网际协议IP:负责在主机和网络之间寻址和路由数据包. 地址解析协议ARP:获得同一物理网络中的硬件主机地址. 网际控制消息协议ICMP:发送消

飞鱼星路由器TCP/IP优化加速

任何的网络都有一定的带宽,如果带宽占满了,那么我们就无法再获得更快的体验,这时很多人都会选择添加一条新的线路,或是增加原本的带宽,其实不然,可以通过TCP/IP优化加速来解决这个问题,本篇以飞鱼星路由器为例分析. 一.解决这个问题的一个方法是优化现有技术方案.许多网络流量仍然基于TCP/IP.TCP提供了可靠有序的数据包传输,大多数Web应用.电子邮件和文件传输都使用这种协议.可是,TCP的流管理算法并不先进:如果网络或接收端无法处理发送的传输速度,其表现是出现丢包.超时或乱序数据包过多等问题,

tcp为什么要三次握手,而不能二次握手?

谢希仁版<计算机网络>中的例子是这样的,"已失效的连接请求报文段"的产生在这样一种情况下:client发出的第一个连接请求报文段并没有丢失,而是在某个网络结点长时间的滞留了,以致延误到连接释放以后的某个时间才到达server.本来这是一个早已失效的报文段.但server收到此失效的连接请求报文段后,就误认为是client再次发出的一个新的连接请求.于是就向client发出确认报文段,同意建立连接.假设不采用"三次握手",那么只要server发出确认,新的

java tcp-tomcat应用出现了很多自己连自己tcp,有大神知道什么问题吗?

问题描述 tomcat应用出现了很多自己连自己tcp,有大神知道什么问题吗? TCP 127.0.0.1:3313 127.0.0.1:3314 ESTABLISHED 3960 TCP 127.0.0.1:3314 127.0.0.1:3313 ESTABLISHED 3960 TCP 127.0.0.1:3315 127.0.0.1:3316 ESTABLISHED 3960 TCP 127.0.0.1:3316 127.0.0.1:3315 ESTABLISHED 3960 TCP 127

tcp连续传输数据getlastError 122

问题描述 tcp连续传输数据getlastError 122 struct { double a; double b;}WS;struct { WS[200000]; double num;}MS; 连续传输MS结构体数据发生接收不到数据现象,getlasterror后 错误122.求帮助 解决方案 调用发送tcp发送函数的返回值是多少???建议用鲨鱼工具网络抓包分析比较擅长这块有疑问可以在我博客上留言或者给我发邮件

连接-TCP通信的数据格式该怎么定义???

问题描述 TCP通信的数据格式该怎么定义??? 请问TCP长连接该怎么定义什么样的数据格式才不会粘包呢?大牛们请指教!谢谢! 解决方案 粘包没关系,只要能正确拆包就行.比如约定: 发送,先发4个字节表述数据的长度,再发数据. 接受,先接受4个取得长度,再按长度读取数据.剩下的就是下个包的. 解决方案二: 自己定义包的结构,里面定义字段定义包的长度等,收到数据后,根据协议解析数据包等

深入浅出TCP协议的三次握手过程

TCP是主机对主机层的传输控制协议,提供可靠的连接服务,采用三次握手确认建立一个连接: 每一次TCP连接都需要三个阶段:连接建立.数据传送和连接释放."三次握手"就发生在连接建立阶段. 1.三次握手(three times handshake) 所谓的"三次握手"即对每次发送的数据量跟踪进行协商使数据段的发送和接收同步,以及根据所接收到的数据量来确定数据发送.接收完毕后何时撤消联系,并建立虚连接. 第一次握手:主机A发送位码为syn=1,随机产生seq number

阿里云SLB使用Windows 2008/Windows 2012时TCP端口不通

Linux使用LVS DR或者阿里云的SLB TCP模式转发时,需要关闭rp_filter参数,否则会造成健康检查正常,但是端口不通的情况. 随着Windows系统的升级,在Windows2008以上版本, 也有了这样类似功能的参数weakhostsend(中文版系统叫弱主机),如果弱主机发送接收被禁用,就会导致阿里云TCP协议的SLB转发异常.win/linux下这个参数的功能是类似的,都是为了 防止跨接口转发数据包. 我们来测试一下: 1 2 SLB VIP: 101.201.178.107

TCP超时/丢失重传

Nagle算法要求一条TCP连接上最多只有一个未被确认的报文,发送方发送一个TCP报文,接收方确认该报文,发送方再发送下一个报文,若发送方在一定时间内未收到确认,则再重发报文.相对来说Nagle算法相对简单且不容易出错,但却降低了网络的吞吐量,也增加了网络流量. 在实际的TCP实现中,接收方往往一次确认一批的TCP报文,且确认报文与接收方发往发送方的报文一同回复,以减少网络流量,从另一方面说也就允许发送方在前一报文未确认时,可以继续发送下一个报文,虽然这种实现提高了吞吐量,但却带来了另一个问题,