python网络编程01/网络协议

python网络编程01/网络协议

1.C/S、B/S架构

C:client端(客户端) 
B:browser(浏览器)
S:server端(服务器)
#C/S架构:基于客户端与服务端之间的通信
    例如:qq、游戏、抖音
    优点:满足个性化设置,响应速度快
    缺点:开发成本,维护成本高,占用空间,用户固定
#B/S架构:基于浏览器与服务器之间的通信
    谷歌浏览器、火狐浏览器
    优点:开发维护成本低,占用空间相对较低,用户不固定
    缺点:功能单一,没有个性化设置,响应速度相对较慢

2.网络通信原理

80年代,是使用固定电话联系(还有推广普通话)
1.物理连接介质连接
2.拨号,锁定对方电话位置
3.推广普通话,统一交流方式

转回互联网,如何利用计算机联系?
1.两台计算机要有一堆物理连接介质连接
2.找到对方计算机软件位置
3.遵循互联网通信协议

应用层-->传输层-->网络层-->数据链路层-->物理层
应用层<--传输层<--网络层<--数据链路层<--物理层

3.简单串联五层协议以及作用

1.物理层

传输的是比特流
物理层指的就是网线,光纤,双绞线等物理连接介质
数据应该有规律的分组,分组是数据链路层做的   

2.数据链路层

2.1数据链路层
1.数据链路层由来:
    单纯的电信号0和1没有任何意义,必须规定电信号多少位一组,每组什么意思
    
2.数据链路层的功能:
    定义了电信号的分组方式
    数据链路层对比特流进行分组
    
3.早期的时候各个公司都有自己的分组方式,后来形成了统一的标准,即以太网协议ethernet

4.ethernet规定:
    #以太网协议: 对比特流进行合理的分组.
    一组数据01010101叫做一帧,数据报
    每一数据帧分成:报头head和数据data两部分(heda|data)
    head包含:(固定18个字节)
    发送者/源地址,6个字节
    接收者/目标地址,6个字节
    数据类型,6个字节

    data包含:(最短46字节,最长1500字节)
    数据包的具体内容
    一帧数据,最少64个字节,最多1518个字节
    head长度+data长度=最短64字节,最长1518字节,超过最大限制就分片发送,不够64字节的话会补齐

5.mac地址
head中包含的源和目标地址由来:以太网协议(ethernet)规定接入internet的设备都必须具备网卡,发送端和接收端的地址便是指网卡的地址,即mac地址
#mac地址:每块网卡出厂时都被烧制上一个世界唯一的mac地址,通常由12位16进制数表示(前六位是厂商编号,后六位是流水线号)
源mac地址|目标mac地址|数据类型|date
根据mac地址就可以找到计算机位置

6.计算机的通信方式:
    同一局域网内,通过广播的形式通信
    消息广播一经广播发出,局域网内所有的计算机都能收到消息,分析消息,根据Mac地址判断是不是找自己的,不是就会丢弃.
在同一局域网内mac地址+广播 就可以通信了
计算机只能在局域网内进行广播,范围大了,会造成广播风暴,效率极低
2.2数据链路层补充
同一个局域网通过广播的形式发送数据.
交换机的mac地址学习功能:
一个交换机的5个接口: 5个计算机.
 1: FF-FF-FF-FF-FF-FF
 2: FF-FF-FF-FF-FF-FF
 3: FF-FF-FF-FF-FF-FF
 4: FF-FF-FF-FF-FF-FF
 5: FF-FF-FF-FF-FF-FF

接口1:  源mac 1C-1B-0D-A4-E6-44 目标1C-1C-0D-A4-E5-44 |数据 以广播的形式发出
2,3,4,5口都会接收到消息,5口是最终的目标地址,交换机就会将5口与mac地址对应上.
 1: 1C-1B-0D-A4-E6-44
 2: FF-FF-FF-FF-FF-FF
 3: FF-FF-FF-FF-FF-FF
 4: FF-FF-FF-FF-FF-FF
 5: 1C-1C-0D-A4-E5-44
当五个口都对应上具体的mac地址,2口再次发消息,就不会广播了,就会以单播发送.
**我们的前提是什么**? 你必须知道对方的mac地址你才可以以广播的形式发消息.实际上,网络通信中,你只要知道对方的IP与自己的IP即可.

3.网络层

3.1网络层
网络层由来:有了以太网协议(ethernet)、mac地址、广播的发送方式,世界上的计算机就可以彼此通信了,问题是世界范围的互联网是由一个个彼此隔离的小的局域网组成的,那么如果所有的通信都采用以太网的广播方式,那么一台机器发送的包全世界都会收到,这就不仅仅是效率低的问题了,这会是一种灾难必须找出一种方法来区分哪些计算机属于同一广播域,哪些不是,如果是就采用广播的方式发送,如果不是,就采用路由的方式(向不同广播域/子网分发数据包),mac地址是无法区分的,它只跟厂商有关
网络层功能:引入一套新的地址用来区分不同的广播域/子网,这套地址即网络地址

#ip协议:
#    确定局域网(子网)的位置
    规定网络地址的协议叫ip协议,它定义的地址称之为ip地址,广泛采用的v4版本即ipv4,它规定网络地址由32位2进制表示
    范围0.0.0.0-255.255.255.255
    一个ip地址通常写成四段十进制数,例:172.16.10.1
IP协议的作用主要有两个:
    一个是为每一台计算机分配IP地址,另一个是确定哪些地址在同一个子网络。
3.2网络层补充
IP协议: 
ip地址:四段分十进制 192.168.0.12  
取值范围 0~255.0~255.0~255.0~255
子网掩码: C类子网掩码: 255.255.255.0
ip地址 + 子网掩码 按位与运算 计算出是否在统一局域网(子网,网段).
计算172.16.10.1 与 172.16.10.128
  172.16.10.1:10101100.00010000.00001010.00000001
255.255.255.0: 11111111.11111111.11111111.00000000
从属于的局域网: 172.16.10.0
172.16.10.128:10101100.00010000.00001010.10000000
255.255.255.0: 11111111.11111111.11111111.00000000
从属于的局域网: 172.16.10.0
172.16.10.1 ~172.16.10.255
C类子网掩码 一个网段最多可以承载多个IP地址?
172.16.10.0 被占用.
172.16.10.255 广播地址 被占用.
172.16.10.1 被占用.
253台计算机.
如果你要想给另一个计算机发数据, 你一定要知道对方的ip地址.
3.3 ARP协议
#通过对方的ip地址获取到对方的mac地址.
  源码mac  目标mac   源IP    目标IP    数据
1C-1B-0D-A4-E6-44  FF:FF:FF:FF:FF:FF 172.16.10.13 172.16.10.156    数据

第一次发消息: 发送到交换机 ---> 路由器  广播的形式发出去
目标计算机收到消息:就要回消息:
 源码mac  目标mac   源IP    目标IP    数据
1B-1B-0D-A4-E6-54  1C-1B-0D-A4-E6-44 172.16.10.156 172.16.10.13    数据

1730001-20190815090018740-1423291417.png

4.传输层

#端口协议:确定软件在计算机的位置
端口协议:  UDP协议,TCP协议
65535端口
1~1024操作系统专门使用的端口
举例: 3306 数据库
自己开发软件都是8080以后的端口号
4.1UDP TCP协议
#TCP(Transmission Control Protocol)可靠的、面向连接的协议(eg:打电话)、流式协议, 传输效率低全双工通信(发送缓存&接收缓存)、面向字节流。使用TCP的应用:Web浏览器;文件传输程序。

#UDP(User Datagram Protocol)不可靠的、无连接的服务,传输效率高(发送前时延小),一对一、一对多、多对一、多对多、面向报文(数据包),尽最大努力服务,无拥塞控制。使用UDP的应用:域名系统 (DNS);视频流;IP语音(VoIP)。
4.2TCP协议的三次握手和四次挥手
#三次握手

1730001-20190815090041437-455280326.png

#三次握手

1730001-20190815090056995-1138692157.png

#四次挥手

1730001-20190815090115363-140242380.png

4.3为什么握手中间两次可以合并,而挥手中间两次不能合并
客户端发送完请求后一般就会关闭,这个时候可能服务端还没有发完,合并的话,意思就是客户端关闭的时候服务端也会一起关闭,可能客户端在关闭的时候,服务端可能还在发送数据,可能会造成数据丢失
4.4syn洪水攻击
制造大量的假的无效的IP请求服务器,致使正常的IP访问不了服务器

5.应用层

自己定义自己的协议

6.总结

广播(局域网内) + mac地址(计算机位置) + ip(局域网的位置) + 端口(软件在计算机的位置)

有了以上四个参数:你就可以确定世界上任何一个计算机的软件的位置.

4.对五层协议详细的补充说明

1730001-20190815090133878-1611239342.png

总结

前提:知道目标mac
计算机A 发送一个消息给 计算机B 
    源码mac  目标mac   源IP    目标IP    数据
单播的形式发送到交换机,交换机会检测自己的对照表有没有目标mac,如果有,单播传.如果没有,交由上一层: 路由器:
路由器收到消息: 对消息进行分析: 
要确定目标计算机与本计算机是否在同一网段,
    如果在同一网段,直接发送给对应的交换机,交换机在单播发给目标mac.
    如果不是在同一网段: ?
前提:不知道目标mac
计算机A 发送一个消息给 计算机B 
    源码mac  目标mac不知道   源IP    目标IP    数据
单播的形式发送到交换机,交换机交由上一层路由器:路由器收到消息: 对消息进行分析: 
要确定目标计算机与本计算机是否在同一网段,
    如果在同一网段通过 IP以及ARP协议获取到对方的mac地址,然后在通信.
    如果不是在同一网段: ?

1730001-20190815090148636-883355069.png

五层:

应用层,传输层,网络层,数据链路层,物理层

七层:

应用层,表示层,会话层,传输层,网络层,数据链路层,物理层

1730001-20190815090203530-1008998462.png

转载于:https://www.cnblogs.com/liubing8/p/11355876.html

1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值