python学习第27天

网络编程

一.网络开发的两大架构

c/s 架构 : client server

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

B/S 架构 : Brower server

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

两者发展的比较(未来更倾向于b/s架构发展)

原因:

1.省去复杂漫长的下载安装环节,节省手机或者电脑的硬盘空间
2.因为手机便携性,随时随地都可以访问到网站和相应的服务,提升效率,加快速度

2 .网络的概念

(1)基础概念

#一台主机有两个重要标识:
(1)mac地址:标记一台机器的物理地址  (不可变)
(2)ip 地址:#标记一台机器的逻辑地址 (可变)

#IP地址是指互联网协议地址(英语:Internet Protocol Address,又译为网际协议地址),是IP Address的缩写。ip地址用来标记网络上的每一台主机,方便在收发数据,网络请求时能够找到响应;
	
#ip地址分为两种 ipv4 和 ipv6: 分类ipv4 和 ipv6:	
	ipv4地址是一个32位的二进制数
	ipv6地址是一个128位的二进制数
    
    ipv4:  以4段点分十进制表示   X.X.X.X  => 范围
        0.0.0.0 ~ 255.255.255.255 地址范围2^32-1
    ipv6 : 以8段冒分十六进制表示 X:X:X:X:X:X:X:X => 范围
        0:0:0:0:0:0:0:0 ~ FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF 地址范围2^128-1
    ip地址的最后一位0或者255 两个数字不能用,一般最后一位0表达的是网段,255代表广播地址

#网段 : 网段的作用,主要用来划分同一区域里的某些机器是否能够互相通信。在一个网段里可以不同过因特网,直接对话
       判别的依据:如果IP地址和子网掩码相与得到的值相同就是同一网段	   
	   
#内网 : 以下地址为预留地址,永远不会被当做公网ip来分配
    192.168.0.0 - 192.168.255.255
    172.16.0.0 - 172.31.255.255
    10.0.0.0 - 10.255.255.255
    
#外网 :
	在任何地方都可以访问的就是外网(排除防火墙的因素)
	
#子网掩码:区分网段和主机
	255.255.255.0   / 255.255.0.0 /  255.0.0.0
	ip1:192.168.10.12  ip2:192.168.1.16
	
#端口:"端口"是英文port的意译,是具体某个程序与外界通讯的出口。 取值范围:0~65535 
      使用时至少8000以上    访问地址加端口:192.168.2.1:8000
      
#局域网:在同一区域内由多台计算机互联形成通讯。【具有可重复的内网ip】
#广域网:在不同区域内有多台计算机互联形成通讯。【具有唯一的公网ip】
#交换机:对同一网段的不同机器之间进行数据转发的设备     [每一台机器和交换机相连,形成通信]
#路由器:对不同网段的不同机器之间进行数据转发的设备     [每一个局域网和路由器相连,形成通信]

#arp协议:每台主机都有arp缓存表 ,主要作用通过ip找mac的一个协议规则 
       【实现方式:通过交换机一次广播,一次单播找到的】

3 .osi 网络七层模型

应用层(应用层,表示层,会话层)
   封装数据
      依据不同的协议,封装对应格式的数据信息
      HTTP[超文本传输协议]
      HTTPS[加密传输超文本传输协议]
      FTP[文件传输协议]
      SMTP[电子邮件传输的协议]
      
传输层:
   封装端口
      指定传输的协议(TCP协议/UDP协议)

网络层:
   封装ip
      版本ipv4/ipv6

数据链路层
   封装mac地址
      指定链路层的协议(arp协议(ip->mac)/rarp协议(mac->ip))

物理层:
   打成数据包,编程二进制字节流,通过网络进行传输

4 .交换机与路由器

交换机:对同一网段的不同机器之间进行数据转发的设备 [每一台机器和交换机相连,形成通信]
	交换机从下到上拆2层,拆物理层和数据链路层,可以找到mac
路由器:对不同网段的不同机器之间进行数据转发的设备 [每一个局域网和路由器相连,形成通信]
	路由器从下到上拆3层,可以得到ip

5 .arp协议

通过ip->mac(arp地址解析协议)

通过交换机的一次广播和一次单播找到对应的mac

电脑a先发送一个arp的广播包,把mac标记一个全是F的广播地址
交换机接收到arp的广播包,从下到上进行拆包,拆2层到数据链路层得到mac
发现mac是全F的广播地址,重新打包,交换机开始广播,所有连接在叫唤机上的设备都会受到arp广播包
各个主机开始拆包,对应FF广播地址可以跳过,继续向上找,发现ip不符合,直接舍弃
路由器允许从下到上拆三层,拆到ip得到相应的网段
打开路由器的对照表 网关->网段,重新打包,找到对应的接口发送数据包
对应的交换机得到数据包,重新从下到上拆包,拆两层,发现全是FF,开始广播
数据库的主机接收到广播包,从下到上拆包,ip正确,符合自己的条件
数据库的主机会把ip->mac的映射关系的数据发送回当前的交换机
此时,交换机通过单播,把对应的ip和mac发送原来请求的主机
数据在通过路由器,交换机发送回去
重新把真实的数据进行打包,从而完成发送

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

6 .TCP/UDP协议

TCP(Transmission Control Protocol)一种面向连接的、可靠的、传输层通信协议(比如:打电话)
优点:可靠,稳定,传输完整稳定,不限制数据大小
缺点:慢,效率低,占用系统资源高,一发一收都需要对方确认
应用:Web浏览器,电子邮件,文件传输,大量数据传输的场景

UDP(User Datagram Protocol)一种无连接的,不可靠的传输层通信协议(比如:发短信)
优点:速度快,可以多人同时聊天,耗费资源少,不需要建立连接
缺点:不稳定,不能保证每次数据都能接收到
应用:IP电话,实时视频会议,聊天软件,少量数据传输的场景

客户端和服务端在建立连接时: 三次握手
客户端和服务端在断开连接时: 四次挥手
SYN 创建连接
ACK 确认响应
FIN 断开连接

TCP的三次握手

客户端发送一个请求,与服务端建立连接
服务端接受这个请求,并且响应与客户端建立连接的请求
(服务端的响应和请求是在一次发送当中完成的)
客户端接收服务端的请求之后,把消息再响应给服务端

接下来客户端和服务端就可以发送数据了
每发送一个数据出去,对应的主机都会有一个回执信息,确认数据的接收情况
如果没有得到回执消息,改数据会重发一次,保证数据的完整
不会一直不停的发下去,有时间最大允许周期
posted @ 2020-06-04 22:45  打酱油的阿超  阅读(114)  评论(0编辑  收藏  举报