【0905 | Day 30】网络编程
目录
网络编程
Part1:网络协议(五层模型)
网络协议:又称OSI七层协议,分为应用层(应用层,表示层,会话层)、传输层、网络层、数据链路层、物理层。
第一层:物理层
主要接受01010001等电信号
第二层:数据链接层
将物理层的电信号分组。
- 每一组叫一个数据报(数据帧),都有报头和数据部分 (头:固定18个字节,6:发送者地址 6:接收者地址 6:数据类型)
- mac地址:发送者,接收者地址,就是mac地址
- 每块网卡都有一个唯一mac地址:12位16进制数表示(前六位是厂商编号,后六位是流水线号)
- 广播:同一个局域网内通信,会出现广播风暴
第三层:网络层
已有自己的mac地址,访问对象,发送自己的IP和目标IP,通过arp协议广播发送,目标用户确认IP后发送mac地址,获取对方mac地址填入mac地址。
-
ip
ipv4:32位2进制表示:点分十进制表示 从0.0.0.0到255.255.255.255,范围是有限的,不能表示出所有的网络设备,于是出现了ipv6
-
子网掩码:通过子网掩码和ip判断两个ip是否处于同一个网段,通过ip地址和子网掩码做按位与运算
1. ip地址: 172.16.10.1: 10101100.00010000.00001010.000000001 2. 子网掩码:255.255.255.0: 11111111.11111111.11111111.000000000 3. 按位与运算:172.16.10.0 10101100.00010000.00001010.000000000 -172.16.10.10/24 包含了ip地址和子网掩码
-
ip跟mac有转换关系
1. 主机172.16.10.10/24访问172.16.10.11/24 2. ARP协议:广播的方式发送数据包,获取目标主机的mac地址 3. mac地址学习:mac地址和ip地址的映射表 第一次接收到就会在ip/mac映射表中添加一条数据{’172.16.10.11“:ddsadfgegsdgsdg}
-
**任何一种协议都有头和内容 **
第四层:传输层
端口与端口连接
-
tcp协议
发送请求,等待响应,建立连接,信息交互
1. 三次握手 2. 四次挥手 3. 连接如何建立 4. 发数据如何保证可靠 5. 断开如何断开 6. 在建立连接过程中有状态 7. 服务如果看到大量的syn_rcvd状态 - 表示正在遭受dos攻击,因为一直有人发送请求,响应后却没有回复 8. dos和ddos攻击 9. 拒绝服务攻击 10. 分布式的拒绝服务攻击 11. 端口号:端口范围0-65535,0-1023为系统占用端口
-
udp协议
只发送请求,不需要对方响应,因此数据不可靠(例如看视频)
-
端口
1. 通过ip+子网掩码唯一确定一台设备 2. 通过ip+子网掩码唯+端口号唯一确定一个软件
-
半连接池
限制的是同一时刻的请求数,而非连接数
1. 与可建立的数量无关,只与接受的请求有关,但仍旧无法规避dos攻击
第五层:应用层
进入进程服务
Part2:描述三次握手和四次挥手,并展示C端和S端状态
一、三次握手
第一版>>>
第二版>>>
二、四次挥手
第一版>>>
第二版>>>
Part3:写一个客户端,实现给服务端发送请求;写一个服务端,实现给客户端的数据变成大写返回
#客户端
import socket
soc = socket.socket()
soc.connect(('192.168.11.185', 8080))
soc.send(b'Hello World!')
data = soc.recv(1024)
print('客户端已收到服务端发送的:', data)
soc.close()
#服务端
import socket
soc = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
soc.bind(('192.168.11.185', 8080))
soc.listen(5)
conn, addr = soc.accept()
data = conn.recv(1024).upper()
print('服务端已收到客服发送的:', data)
conn.send(b'Do you have any more problem?')
conn.close()
soc.close()