python_learn 网络编程基础

# ### 1.网络开发的两大架构
a文件 ->  b文件  借助c文件
a文件和b文件进行数据交流,借助c文件中转数据
a文件把数据放在c文件中,b文件从c文件取
b文件把数据放在c文件中,a文件从c文件取
构成了最早期的数据交互的原理 ->socket(套接字)的模型
socket(套接字)是收发数据的一个工具

后来有了网络之后
a文件中的数据,可以通过网络协议,转化成101010电信号,进行发送
a文件借助socket发送数据
b文件结束socket接受数据


# 二大架构
c/s 
c => client 客户端
	是具体的一个软件,比如qq,微信,腾讯会议,lol,wow,dnf,cf,王者荣耀
s => server 服务端
	天河三号 百亿亿次

b/s 
b => browser 浏览器
	 通过输入网址,访问对方的服务器,对方的服务器响应请求之后,
	 把对应的数据给你返回,就可以在您的浏览器看到了
s => 服务端

# b/s  c/s 两大架构  更好的是b/s 是未来的发展方向
未来更多向b/s发展,像微信小程序,支付宝小程序.
(1) 省去复杂漫长的下载安装环节,节省收集或者电脑的硬盘空间
(2) 因为手机便捷性,随时随地可以访问到网站和相应的服务,提升效率,加快速度.


# ### 2.网络的概念
# (1)ip
ip => cmd -> ipconfig
ip地址的最后一位0或者255 两个数字不能用,
一般最后一位0表达的是网段
255代表广播地址

# (2)网段:
判别的依据:如果IP地址和子网掩码相与 得到的值相同就是同一网段	
子网掩码:区分网段和主机和一串ip
# 案例一
# ip 192.168.31.43
11000000 10101000 00011111 00101011
# 子网掩码 255.255.255.0
11111111 11111111 11111111 00000000
# ip & 子网掩码
11000000 10101000 00011111 00000000
ip1的网段: 192.168.31.0

# ip 192.168.30.44
11000000 10101000 00011110 00101100
# 子网掩码 255.255.255.0
11111111 11111111 11111111 00000000
# ip & 子网掩码
11000000 10101000 00011110 00000000
ip2网段: 192.168.30.0

ip1的网段和ip2的网段不同,不一样,所以不再同一个网段不能通信

# 案例二 改变子网掩码
# ip 192.168.31.43
11000000 10101000 00011111 00101011
# 子网掩码 255.255.0.0
11111111 11111111 00000000 00000000
# ip & 子网掩码
11000000 10101000 00000000 00000000
ip1的网段: 192.168.0.0


# ip 192.168.30.44
11000000 10101000 00011110 00101100
# 子网掩码 255.255.0.0
11111111 11111111 00000000 00000000
# ip & 子网掩码
11000000 10101000 00000000 00000000
ip2网段: 192.168.0.0

ip1的网段和ip2的网段完全相同,所以再同一个网段可以通信
# ping 域名 可以查看网络是否通畅(顺便可以拿到ip)


# (3)端口:某个程序与外界通讯的出口
通过ip+端口 可以找到世界上任何一台电脑的任何一个软件
端口的范围: 0 ~ 65535   形式: 192.168.2.1:8000
# https://blog.csdn.net/qq_34646546/article/details/88545165 知名端口
自定义端口时,8000以上

20   端口:FTP 文件传输协议(默认数据口)
21   端口:FTP 文件传输协议(控制)
22   端口:SSH 远程登录协议
23   端口:telnet(终端仿真协议),木马 Tiny Telnet Server 开放此端口
25   端口:SMTP 服务器所开放的端口,用于发送邮件
80   端口:http,用于网页浏览,木马 Executor 开放此端口
443  端口:基于 TLS/SSL 的网页浏览端口,能提供加密和通过安全端口传输的另一种 HTTP
3306 端口:MySQL 开放此端口


# ### 3.osi 网络七层模型
应用层(应用层,表示层,会话层)
	封装数据 
		依据不同的协议,封装对应格式的数据消息
		HTTP [超文本传输协议]
		HTTPS[加密传输超文本传输协议]
		FTP  [文件传输协议]
		SMTP [电子邮件传输的协议]

传输层:
	封装端口
		指定传输的协议(TCP协议/UDP协议)
网络层:	
	封装ip
		版本ipv4  / ipv6

数据链路层:
	封装mac地址
		指定链路层的协议(arp协议(ip->mac)/rarp协议(mac->ip))
		
物理层:
	打成数据包,变成二进制字节流,通过网络进行传输.
		
		
		
# ### 4.交换机与路由器		
#交换机:对同一网段的不同机器之间进行数据转发的设备     [每一台机器和交换机相连,形成通信]
交换机从下到上拆2,拆物理层和数据链路层,可以找到mac
#路由器:对不同网段的不同机器之间进行数据转发的设备     [每一个局域网和路由器相连,形成通信]		
交换机从下到上拆3,拆物理层和数据链路层和网络层,可以找到ip
	
# arp协议 : 通过ip -> mac  (arp地址解析协议)
"""通过交换机的一次广播和一次单播找到对应的mac"""
电脑a先发送一个arp的广播包,把mac标记一个全FF-FF-FF-FF-FF-FF的广播地址
交换机接收到arp的广播包,从下到上进行拆包,2,到数据链路层得到mac
发现mac是全F的广播地址,重新打包,交换机开始广播,所有连接在交换的设备都会收到arp广播包
各个主机开始拆包,对应FF广播地址可以跳过,继续向上找,发现ip不符合,直接舍弃
路由器允许从下到上拆三层,拆到ip,得到对应的网段
打开路由器的对照表 网关->网段,重新打包,找到对应的接口发送数据包
对应的交换机得到数据包,重新从下到上拆包,2,发现全F,开始广播
数据库的主机接收到广播包,从下到上拆包,ip正确,符合自己的条件
数据库主机会把ip->mac的映射关系的数据发送回当前的交换机,
此时,交换机通过单播,把对应的ip和mac发送回原来请求的主机
数据在通过路由器,交换机发送回去
原主机在得到了ip 和 mac 之后,
重新把真实数据进行打包,从而完成发送

如果没有mac,主机一开始会发送arp请求包(发出找mac的请求)
各大主机在接受arp请求包的时候,都会去对照自己本机当中的arp解析表(ip->mac)
如果没有,这个arp得请求包舍弃,
如果有,会把自己的ip和mac封装在arp的响应包当中给交换机进行单播
在回来的过程中,所有相应的主机都会拿响应包中的数据更新自己的arp解析表,方便下次使用.

arp协议: 通过ip -> mac
	

# ### TCP/UDP协议
三次握手

SYN 创建连接
ACK 确认响应
FIN 断开连接

# 三次握手
	客户端发送一个请求,与服务端建立连接
	服务端接受这个请求,并且响应与客户端建立连接的请求
	(服务端的响应和请求是在一次发送当中完成的)
	客户端接受服务端的请求之后,把消息在响应给服务端
	
	接下来客户端和服务端可以发送数据了.
	每发送一个数据出去,对应的主机都会有一个回执消息,确认数据的接受情况,
	如果没有得到回执消息,该数据会重发一次,保证数据的完整.
	不会一直不停的发下去,有时间最大允许周期.

# 四次挥手
	客户端向服务端发送一个请求消息,断开连接(代表客户端没有数据传输了)
	服务端接受请求 , 发出响应
	等到服务端所有数据收发完毕之后
	服务端向客户端发送断开连接的请求
	客户端接受请求 , 发出响应
	等到2msl,最大报文生存时间之后
	客户端与服务端彻底断开连接

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值