OSI模型和TCP/IP模型
OSI模型
全称:开放式系统互联通信参考模型(Open System Interconnection Reference Model,缩写为 OSI)
七层协议:
- 应用层:应用程序
- 表示层:数据格式定义,数据转换/加密
- 会话层:建立通信进程的逻辑名字与物理名字之间的联系
- 传输层:差错处理/恢复,流量控制,提供可靠地数据传输
- 网络层:数据分组,路由选择
- 链路层:数据组成可发送,接收的帧
- 物理层:传输物理信号,接口,信号形式,速率
TCP/IP模型
四层协议:
- 应用层:一个应用APP
- 传输层:TCP UDP
- 网络层:IP
- 网络接口与物理层:MAC
局域网基础
IP地址
IP地址概念:电子设备在网络上的身份标识
网络号:1100 0000.1010 1000.0000 0001.0000 0000 192.168.1.0(网段最小IP地址)
广播地址:1100 0000.1010 1000.0000 0001.1111 1111 192.168.1.255(网段最大IP地址)
IP地址127.0.0.1 ~ 127.255.255.255用于回路测试,如:127.0.0.1可以代表本机IP地址。
子网掩码
子网掩码与IP地址进行位于运算可以确定一个网段
网关
当需要和另外网段进行通信的时候,会把数据交给网关处理
例:
- 自己 192.168.1.4
- 目标1 192.168.1.2
- 目标2 192.168.2.2
自己与目标1在同一网段,可直接通信
自己与目标2不在同一网段,把数据交给网关
MAC地址
由12位十六进制组成,前6位代表厂商号,后6位由厂商自己决定
【注意】:每一台设备的MAC都是不一样的
注册表
- 445000199002021213 MAC地址
- 成都市高新区什么路11号 IP地址
端口
- 为了区分一台主机接收到的数据包应该转交给哪个进程来进行处理,使用端口号来区别。
- 端口是运行在传输层的概念,在TCP/IP协议簇中,UDP和TCP这2个协议具备独立的端口号。
- 端口号是16bit的,表示的范围是0-65535。其中小端口号已经被IANA (Internet Assigned
Numbers Authority)定义。
在Linux系统下,使用netstat -an查看端口
集线器、交换机和路由器
- 集线器:只是把设备简单连接在一起,信息会发送给整个网段所有设备,如果设备过多,会发生网络风暴
- 交换机:交换机也是把设备连接在一起,自带学习功能,会记住设置的MAC地址,信息只会发送给目标主机,相对于集线器来说,不会发生网络网暴
- 路由器:连接两个不同的网段
UDP编程基础
UDP特点:传输速度快,安全性低
C/S模式
客户端-服务器(Client/Server)架构、C/S架构
UDP简单服务端
from socket import *
# 1.创建对象
udp_server = socket(AF_INET, SOCK_DGRAM)
# 2.绑定端口
udp_server.bind(("", 9999))
# 3.接收消息
while True:
data, address = udp_server.recvfrom(1024)
print(f"收到来自{address}的消息:{data.decode('utf-8')}")
UDP简单客户端
from socket import *
# 1.创建一个对象 AF_INET:代表 IP4 SOCK_DGRAM:代表UDP协议
udp_client = socket(AF_INET, SOCK_DGRAM)
# 2.声明要发送的地址
address = ("192.168.196.1", 9999)
# 2.发送消息
udp_client.sendto("你好".encode("utf-8"), address)
网络诊断方法
-
物理接口层:这层最大的问题,就是网线没有插好
-
网络层
- 当访问的目的地址是局域网地址时,本机和目的机没有在一个网段。
- 当访问的目的地址是外网地址时,本机可能没有连接外网的权限。
本层的检测工具是:ping命令
-
传输层
- 只要双方能ping通,那么如还收不到数据,解决起来就简单多了。
- 传输层的问题,一般就是服务器开放的端口号,和客户端访问的端口号不一样,那么:
- 首先在服务端netstat -tuan判断下端口是否开放了,开放的端口号是多少。如果这项判断没问题,那么还有一种可能性就是服务端的防火墙打开了。
网友评论