python socket tcp实战_Python socket.TCP_MAXSEG属性代码示例
# 需要导入模块: import socket [as 别名]
# 或者: from socket import TCP_MAXSEG [as 别名]
def handle_tcp_state_tosock(self, ip):
tcp = ip.data
global tun, input
log.debug("=== NAT64 TCP sock-send: %d %s."%(tcp.flags, self.sock))
if self.sock is None:
log.warning("Socket already closed.")
return
if tcp.flags & dpkt.tcp.TH_SYN > 0:
# Use Window size to control max segment?
self.sock.setsockopt(socket.SOL_TCP, socket.TCP_MAXSEG, 1000)
log.debug("Maxseg: %d" % self.sock.getsockopt(socket.SOL_TCP, socket.TCP_MAXSEG))
self.ack = tcp.seq + 1
# We are established...
self.state = TCP_ESTABLISHED
self.window = tcp.win
# Get the MSS of the options
opts = dpkt.tcp.parse_opts(tcp.opts)
for k, v in opts:
if k == dpkt.tcp.TCP_OPT_MSS:
print("MSS:", v)
self.mss, = struct.unpack("!H", v)
print("MSS:", self.mss)
log.debug("TCP State: %d SYN received." % self.mss)
self.tcp_reply(ip, dpkt.tcp.TH_SYN | dpkt.tcp.TH_ACK)
print("IP:", repr(ip))
send_to_tun(bytes(ip))
# sock.send(ip.load)
elif tcp.flags & dpkt.tcp.TH_FIN:
self.state = TCP_FIN_CLOSE_WAIT
self.ack = tcp.seq + 1
self.timeout = time.time()
log.debug("TCP: FIN received - sending FIN. %s" % self)
self.tcp_reply(ip, dpkt.tcp.TH_FIN | dpkt.tcp.TH_ACK)
print("IP:", repr(ip))
send_to_tun(bytes(ip))
# Clean out this socket?
elif tcp.flags & dpkt.tcp.TH_ACK:
if self.state == TCP_ESTABLISHED:
if len(tcp.data) == 0:
log.debug("ESTABLISHED or ACK from other side. seq: %d ack: %d" % (tcp.seq, tcp.ack))
self.seq = tcp.ack
else:
# ACK immediately - we assume that we get data from other side soon...
log.debug("TCP: received %d seq: %d ack%d ." % (len(tcp.data), tcp.seq, tcp.ack))
self.ack = tcp.seq + len(tcp.data)
# We should also handle the sanity checks for the ACK
self.seq = tcp.ack
self.tcp_reply(ip, dpkt.tcp.TH_ACK)
print("IP:", repr(ip))
send_to_tun(bytes(ip))
add_socket(self.sock)
if len(tcp.data) > 0:
self.sock.send(tcp.data)
# Remove the state for this specific socket
python socket tcp实战_Python socket.TCP_MAXSEG属性代码示例相关推荐
- python modifysetup什么意思_Python pyinotify.IN_MODIFY属性代码示例
本文整理汇总了Python中pyinotify.IN_MODIFY属性的典型用法代码示例.如果您正苦于以下问题:Python pyinotify.IN_MODIFY属性的具体用法?Python pyi ...
- python tkinter insert函数_Python tkinter.INSERT属性代码示例
本文整理汇总了Python中tkinter.INSERT属性的典型用法代码示例.如果您正苦于以下问题:Python tkinter.INSERT属性的具体用法?Python tkinter.INSER ...
- python socket tcp实战_python socket 实战
server.py import socket,threading def tcplink(sock, addr): print('Accept new connection from %s:%s.. ...
- python中type(12.34)_Python typing.TYPE_CHECKING属性代码示例
本文整理汇总了Python中typing.TYPE_CHECKING属性的典型用法代码示例.如果您正苦于以下问题:Python typing.TYPE_CHECKING属性的具体用法?Python t ...
- python连接redis哨兵_Python redis.sentinel方法代码示例
本文整理汇总了Python中redis.sentinel方法的典型用法代码示例.如果您正苦于以下问题:Python redis.sentinel方法的具体用法?Python redis.sentine ...
- python程序异常实例_Python werkzeug.exceptions方法代码示例
本文整理汇总了Python中werkzeug.exceptions方法的典型用法代码示例.如果您正苦于以下问题:Python werkzeug.exceptions方法的具体用法?Python wer ...
- python列表get方法_Python json.get方法代码示例
本文整理汇总了Python中json.get方法的典型用法代码示例.如果您正苦于以下问题:Python json.get方法的具体用法?Python json.get怎么用?Python json.g ...
- python re 简单实例_Python re.search方法代码示例
本文整理汇总了Python中re.search方法的典型用法代码示例.如果您正苦于以下问题:Python re.search方法的具体用法?Python re.search怎么用?Python re. ...
- python中config命令_Python config.config方法代码示例
本文整理汇总了Python中config.config方法的典型用法代码示例.如果您正苦于以下问题:Python config.config方法的具体用法?Python config.config怎么 ...
最新文章
- 各大浏览器 CSS3 和 HTML5 兼容速查表
- 【每日一算法】相同的树
- 缓存雪崩、缓存穿透、缓存预热、缓存更新、缓存降级
- mysql 不同分区 同时insert_一文看懂mysql数据库分区表概念、类型、适用场景、优缺点及原理...
- 【SSH】——Struts2中的动态方法调用(一)
- TIOBE 7 月编程语言榜:TypeScript 进入前 50 名
- C++ 常用算数生成算法
- 220v转5v阻容降压电路
- 广度优先搜索——字串变换(洛谷 P1032)
- 你还不会小程序啊?手把手带你做第一个和服务器交互的小程序
- 2017-2018-2 1723《程序设计与数据结构》第八周作业 实验二 第一周结对编程 总结...
- 这几条Mac技巧可能在你使用mac时锦上添花
- 免费下载百度文库 道客巴巴 豆丁 等付费文档
- mysql中数据处理小技巧
- lightning接口linux驱动,iPhone 8惊喜曝光:Lightning接口换USB Type-C
- 小型气象站种类有哪些
- 计算6+德州扑克各个牌型的概率
- 詹姆斯高斯林_詹姆斯·高斯林(James Gosling)加入RCDb顾问委员会
- 变色龙哈希函数-区块链
- TrajGRU降雨量预测: 一个基准和一个新的模型