网络编程 - OSI七层协议详解
网络编程基础
软件开发架构
软件开发结构: 程序员在编写软件时候应该遵循的架构设计
规定了程序的请求逻辑,功能划分模块等等
1.C/S架构
client:客户端
Server:服务端
'''
客户端:就是我们平时使用到的软件,都是互联网公司提供给我们的客户端,为我们提供服务的,
客户端相当于需要体验服务的客人
客户端可以有很多人同时使用 同时体验服务
'''
比如淘宝客户端,我们打开淘宝就可以享受淘宝的服务。
'''
服务端:
相当于对外提供服务的店面,一个服务端可以同时服务多个客户端
作为服务端必备的多个条件
1.24小时不间断提供服务
2.固定的地址
3.能够服务多个客人(高并发)
'''
单机游戏就是把 服务端和客户端同时储存在了电脑上,所以才可以支持不需要网络就可以进行服务
2.B/S架构
B:browser 浏览器
S:server 服务器
#将 浏览器 充当 各个程序的 客户端,用户无需下载,
C/S架构
优点:客户端支持高度定制,功能更多
缺点:用户需要下载才可以使用
B/S架构
优点:无需下载,打开浏览器即可体验
缺点:无法做到高度定制,功能相对简单
'''
目前行业趋势更加倾向于 B/S架构 更加轻量化
因为可以统一接口,类似用户使用微信 或者 支付宝 就可以达到同时使用很多功能
'''
网络编程简介
1.什么是网络编程
基于网络编写代码 能够实现数据的远程交互
2.学习网络编程的目的
能够开发c/s架构的软件
3.网络编程的起源
"""
最早起源于美国军事领域
想实现计算机之间数据的交互
最早的时候只能用硬盘拷贝
之后发明了网络编程
"""
4.网络编程必备条件
数据的远程交互
1.早期的电话
电话线
2.早期的大屁股电脑
网线
3.笔记本电脑、移动电话
网卡
ps:实现数据的远程交互必备的基础条件是物理连接介质
OSI七层协议简介
OSI七层协议:
规定了所有计算机在远程数据交互的时候必须经过相同的处理流程,在制造过程中必须拥有相同的功能硬件。
七层协议具体为:
应用层
表示层
会话层
传输层
网络层
数据链路层
物理连接层
方便记忆:应 表 会 传 网 数 物
也可以归属为5层:
应用层 传输层 网络层 数据链路层 物理连接层
也可以统称为4层:
应用层 传输层 网络层 网络接口层
# 接收网络消息 = 数据由下往上传递
数据链路层:操作系统在网卡接收数据,系统解析接收到的数据包(处理数据帧);
网络层:系统处理IP头;
传输层:系统处理TCP头,根据得到的端口号,系统将数据包交给应用程序处理;
应用层:应用程序处理数据;
# 发送网络消息 = 数据由上往下传递
应用层:浏览器将请求数据封装为一个HTTP请求;
传输层:TCP协议将数据包再次封装为TCP数据包;
网络层:IP协议再次封装;
数据链路层:以太网技术,携带MAC(系统将数据包发送到本机网卡),封装为数据帧;
OSI协议之物理连接层
主要用户确保计算机之间的物理连接介质 用于接收传递数据(数据类型:bytes类型,二进制)
OSI协议之数据链路层
1.规定了电信号的分组方式
2.以太网协议
规定了计算机在出厂的时候必须有一块网卡,网卡上有一串独一无二的数字
相当于计算机的身份证
该数字为:12位数的16进制数据
前六位为 产商编号 后六位是生产流水线号
该数字也称为;以太网地址/MAC地址
网络相关专业名词
计算机之间想要实现数据交互,必须要'连接'到一起
1.交换机
能够将所有介入交换机的计算机彼此互相连接
2.广播
首次查找处于同一个交互机的其他计算机,需要朝交换机里面吼一嗓子
3.单播
首次被查找的计算机回应了查找他的计算机,并附带了自己的mac地址
4.广播风暴
接入同一台交换机的多台计算机同时发送广播
5.局域网
可以简单理解为多个交互机或多个计算机在同一个交换机组成的网络,在局域网内可以直接使用mac地址通讯
6.广域网
可以简单的理解为范围更大的局域网,类似同省 同区等
7.互联网
由所有局域网,广域网连接到一起组成的网络,世界上有的网络都是连接在一起的
8.路由器
不同的局域网计算机之间是无法直接实现数据交互的,需要由路由器连接
OSI之网络层
IP协议:规定了所有介入互联网的计算机都必须有一个ip地址,类似身份证号
ip地址:是动态分配的,不同场所不同环境下ip地址是不同的
mac地址:是物理地址,可以查看 永远无法修改
ip地址特征:
IPV4;点分十进制
最小 0.0.0.0
最大 255.255.255.255
IPV6:
有不同的数字 字母 符号组成 可以生成无限个不同的地址
IP地址:可以跨局域网传输的
OSI协议之传输层
PORT协议(端口协议)
用来标示一台计算机上面的某一个应用程序
范围:0 - 65535
特征:动态分配(洗浴中心的号码牌,用的时候发一个,不用了再回收过来)
建议:
0-1024 系统默认需要使用
1024-8080 常见软件的端口号
建议我们自己写的程序使用8100-50000直接的端口号即可
URL:统一资源定位符(网址)
网址的本质就是由 IP 和 PORE端口组成的
ip+PORT端口:能够定位出全世界独一无二的一台计算机上面的某个应用程序
域名解析:将网址解析成为 ip + PORT端口
举例: 192.168.10.12:80
我们之所以不直接使用ip加端口访问程序,是因为太难记了,所以才发明了域名
IP:PORT 实际使用冒号连接
114.55.205.139:80
传输层之TCP协议/UDP协议
TCP与UDP协议都是用来规定通信方式的
不遵守协议也可以进行通讯,只不过遵守了协议会让程序更加合规合法合理
TCP协议
1.TCP协议也被称为可靠协议,因为数据不容易丢失 因为有反馈机制,当我们给对方发消息后会保留一个副本,知道对方回应消息收到了才会删除
三次握手键连接
2. 三次握手建立连接
客户端发送 SYN(SEQ=x)报文给服务端,进入SYN_SEND状态
服务端收到SYN报文 回应一个SYN(SEQ=y) ACK(ACK = X+1)报文,进入SYN_RECV状态
客户端收到服务端的SYN报文,回应一个ACK(ACK=y+1)报文,进入Established状态
三次握手完毕,客户端和服务端成功建立双向通道 可以开始传输数据。
# 简单理解就是,客户端发送请求与服务端连接, 服务端同意连接并发送请求和客户端连接, 客户端再同意连接 3次握手
3. 四次挥手断连接
客户端请求断开单向通道,SYN = x
服务端确认收到客户端完整消息后 确定断开
服务端确认没有需要发给客户端的消息后 发送断开单项通道请求
客户端 确认断开
四次挥手完毕,客户端和服务端的双向通道全部断开
# 简单理解就是:客户端发出我想断开连接,服务端收到同意断开,服务端接着确认没什么好说的了 也发送 断开连接, 然后客户端再同意 彻底分手 完成四次挥手
UDP协议
也被称为简单协议,不可靠协议
只是把应用程序需要发送的数据直接发送出去,但是并不能保证信息一定可以到目的地,也无法确认对方是否有收到
当应用程序希望通过UDP与一个应用程序通信时,传输数据之前源端和终端不建立连接。
使用UDP的原因就是因为很简单 快捷 粗暴 只要指定对方的地址就可以发消息了
"""
TCP我们可以看成是打电话:双方你侬我侬
UDP我们可以看成是发短信:只要发了就行 不管对方看不看
"""
应用层
应用层相当于是程序员自己写的应用程序 里面的协议非常的多,常见的有:HTTP /
HTTPS / FTP 等等
根据不同的框架也会用到不同的协议
网络编程 - OSI七层协议详解的更多相关文章
- python网络编程-OSI七层模型详解
OSI 七层模型通过七个层次化的结构模型使不同的系统不同的网络之间实现可靠的通讯,因此其最主要的功能就是帮助不同类型的主机实现数据传输 . 完成中继功能的节点通常称为中继系统.在OSI七层模型中,处于 ...
- Day09: socket网络编程-OSI七层协议,tcp/udp套接字,tcp粘包问题,socketserver
今日内容:socket网络编程 1.OSI七层协议 2.基于tcp协议的套接字通信 3.模拟ssh远程执行命令 4.tcp的粘包问题及解决方案 5.基于udp协议的套接字 ...
- 8.6 day27 网络编程 osi七层协议 Time模块补充知识 TCP协议
Time模块补充知识 date和datetime区别是什么? date 就是年月日 datetime就是年月时时分秒 以下代码为什么会报错? import json from datetime imp ...
- OSI七层协议详解
一.简介 开放系统互连参考模型 (Open System Interconnect 简称OSI)是国际标准化组织(ISO)和国际电报电话咨询委员会(CCITT)联合制定的开放系统互连参考模型,为开放式 ...
- Python进阶----网络通信基础 ,OSI七层协议() ,UDP和TCP的区别 , TCP/IP协议(三次握手,四次挥手)
Python进阶----网络通信基础 ,OSI七层协议() ,UDP和TCP的区别 , TCP/IP协议(三次握手,四次挥手) 一丶CS/BS 架构 C/S: 客户端/服务器 定义: ...
- 软件开发架构与网络之OSI七层协议(五层)
本期内容概要 python回顾 软件开发架构 网络理论前瞻 osi七层协议(五层) 以太网协议 IP协议 port协议 交换机 路由器 局域网 广域网 TCP协议 三次握手 四次挥手 UDP协议 内容 ...
- 网络之OSI七层协议模型、TCP/IP四层模型
13.OSI七层模型各层分别有哪些协议及它们的功能 在互联网中实际使用的是TCP/IP参考模型.实际存在的协议主要包括在:物理层.数据链路层.网络层.传输层和应用层.各协议也分别对应这5个层次而已. ...
- 网络编程-osi七层
一.操作系统基础 操作系统:(Operating System,简称OS)是管理和控制计算机硬件与软件资源的计算机程序,是直接运行在“裸机”上的最基本的系统软件,任何其他软件都必须在操作系统的支持下才 ...
- OSI七层模型详解 TCP/IP协议
总结 OSI中的层 功能 TCP/IP协议族 应用层 文件传输,电子邮件,文件服务,虚拟终端 TFTP,HTTP,SNMP,FTP,SMTP,DNS,Telnet 等等 表示层 数据格式化,代码转 ...
- 网络--OSI七层模型详解
OSI 七层模型通过七个层次化的结构模型使不同的系统不同的网络之间实现可靠的通讯,因此其最主要的功能就是帮助不同类型的主机实现数据传输 . 完成中继功能的节点通常称为中继系统.在OSI七层模型中,处于 ...
随机推荐
- 查询参数和字符串校验:Query_Parameters_and_String_Validations
官方文档地址:https://fastapi.tiangolo.com/zh/tutorial/query-params-str-validations/ # -*- coding: UTF-8 -* ...
- OSF--网络类型
ABR:区域边界路由器ASBR:自治区域系统边界路由器区域部署原则: 存在vlink本地网络一定是有问题的.他只是作为一种过度技术,在vlink里无法实现认证! 配置: [r2-ospf-a ...
- Vue3 Vite3 多环境配置 - 基于 vite 创建 vue3 全家桶项目(续篇)
在项目或产品的迭代过程中,通常会有多套环境,常见的有: dev:开发环境 sit:集成测试环境 uat:用户接收测试环境 pre:预生产环境 prod:生产环境 环境之间配置可能存在差异,如接口地址. ...
- Lombok好用是好用,就是容易踩坑,这份避坑指南请查收
序言 各位好啊,我是会编程的蜗牛,作为java开发者,我们平常在开发过程中,总是希望能够尽量少敲代码.这一方面,当然是为了偷懒,另一方面,当然也是为了代码看起来更加简洁一点,不断往编程规范上靠.然后其 ...
- 跨平台客户端Blazor方案尝试
一.方案选择 Electron/MAUI + Blazor(AntDesgin blazor) BlazorApp:Blazor Razor页面层,抽象独立层,被BlazorAppElectron/B ...
- MVC下拉框
<select> @{ foreach (var item in 循环泛型) { <option value="@item.ID">@item.属性名< ...
- 前端学习笔记--HTML5
网页的优点(客户端为网页)(B/S)模式 开发成本低) 不需要安装 无需更新 跨平台(最重要)可以有效的减小开发成本 传统的为C/S模式,开发成本高 前端工程师负责写网页的源代码,而浏览器负责把网页渲 ...
- python字符串的一些操作
# 1.变量的多次赋值 print('1.变量的多次赋值') name = '小明' # 没有意义的 name = '小刚' # 对前面创建的变量名称进行覆盖 # 删除原来的数据,写入新的数据 pri ...
- Flask框架:运用Ajax轮询动态绘图
Ajax是异步JavaScript和XML可用于前后端交互,在之前<Flask 框架:运用Ajax实现数据交互>简单实现了前后端交互,本章将通过Ajax轮询获取后端的数据,前台使用echa ...
- OpenMP 教程(一) 深入人剖析 OpenMP reduction 子句
OpenMP 教程(一) 深入人剖析 OpenMP reduction 子句 前言 在前面的教程OpenMP入门当中我们简要介绍了 OpenMP 的一些基础的使用方法,在本篇文章当中我们将从一些基础的 ...