网络编程 - 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七层模型中,处于 ...
随机推荐
- 第五章:Admin管理后台 - 3:Admin文档生成器
Django的admindocs应用可以从模型.视图.模板标签等地方获得文档内容. 一.概览 要激活admindocs,请按下面的步骤操作: 在INSTALLED_APPS内添加django.cont ...
- ElastAlert监控日志告警Web攻击行为---tomcat和nginx日志json格式
一.ELK安装 1.2 elk配置 logstash自定义配置文件,取名为filebeat_log.conf : input { beats { port => 5044 client_inac ...
- OSF--网络类型
ABR:区域边界路由器ASBR:自治区域系统边界路由器区域部署原则: 存在vlink本地网络一定是有问题的.他只是作为一种过度技术,在vlink里无法实现认证! 配置: [r2-ospf-a ...
- Python抖音视频去水印,并打包成exe可执行文件
前言 抖音里面的视频保存之后,会发现全都带有水印,所以如何解决视频去除水印就很有必要,所以教程来了,本次教程不仅会教大家如何去除视频里的水印,并且教大家将程序制作成exe可执行文件,可以发给你的好友使 ...
- 关于csh-C-shell的记录
csh,由柏克莱大学的 Bill Joy 设计的,语法有点类似C语言,所以才得名为 C shell ,简称为 csh Bill Joy 是一个风云人物,他创立了 BSD 操作系统,开发了 vi 编辑器 ...
- PHP全栈开发(四): HTML 学习(1.基础标签+表格标签)
简单的学习一下HTML 学习HTML采用在www.runoob.com上学习的方法. 而且该网站还提供在线编辑器. 然后HTML编辑器使用Notepad++ 记得上Emmet的官网http://emm ...
- 2022牛客OI赛前集训营-提高组(第一场) 奇怪的函数 根号很好用
奇怪的函数 考虑暴力,每次查询\(O(n)\)扫所有操作,修改\(O(1)\) 这启发我们平衡复杂度,考虑分块. 观察题目性质,可以发现,经过若干次操作后得到的结果一定是一个关于\(x\)的分段函数, ...
- day01-4-订座功能
满汉楼01-4 4.功能实现03 4.5订座功能 4.5.1功能说明 如果该餐桌处于已经预定或者就餐状态时,不能进行预定,并给出相应提示 4.5.2思路分析 根据显示界面,要考虑以下两种状态 检测餐桌 ...
- MYSQL创建分区时候报错
第一种:ERROR 1064 (42000): Partitioning can not be used stand-alone in query near 不能单独创建分区.创建分区时要创建分区表 ...
- 同一台电脑安装两个不同版本的mysql。简单暴力有效
1.先找到mysql的安装地址.找到my.ini 2.修改端口号(mysql默认端口是3306)我这里修改为3307 3.打开服务.找到刚刚修改的mysql版本 4.重新启动该服务(我已经安装了mys ...