标签:内网 tps 分配 sendto tcp 硬件 浏览器 输入 ftp
ftp
ip
地址:确认一台机器
ip
ip
地址能被所有人访问到,是申请得到的ip
192.168.0.0 - 192.168.255.255
172.16.0.0 - 172.31.255.255
10.0.0.0 - 10.255.255.255
ip
x.x.x.0 x.x.0.0 x.0.0.0
ip + port
确认一台机器上的一个应用arp
协议ip
地址获取一台机器的mac地址ip
协议ipv4
协议 4位的点分十进制 32位2进制表示
ipv6
协议 6位的冒分十六进制 128位2进制表示
0:0:0:0:0:0-FFFF:FFFF:FFFF:FFFF:FFFF:FFFF
tcp/udp
协议tcp
协议特点:面向连接的,可靠的,流式的,全双工通信,传递长度没有限制
三次握手
client端向server端:发送 请求连接 请求(syn)
server端向client端:通过接收到的 请求连接 请求(ack
)
? 并且向client端发送 请求连接 请求(syn)
client端向server端:通过接收到的 请求连接 请求(ack
)
四次挥手
ack
)ack
)在建立连接后,每发送一条信息都会有回执
为了保证数据的完整性,会有重传机制
长连接:会一直占用双方的端口
应用场景:文件的上传和下载
拆包机制,传输是先拆包再合包进行传输的
udp
协议struct
模块tcp
协议中所传输的数据无边界,接收端来不及接收的多条数据会在接收端的内核的缓存端黏在一起tcp
协议中的“确认收到”的网络延迟时间,所以由tcp
协议的优化机制将两条信息作为一条信息发送出去了struct
模块osi
七层模型osi
五层协议http https ftp smtp
协议tcp/udp
协议 端口 四层交换机,四层路由器ip
相关
ipv4/ipv6
协议 路由器,三层交换机arp
协议 网卡,交换机recv recvfrom
send sendto
cpu
不工作,如accept非阻塞:cpu
工作
io
模型io
模型io
io
多路复用io
模型又称套接字
工作在应用层和传输层之间的抽象层,帮助我们完成所有信息的组织和拼接
对于程序员来说,已经是网络操作的底层
socket历史
基本模板
######## server端 ########
import socket
sk = socket.socket()
sk.bind(('127.0.0.1', 9000))
sk.listen()
conn, addr = sk.accept()
# 中间为要进行的操作
conn.close()
sk.close()
######## client端 ########
import socket
sk = socket.socket()
sk.connect(('127.0.0.1', 9000))
# 中间为要进行的操作
sk.close()
struct
模块struct.pack
将一个数字转换为四个字节的bytes类型
import struct
bytes_len = struct.pack('i', 10000)
# 将10000转为一个4个字节的bytes类型
struct.unpack
将一个四个字节的bytes类型转换回数字,结果是一个元组
import struct
length = struct.unpack('i', bytes_len)
# 将一个4个字节的bytes类型转回其原本的数字
hamc
模块校验客户端的合法性
hamc.new(盐,要加密的内容)
import hamc
h = hmac.new(secret_key, randseq)
res = h.digest()
socketserver
模块实现一个同时连接多个
基本模板
import socketserver
class Myserver(socketserver.BaseRequestHandler):
def handle(self): # 自动触发了handle方法,并且self.request == conn
要进行的操作
server = socketserver.ThreadingTCPServer(('127.0.0.1',9000),Myserver)
server.serve_forever()
标签:内网 tps 分配 sendto tcp 硬件 浏览器 输入 ftp
原文地址:https://www.cnblogs.com/lijunhai/p/12445942.html