网络编程 - OSI七层协议详解

2023-02-25,,,

目录
网络编程基础
软件开发架构
网络编程简介
OSI七层协议简介
OSI协议之物理连接层
OSI协议之数据链路层
网络相关专业名词
OSI之网络层
OSI协议之传输层
传输层之TCP协议/UDP协议
TCP协议
UDP协议
应用层

网络编程基础

软件开发架构

软件开发结构: 程序员在编写软件时候应该遵循的架构设计
规定了程序的请求逻辑,功能划分模块等等 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七层协议详解的相关教程结束。