Python基础之网络编程:2、OSI协议之七层协议
Python基础之网络编程
一、网络编程前戏
1.什么是网络编程:
网络编程是指基于网络编写代码,能够实现数据的远程交互
2.学习网络编程的目的:
能够开发基于网络,实现与多用户交互的C/S架构的软件
3.网络编程的起源:
最早起源于美国军事领域,早期人们想要实现不同计算机内的数据交互只能使用硬盘拷贝,为了能够更快、更为便捷的实现数据交互,于是就诞生了网络编程
4.网络编程的必备条件:
数据的远程交互
1.早期的电话:需要通过电话线
2.大屁股电脑:需要通过网线
3.笔记本电脑、移动电话:需要通过网卡
实现数据的远程交互必备的基础条条件是:物理连接介质
二、OSI七层协议
简介:
- OSI七层协议:
- 规定了所有的计算机在远程数据交互的时候必须经过相同的处理流程、在制造过程中必须拥有相同的功能硬件
- 包含:
- 应用层:
- 与其他计算机进行沟通的应用,它是对应应用程序的通信服务的
- 表示层:
- 这一层的主要功能是定义数据格式及加密
- 会话层:
- 它定义了如何开始、控制和结束一个会话,包括对多个双向消息的控制和管理,以便在只完成连续消息的一部分时可以通知应用,从而使表示层看到的数据是连续的
- 传输层:
- 对传输的数据进行处理、排序
- 网络层:
- 对端到端的包传输进行定义
- 数据链路层:
- 定义了在单个链路上如何传输数据
- 物理连接层:
- 计算机之间需要用到光缆、电缆以及无线电波
- 应用层:
最常见的是整合之后的五层或者四层:
五层:应用层、传输层、网络层、数据链路层、物理连接层
四层:应用层、传输层、网络层、网络接口层
接收消息:数据由下往上传递
发送消息:数据由上往下传递

1、物理连接层
主要用于确保计算机之间的物理连接介质
接收数据(bytes类型、二进制)
2、数据链路层
1、规定了电信号的分组方式
2、以太网协议
规定了计算机在出厂的时候都必须有一块网卡、网卡上有一串数字
该数字相当于是计算机的身份证号码,是独一无二的
数字特征: 12位16进制数据
前6位:厂商编号 后6位:流水线号
该数字称为:以太网地址/MAC地址
网络相关专业名词
计算机之间想要实现数据交互必须要‘连接’到一起
1、交换机
能够将所有的计算机彼此互联起来
2、广播
首次查找接入同一个交换机的其他计算机 需要向交换机内‘吼一嗓子’
3、单播
首次被查找的计算机回应查找它的计算机,并附带自己的MAC地址
4、广播风暴
接入同一台交换机的多台计算机同时发广播
5、局域网
可以简单理解为由单个交换机组成的网络
在局域网内可以直接使用MAC地址通讯
6、广域网
可以理解为范围更大的局域网
7、互联网
由所有的局域网、广域网连接到一起组成的网络
8、路由器
不同的局域网计算机之间是无法直接实现数据交互的,需要由路由器进行连接
3、网络层
IP协议:规定了所有接入互联网的计算机都必须拥有一个IP地址,类似于身份证
MAC地址可以看成是物理地址,永远也无法修改
IP地址:是动态分配的,连接到不同场所的网络时IP地址就会改变
IP地址特征:
IPV4:
点分十进制,由四个点分开的十进制数,单个最大数能够达到255,组合在一起就是255的4次方
0.0.0.0
255.255.255.255
IPV6:能够给地球上的每一粒沙子都分配一个IP地址
IP地址能够跨局域网进行传输
当前的IP地址可以用来标识地球上一台独一无二的计算机
4、传输层
PORT协议(端口协议)
用来标识一台计算机上面的某一个程序
范围:0-65535
特征:动态分配(类似于每一次去洗浴中心,拿到的手牌号码)
建议: 在我们以后编写程序需要使用到端口号时,建议使用8000之后的
0-1024 系统默认需要使用
1024-8000 常见的软件端口号
URL:统一资源定位符(网址)
网址的本质是由IP和PORT组成的
IP+PORT:能够定位到全世界独一无二的一台计算机上的某一个程序
域名解析:将网址解析成IP+PORT
IP:PORT 实际使用冒号连接
Python基础之网络编程:2、OSI协议之七层协议的更多相关文章
- 周末班:Python基础之网络编程
一.楔子 你现在已经学会了写python代码,假如你写了两个python文件a.py和b.py,分别去运行,你就会发现,这两个python的文件分别运行的很好.但是如果这两个程序之间想要传递一个数据, ...
- python基础(29):网络编程(软件开发架构、网络基础、套接字初使用)
1. 软件开发架构 我们了解的程序之间通讯的应用可分为两种: 第一种是应用类:qq.微信.百度网盘.腾讯视频这一类是属于需要安装的桌面应用. 第二种是web类:比如百度.知乎.博客园等使用浏览器访问就 ...
- Python 基础之----网络编程
阅读目录 一 客户端/服务端架构 二 osi七层 三 socket层 四 socket是什么 五 套接字发展史及分类 六 套接字工作流程 七 基于TCP的套接字 八 基于UDP的套接字 九 粘包现象 ...
- python基础:网络编程
一.网络编程 简而言之,就是通过代码打开一个url,获得返回结果并做处理.通常所说的python爬虫,就属于网络编程 二.urllib模块进行网络编程 这个方法很繁琐,不建议使用.了解 示例1: 获取 ...
- 网络编程---scoket使用,七层协议,三次挥手建连接,四次挥手断连接
目录 == 网络编程 == 软件开发架构 网络编程 互联网协议 TCP协议的工作原理 Socket == 网络编程 == 软件开发架构 开发软件 必须要开发一套 客户端与服务端 客户端与服务端的作用 ...
- 【Python之路】第八篇--Python基础之网络编程
Socket socket通常也称作"套接字",用于描述IP地址和端口,是一个通信链的句柄,应用程序通常通过"套接字"向网络发出请求或者应答网络请求. sock ...
- python渗透测试入门——基础的网络编程工具
<Python黑帽子--黑客与渗透测试编程之道学习>这本书是我在学习安全的过程中发现的在我看来十分优秀的一本书,业内也拥有很高的评价,所以在这里将自己的学习内容分享出来. 1.基础的网络编 ...
- Python网络编程02 /基于TCP、UDP协议的socket简单的通信、字符串转bytes类型
Python网络编程02 /基于TCP.UDP协议的socket简单的通信.字符串转bytes类型 目录 Python网络编程02 /基于TCP.UDP协议的socket简单的通信.字符串转bytes ...
- python基础之socket编程 (转自林海峰老师)
python基础之socket编程 阅读目录 一 客户端/服务器架构 二 osi七层 三 socket层 四 socket是什么 五 套接字发展史及分类 六 套接字工作流程 七 基于TCP的套接字 ...
- Python 基础之socket编程(一)
Python 基础之socket编程(一) 可以进行通信玩儿了,感觉不错不错,网络通信就像打电话,我说一句你听一句之后,你再说一句,我听一句,就这样.....下去了.不扯淡了,来来来,看看今天都搞了点 ...
随机推荐
- noip 2014 提高组初赛
noip 2014 提高组初赛 一. TCP协议属于哪一层协议( ) A. 应用层 B. 传输层 C. 网络层 D. 数据链路层 B TCP(传输控制协议) 若有变量int a; float: x, ...
- KingbaseES V8R6 维护管理案例之---Kstudio在CentOS 7启动故障
案例说明: 在CentOS 7上安装KingbaseES V8R6C006数据库后,启动Kstudio图形界面启动失败,gtk动态库加载失败,安装gtk相关动态库后,问题解决. 适用版本: Kin ...
- 手写tomcat——有线程池化能力的servlet 服务
点击查看代码 public class DiyTomcat { private int port = 8080; public static final HashMap<String, DiyS ...
- 使用Kali的wifite和aircrack-ng联合破解wifi密码
准备材料 有kali的虚拟机,这里推荐VM 一个超级便宜的USB无线网卡,很便宜三十几块钱 一个靠谱的WPA密码字典(关于字典文件,我这里整理了好多,可联系我.QQ:1213456261) 1.运行k ...
- logstash接受checkpoint防火墙日志并用ruby分词
直接上logstahs配置文件 input{ syslog{ type => "syslog" port => 514 } } filter { grok { matc ...
- 【loj2538】 【PKUWC 2018】Slay the Spire dp
我们不难发现,假设抽了x张攻击牌,y张强化牌,那么肯定是打出尽可能多张的强化牌后,再开始出攻击牌(当然最少要一张攻击牌) 我们设G(i,j)表示:所有(抽到的攻击牌牌数为i,打出的攻击牌牌数为j)的方 ...
- 【Java面试】这应该是面试官最想听到的回答,Mysql如何解决幻读问题?
"Mysql如何解决幻读问题" 一个工作了4年小伙伴,去一个美团面试,遇到了这样一个问题. 大家好,我是Mic,一个工作了14年的Java程序员 关于这个问题,面试官想考察什么?我 ...
- http服务(postman调用方法及反参)
#region 监听url #region 监听url路径请求 static HttpListener httpobj; private void listeningUrl() { //提供一个简单的 ...
- Hadoop阶段学习总结
第一部分:HDFS相关问题 一.描述一下HDFS的数据写入流程 首先由客户端想NameNode服务发起写数据请求,NameNode接收到请求后会进行基本验证,验证内容包括对请求上传的路径进行合法验 ...
- MySQL 中的锁机制
介绍锁机制 技术是为了解决问题而生的,锁被用来实现隔离性,保证并发事务的正确性. 两段锁 & 一次封锁 两段锁 数据库遵循的是两段锁协议,将事务分成两个阶段,加锁阶段和解锁阶段(所以叫两段锁) ...