Python 网络编程(进阶)
TCP协议1. 预备知识分包粘包2.
TCP协议2.1
TCP协议的作用分包:
TCP传输的“特性”2.2
TCP 数据包的大小2.3
TCP数据包的编号(SEQ)2.4
TCP数据包的组装2.5 慢启动和 ACK2.6 数据包的遗失处理
1. 预备知识
(1)what is 分包
TCP是 以段(Segment)为单位 发送数据的,建立
TCP链接后,有一个 最大
报文长度(Maximum Segment Size,MSS) ,就是
TCP数据包每次能够传输的最大数据分段。
在工作中,有段时间需要构造报文来进行相关的系统功能验证,而当时手边又没有一个趁手的报文构造或者改包工具(其实后来知道有的只是我不知道----手动狗头),遂接触了python3的第三方库scapy。
可以先看看scapy的官方介绍
Scapy is a Python program that enables the user to send, sniff and dissect and forge network packets. This capability allows cons...
根据要求,需将
报文长度以4个字节的形式拼接在
报文前。
当前通信是使用
python中的socket包,在发送前需先将
报文转为bytes形式发送,因此选用了将int型的
报文长度转换为4个字节长度的bytes型数据进行传输的方法,如下。
int(length).to_bytes(length=4, byteorder='big', signed=True)
def socket_sendto(ip, port, xmlbw): # 此时的xmlbw是b