网络协议

网络协议

协议

特征:语法、语义、顺序

TCP/IP协议

TCP/IP是一个协议族

TCP/IP模型(4层)

应用层:http ssh ftp telnet

传输层: TCP UDP

网络层:ip

接口层:MAC

应用层 TCP IP MAC

OSI模型(共7层)

应用层

表示层

会话层

传输层

网络层

数据链路层

物理层

局域网络

IP地址

电子设备在网络上的身份证

192.168.1.100

特殊ip地址:

192.168.1.0 主机号最小的就是网段 就是网络号

192.168.1.255 主机号最大的就是广播地址

127.0.0.1 回路测试 仅仅检测你的电脑支不支持TCP/IP

私有IP:

10.0.0.0-10.255.255.255

172.16.0.0-172.31.255.255

192.168.0.0-192.168.255.255

MAC地址

物理地址 身份证号

由12位16进制组成,分成两部分,前半部分是厂商标识,后半部分是厂商自己定义 MAC地址全球独一无二,修改MAC地址,只是伪造

子网掩码

确定ip地址在哪一个网段,也是一个IP地址

192.168.1.101 1100 0000 1010 1000 0000 0001 0110 0101

255.255.255.0 1111 1111 1111 1111 1111 1111 0000 0000

位运算与 1100 0000 1010 1000 0000 0001 0000 0000

​ 192.168.1.0 网段 网络号

192.168.2.12

255.255.255.0

192.168.2.0

网关

如果通信目标不再同一个网段,这个包先交给网关处理

端口

标识哪个进程,好比你家的窗口

设备

HUB集线器

只是把电脑连接在一起,发送数据会发给整个网段,可能会发生网络风暴

交换机

自带学习功能,会记住整个网段的IP和MAC对应关系 把数据发给指定的电脑,相对HUB集线器来说,很少会发生网络风暴

路由器

连通不同的网段,相当于古代的驿站

UDP

是传输层的一个协议,相当于写信,是一种无连接,不安全,常用于局域网内通信

UDP客户端

#导包
import socket
#创建udp对象
udp = socket(AF_INET, SOCK_DGRAM)
#要发送的地址
add = ("192.168.1.100", 8989)
#向地址发送你好的信息
udp.sendto("你好".encode("gb2312"), add) 

UDP服务端

#导包
import socket
#创建对象
udp = socket(AF_INET, SOCK_DGRAM)
#绑定端口监听
udp.bind(("", 7979))  #不写ip默认本机
#接收数据, 分包
data, add = udp.recvfrom(1024)
print(data.decode("gb2312"))

检测网络是否通畅

1.ping对方IP地址

2.查看服务端的端口 在服务器上通过netstat -natu 查看你要连接的端口号是否在监听状态

3.Telnet去尝试连接端口,如果发现端口连接不上,那一般是防火墙,如果是云服务器,一般在你的阿里云或者腾讯云还有一个防火墙

在局域网测试,一定要保证你的目标IP地址和你的IP地址在同一个网段

网络聊天室

from socket import *
from threading import Thread


def read():
    # 接收数据,分包
    while True:
        data, add = udp.recvfrom(1024)
        print(f"\r>>{data.decode('gb2312')}", end="\n<<")


def write():
    while True:
        context = input("<<")
        udp.sendto(context.encode("gb2312"), (address, port))


# 创建udp
udp = socket(AF_INET, SOCK_DGRAM)
# 绑定端口
udp.bind(("", 2222))
address = "172.16.17.9"
port = 3355
tr = Thread(target=read)
tw = Thread(target=write)
tr.start()
tw.start()
tr.join()
tw.join()

并发:多件事情交替执行,只是执行速度非常快

并行:同一时间同时运行

IO密集型:需要CPU算的很少,大部分时间在等待

CPU密集型:任务需要大量CPU运算、破解

单工:只能做一件事(收音机)

半双工:读或写只能做一件事(收音机)

全双工:可以做两件事(打电话)

IP : 指的是互联网协议(Internet Protocol)

IP地址 :IP地址是IP协议提供的一种统一的地址格式,它为互联网上的每一个网络和每一台主机分配一个逻辑地址,以此来屏蔽物理地址的差异。

ICMP : 互联网控制消息协议(Internet Control Message Protocol),ping命令使用了该协议。属于网络层协议

UDP :用户数据报协议(User Datagram Protocol),属于传输层

DNS :域名系统(Domain Name System),通过它完成域名和IP地址转换的功能,属于应用层。

DHCP :动态主机配置协议(Dynamic Host Configuration Protocol),目的是自动获取IP地址。属于应用层协议。

你可能感兴趣的:(网络协议)