Socket 网络编程
Osi 七层协议
Tcp -ip 协议三次握手,4次断开主流协议是tcp
Udp 流媒体
发送端
Import socket
Socket.TCP/IP
Connect(a.ip,a.port)
Socket.send(hello)
Socket.recv()
Socket.close
接收端
Socket.TCP/IP 协议类型叫做地址簇例如ipv4,ipv6
Listen(0,0,0,6969)
Waiting()
Recv()
Send
Socket_RAM #原始套接字 用户可以通过这个来构造ip头
ddos 攻击通过大批的机器的发请求导致你的服务没办法承载。大部分机器都是伪造的,通过tcp/ip的小bug,因为根据三次握手原则你可以伪造假的IP地址访问目标机器,因为是伪造的ip地址所以第三次握手无法进行,而目标机器会给它一个超时时间,一直等着伪造的IP回传消息,所以这个端口一直被挂起,那个端口变成syn_recve.机器就崩溃了。
实现简单的socket通信案例
客户端本地通过发送小写字符,客户端收到大写字符
服务器端代码1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20# Author: Diedline
import socket
"""
服务器端
"""
Server = socket.socket()
Server.bind(("localhost",6969)) #绑定要监听的端口
Server.listen() #监听
print("我要开始等电话了")
conn,addr =Server.accept()
"""
#等电话打进来 conn 就是客户端连过来而在服务器端生成的连接实例
"""
print(conn,addr)
print("电话来了")
data = conn.recv(1024)
print("recv:",data)
conn.send(data.upper())
Server.close()
客户端代码1
2
3
4
5
6
7
8
9
10
11
12# Author: Diedline
import socket
"""
客户端
"""
client = socket.socket() #声明socket类型,同时生成socket连接对象
client.connect(("localhost",6969))
client.send(b"hello,world!")
data = client.recv(1024)
print("recv:",data)
client.close()
实现单人不间断通信,多人可以挂起等待前一个用户结束后通信1
2
3
4
5
6
7
8
9
10
11
12
13
14# Author: Diedline
import socket
"""
客户端
"""
client = socket.socket() #声明socket类型,同时生成socket连接对象
client.connect(("localhost",6969))
while True:
msg = input("请输入:").strip()
if msg =="":continue
client.send(msg.encode("utf-8")) #所有数据类型都要变成byte类型
data = client.recv(1024) #官方建议不要超过8192即8K
print(data)
client.close()
1 | # Author: Diedline |