TCP概述

Python爬取京东商品数据保姆级教程(附源码及效果图) 本文介绍了一个基于Python的京东商品数据爬取教程,适合入门级开发者使用。文章详细讲解了从安装依赖库(DrissionPage、pandas等)到完成数据爬取的全过程,包括:1. 模拟用户搜索操作;2. 解析商品标题、价格、销量等关键信息;3. 处理复杂数据格式(如转换万级销量);4. 数据存储与Excel导出。教程提供了完整的封装函数,支持自定义搜索关键词和爬取数量,并包含错误处理和多种元素定位方式。最终数据会按时间戳命名导出为Excel文件,方便用于课程作业或毕业设计。 阅读详情


TCP是一种面向连接的、基于字节流的传输层通信协议。TCP协议采用三次握手建立一个连接,采用四次挥手断开连接。TCP特点:保证可靠性,同时尽可能提高性能

建立连接的过程

三次握手

在这里插入图片描述

第一次

客户端给服务端发一个 SYN 报文,并指明自己的初始化序列号 seq = x。此时客户端处于 SYN_SENT(同步已发送) 状态。TCP规定,SYN报文段(SYN=1的报文段)不能携带数据,但需要消耗掉一个序列号。

第二次

服务器收到客户端的 SYN 报文之后,如果同意连接,则发出确认 ACK 报文。确认序列号是 ack = x+1 ,并且也要指明自己的初始化序列号 seq = y 。表示自己已经收到了客户端的 SYN,此时服务器处于 SYN_RCVD(同步收到) 的状态。这个报文也不能携带数据,但是同样要消耗一个序列号。

第三次:

客户端收到服务端的确认后,还会向服务器发出确认 ACK 报文。确认序列号为第二次握手服务器的序列号 y+1 ,同时自己的序列号是 x+1 。发送完成后,客户端进入**ESTABLISHED(已建立连接)状态。当服务器收到客户端的确认后也进入ESTABLISHED(已建立连接)**状态,双方就可以开始通信了。

为什么需要三次

  • 第一次可以知道客户端的发送能力、服务端的接收能力是正常的。
  • 第二次可以知道服务端的接收、发送能力,客户端的接收、发送能力是正常的。不过此时服务器并不能确认客户端的接收能力是否正常。
  • 第三次可以知道客户端的接收、发送能力正常,服务器自己的发送、接收能力也正常。

半连接队列和全连接队列

服务器第一次收到客户端的 SYN 之后,就会处于 SYN_RCVD 状态,此时双方还没有完全建立其连接,服务器会把此种状态下请求连接放在一个队列里,我们把这种队列称之为半连接队列。

全连接队列,就是已经完成三次握手,建立起连接的就会放在全连接队列中。如果队列满了就有可能会出现丢包现象。

SYN攻击(洪泛攻击)

SYN攻击就是客户端在短时间内伪造大量不存在的IP地址,并向服务器不断地发送SYN包(也就是第一次握手),服务端则回复确认包(第二次握手,服务端也是在这个时候分配了TCP空间),并等待客户端确认,由于源地址不存在,因此服务端需要不断重发直至超时,这些伪造的SYN包将长时间占用未连接队列,导致正常的SYN请求因为队列满而被丢弃,从而引起网络拥塞甚至系统瘫痪。
防御手段:1.SYN Cache:不急于分配TCP空间,先保存起来并且相应客户端,直到接收了客户端的第三次握手相应后再分配TCP空间。2.SYN Cookie:使用特殊的算法验证,验证通过才为连接创建TCP空间。3.SYN Proxy防火墙:在客户端发送SYN包时进行一次拦截,确认连接的有效性后才放行发给服务器。如下图:
在这里插入图片描述

断开连接的过程

四次挥手

在这里插入图片描述

第一次

客户端发出连接释放 FIN 报文,其序列号为 seq = u ,并停止再发送数据,主动关闭TCP连接,进入**FIN-WAIT-1(释放等待1)**状态,等待服务端的确认。TCP规定,FIN报文段即使不携带数据,也要消耗一个序号。

第二次

服务端收到连接释放报文段后即发出确认 ACK 报文,确认序号为 u+1,并且带上自己的序号 seq=v ,服务端进入**CLOSE-WAIT(关闭等待)状态。客户端收到服务端的确认后,进入FIN-WAIT-2(释放等待2)**状态。此时的TCP处于半关闭状态,即客户端已经没有数据要发送了。但是服务器若发送数据,客户端依然要接受。

第三次

服务器发送完所有数据后,最后发出连接释放 FIN 报文,序号为w,确认序列号为 v+1 ,服务端进入**LAST-ACK(最后确认)**状态,等待客户端的确认。

第四次

客户端收到服务端的连接释放报文段后,对此发出确认 ACK 报文,序号为 w+1,自己的序号为 u+1,客户端进入**TIME-WAIT(时间等待)状态。此时TCP未释放掉,需要经过2∗MSL(Maximum Segment Lifetime:最长报文段寿命)的时间后,客户端才进入CLOSED(关闭)状态。服务端收到客户端的确认报文段后,立即进入CLOSED(关闭)**状态。

为什么建立连接是三次握手,关闭连接是四次挥手

  • 建立连接的时候, 服务器在LISTEN状态下,收到建立连接请求的SYN报文后,把ACK和SYN放在一个报文里发送给客户端。
  • 而关闭连接时,服务器收到对方的FIN报文时,仅仅表示对方不再发送数据了但是还能接收数据,而自己也未必全部数据都发送给对方了,所以己方可以立即关闭,也可以发送一些数据给对方后,再发送FIN报文给对方来表示同意现在关闭连接,因此,己方ACK和FIN一般都会分开发送,从而导致多了一次。
保姆级教程:用CellOracle 0.10.13分析你的单细胞数据,从GRN构建到基因扰动模拟 本文详细介绍了如何使用CellOracle 0.10.13进行单细胞数据分析,从基因调控网络(GRN)构建到基因扰动模拟的全流程。通过环境配置、数据准备、GRN构建和扰动模拟等步骤,帮助研究者高效预测细胞命运决定的分子机制,特别针对实际分析中的易错点提供解决方案。 阅读详情

相关推荐

华为2288H-V5服务器做raid的详细步骤

华为2288H-V5服务器做RAID

qq_50263172的博客 6万+

什么是TCP

TCP是什么? TCP是面向连接的协议,是允许系统通过Internet进行通信的标准,它定义了如何建立和维护应用程序可以通过其交换数据的网络对话;保证了数据的传递,并保证数据包的发送顺序与发送数据包的顺序相同。 TCP是OSI层中的传输层协议,用于通过传输和确保通过支持网络和Internet传递消息来在远程计算机之间创建连接。 TCP是数字网络通信中最常用的协议之一,是Internet协议套件的一部分,它和IP一起是定义Internet的基本规则,通常称为TCP / IP套件。 TCP ...

weixin_63781898的博客 5716

电子货架标签应用浅析(ESL)

​【 关注与分享,是对原创最大的鼓励 】 年底了,会断续介绍几个主要的BLE的应用及市场情况,这篇文章介绍的是电子货架标签, ESL (Electronic Shelf Label)。 文章将从应用简介,市场规模,产业链,头部玩家及系统框架进行介绍。只对技术感兴趣的可以直接拉到底。 ESL简介 ESL,是一种显示产品,其主要是替代传统的纸质标签,应用于大型商超,...

iotthings的博客 4694

TCP通信的概述

Leon_Jinhai_Sun的博客 228

source tree clone error:fatal remote error: Repository not found

source tree clone error:fatal remote error: Repository not found

Linda的前端开发路 3078

61、神经科学中的分岔与双分子反应研究

本文探讨了神经科学中的分岔现象与双分子反应建模。在神经元网络中,通过分析四细胞网络的呼吸节律振荡,揭示了分岔对振荡频率和占空比的影响,并区分了单神经元与网络层面的分岔特性。在神经群体模型中,系统参数变化引发的分岔可导致振荡、混沌等动态行为转变,文中详细介绍了局部分岔、全局分岔和高余维分岔的机制,并以Jansen-Rit模型为例展示了输入水平变化下的分岔过程。在分子层面,重点介绍了MWC模型在描述配体与多位点蛋白质结合中的应用,涵盖其构象状态、平衡常数及统计因子。研究表明,分岔理论和双分子反应建模为理解神经系

yog99的博客 80

TCP(TCP客户端、服务器如何通信)

TCP客户端、服务器如何通信,讲解了bind,listen,accept 等函数,与UDP的差别等等

BEIFEN13的博客 1万+

OpenAI Error: 403 Country, region, or territory not supported [Python]

从OpenAI的API服务中获取数据时,由于你所在的国家、地区或领土不被支持,因此请求被拒绝了

suiusoar 5673

TCP 协议学习

本文介绍了 TCP 协议,包括其基本概念、工作原理、报文格式分析、可靠性保证机制、拥塞控制策略等方面,并推荐了一些学习 TCP 协议的优质网站,旨在帮助读者系统地掌握 TCP 协议的相关知识。

candy的博客 1605

详解AUTOSAR:DaVinci Configurator配置CAN和UART数据协议解析器(RH850)(实战篇—1)

通过学习本篇博文项目,将会把所学的DaVinci Configurator知识系统串联起来。

不脱发的程序猿 2815

基于STM32、HAL库的MCP4651-503E/ST数字电位器驱动程序设计

@param channel: 通道 (0: A通道, 1: B通道)* @param channel: 通道 (0: A通道, 1: B通道)// SPI1 SCK/MISO/MOSI引脚配置。* @param hmcp: MCP4651句柄。* @param hmcp: MCP4651句柄。* @param hmcp: MCP4651句柄。* @param hmcp: MCP4651句柄。* @param hmcp: MCP4651句柄。* @param hspi: SPI句柄。

corlin6688的博客 137

网络编程——TCP

TCP编程 TCP是一种可靠的,基于连接的网络协议,它是面向字节流的,即从一个进程到另一个进程的二进制序列。一条TCP连接需要两个端点,这两个端点需要分别建立各自的套接字。通常一方用于发送请求和数据(称为客户端),另一方用于监听网络请求和数据(称为服务端)。 两端通信时步骤: 服务端程序,需要事先启动,等待客户端的连接。 客户端主动连接服务器端,连接成功才能通信。服务端不可以主动连接客户端。 在Java中,提供了两个类用于实现TCP通信程序: 客户端:java.net.Socket 类表示。创建Soc

qq_43711234的博客 1196

【一看就会】Autoware.universe中静态绕障路线的生成逻辑

在路径行为规划中,前期根据地图和起点终点,生成了一组连续可行的路径段序列(lanelets),然后后续路径行为规划,又会进行起始点,终止点,避障绕障路径的路径规划,并且会调用route_handler中的函数,进行中心线生成,最后生成路径,后续再给速度行为规划进行速度规划。在autoware.universe的规划中,是基于规则的规划,而其中的规则又是为了解决不同场景的。而这些场景,大部分是为了解决路上障碍物(静态、动态、行人、车辆等等)。

weixin_48386130的博客 321

Tcp通信概述

weixin_38914772的博客 234

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

tcp客户端概述

weixin_46539107的博客 407

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

JAVA进阶-TCP通信程序,日志概述

问题:TCP客户端发送数据的对象叫什么?Java中的TCP通信Java对基于TCP协议的的网络提供了良好的封装,使用Socket对象来代表两端的通信端口,并通过Socket产生IO流来进行网络通信。Java为客户端提供了Socket类,为服务器端提供了ServerSocket类构造方法方法名说明创建流套接字并将其连接到指定IP指定端口号创建流套接字并将其连接到指定主机上的指定端口号相关方法方法名说明返回此套接字的输入流返回此套接字的输出流示例代码。

qinqin__的博客 867

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

TCP 概述

TCP(Transmission Control Protocol) 是面向连接的通信协议, 通过三次握手建立连接, 然后才能开始数据的读写, 通讯完成时要拆除连接, 由于 TCP 是面向连接的所以只能用于端 到端的通讯。 TCP 提供的是一种可靠的数据流服务, 数据有可能被拆分后发送, 那么采用超时重传机 制是和应答确认机制是组成 TCP 可靠传输的关键设计。 而超时重传机制中最最重要的就是重传超时(RTO, Retransmission TimeOut) 的时间选 择, 很明显, 在工程上和现实中网络环

qq_31391225的博客 342

TCP协议概述

TCP协议是为了在不可靠的互联网络上提供可靠的端到端字节流而专门设计的一个传输协议。互联网络与单个网络有很大的不同,因为互联网络的不同部分可能有截然不同的拓扑结构、带宽、延迟、数据包大小和其他参数。TCP的设计目标是能够动态地适应这些特性,并且具备面对各种故障时的健壮性。TCP协议作为互联网中最重要的传输层协议之一,其可靠性、面向连接、流量控制与拥塞控制等特性为数据的稳定传输提供了有力的保障。然而,TCP协议也存在一些缺点和限制,需要在具体的应用场景中进行权衡和选择。

hong161688的博客 1601

传输控制协议TCP概述

# 系列文章目录 提示:这里可以添加系列文章的所有文章的目录,目录需要自己手动添加 例如:第一章 Python 机器学习入门之pandas的使用 提示:写完文章后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录# 系列文章目录前言一、pandas是什么?二、使用步骤1.引入库2.读入数据总结1)TCP最主要的特点2)TCP的连接 前言 提示:这里可以添加本文要记录的大概内容: 例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学习的基础内

weixin_44451209的博客 288

TCP通信概述

概述 TCP通信能实现两台计算机之间的数据交互,通信的两端,严格区分为客户端(Client)和服务器(Server) 在Java中,提供了两个类用于实现TCP通信程序: 1.客户端: java.net.Socket 类表示。创建 Socket 对象,向服务端发出连接请求,服务端响应请求,两者建立连接开始通信。 2.服务端: java.net.ServerSocket 类表示。创建 ServerSocket 对象,相当于开启一个服务,并等待客户端的连接。 服务器端必须明确: 1.多个客户端同时和服务器进行交

xxxjackboy的博客 1659
上一篇: GC垃圾回收
下一篇: SpringCloud组件
fufucen
博客等级 码龄8年 2粉丝 36原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值