网络编程,osi七层协议

软件开发架构

规定了程序的请求逻辑,功能分开
分为两种:
1.C/S架构
	 客户端 (Client)
      类似于 我们下载的app,给客户提供软件体验,可以理解成要去消费的客户
    服务端 (Server)
    	相当于 给客户提供服务的服务的场所
    服务端必备条件:' 1.必须24小时服务。  2.固定的地址    3.支持多用户 '

    服务端必须由客户端来访问,一般情况下基于网络才能访问.  特殊情况下 客户端与服务端会在同一台计算机上。
====================================================================================
2.B/S架构
	 Browser 浏览器
    Sevrver 服务端
 """
 本质和c/s架构一样,只是我们在浏览器上当做客户端,没有专属的APP,通过浏览器页面去享受服务
 """
  • C/S架构:

​ 优势: 针对客户端可以高度定制

​ 劣势: 需要用户去下载才能使用

  • B/S架构:

    优势: 不需要下载,就可以体验

    劣势: 无法做到高度定制, 所以体验感就没那么好

网络编程

1.什么是网络编程

基于网络编写代码,能够实现数据的远程交互

2.学习网络编程的目的

​ 能够开发c/s架构的软件

3. 网络编程的起源

   始于美国军方>>>: 很多先进的技术都是有军事发明后转为民用
   实际应用:
     军方想要实现不同计算机之间的数据交互,在当时没有网络编程技术的时候,只能拿硬盘拷贝并携带 

4.网络编程的必备条件

1.座机电话 —— 连接时需要电话线 
 2.大屁股电脑 —— 数据交互需要插网线
 3.智能手机 —— 数据交互无限网卡
"""
 电话线、网线、无限网卡 —— 远程通信的前提就是必须具备一个物理链接介质
"""

OSI七层协议简介

"""
  所有的计算机在生产过程过程中必须有相同的部分和相同的功能  ——  应、表、会、传、网、数、物
"""
1.应用层
2.表示层
3.会话层
4.传输层
5.网络层
6.数据链路层
7.物理链接层
====================================================================================
# 很多人把它们总结成五层
1.应用层(包含了表示层和会话层)
2.传输层
3.网络层
4.数据链路层
5.物理链接层

osi七层协议之物理连接层

计算机之间的物理连接介质。 接受数据,接收电信号(bytes类型,二进制)

OSI七层协议之数据链路层

基于物理链接层收到一串二进制数, 那么如何正常解析
1.规定了电信号的分组方式
2.以太网协议
	每台计算机都必须有一块网卡,该网卡上有一串数字。 每块网卡在出厂的时候都会被赋予一个人全世界唯一 的编号,用来记录,这个编号由12位16进制数组成
    前6位产商编号 后6位流水线号
     也称为"MAC地址"
可以基于MAC地址实现计算机之间的数据通信

OSI七层协议之网络层

ip地址: 规定了计算机接入互联网必须拥有ip地址,每个ip地址只能绑定一台计算机
     "MAC地址是物理地址无法修改,ip地址是动态地址也可调成静态"
ip地址有两个版本 
IPV4: 点分十进制
    最小: 0.0.0.0
    最大: 255.255.255.255
 	我们现在使用的都是IPV4地址,但是IP地址已经快不够用了,所以IPV6出来了
IPV6:
	""" IPV6 可以表示出地球上每一粒沙子 """
    他的ip地址数量能够给地球上每一粒沙子分一个ip地址。
    IP地址可以跨局域网传输前提是 必须申请公网ip地址。
    """
  IP地址分为公网IP和私网IP
   公网可以直接被浏览器访问到,但是私网不可以
   公网需要花钱购买并且需要实名认证并且备案
"""

OSI七层协议之传输层

PORT协议(端口协议)
	我们使用的每个应用程序他们每个都有一个独立的端口 ,目的就是为了从内存中获取数据时不会错乱。
 范围:
    0-65535
    特征:动态分配
0 - 1024 系统默认需要使用的端口
1024-8000 常见软件使用的端口号
所以我们在写项目的时候,推荐使用8000之后的端口
# 注意事项
 1、同一时间同一台计算机上面的端口号不能重合
 2、端口号是动态分配的, 就比如这次打开QQ的端口号是8118,使用完关了,再重新打开的时候可能是8118,也有可能是8888,或者其他数字
 3. 也有特殊情况 使用固定端口,当我们使用软件时有的软件自带设置端口。我们可以指定一个端口固定使用。注意:后续不要占用端口
 
  
    
 IP地址:用来标识全世界独一无二的一台接入互联网的计算机
 PORT号:用来标识一台计算机上面的某一个应用程序
  
 那么IP + PORT :就是定位全世界独一无二的计算机上面的某一个应用程序
  所以我们在日常中使用的网址其本质就是""" IP地址+端口号,通过域名解析将网址解析IP+PORT 两者之间使用冒号:连接 """


网络相关专业名词

计算机之间想要实现数据交互 必须 要 '连接'在一起
1.交换机
	能够将所有接在交换机设备上的计算机彼此互联
2.广播
	首次查找在同一台交换机上的其他计算机,需要向交换机发出广播 ,首次"群发"  
3.单播
   广播目标计算机回复消息时称为 "单播"并传输 mac地址
4.广播风暴
	同一台交换机上的计算机同时 发出广播
5.局域网
	单个交换机组成的网络。一个小区域内的网络。
6.广域网
	区域更大的局域网
7.互联网
	所有局域网,广域网连接到一起
8.路由器
	不同局域网之间的计算机无法实现数据交互,需要路由器连接 。

OSI七层协议之传输层

TCP协议

TCP协议  可靠协议(数据不易丢失)
	为什么数据不会轻易丢失,不是因为有双向通道,是因为有反馈机制的存在 发送消息后会保留一个副本,直到对方回应收到消息,才会删除副本。
	可以理解成一条规则,遵循这个协议就是遵循规则。
   在多客户端同时申请建立通信通道时,可以请求做唯一标识。 相当于每个通道都有自己的一串身份识别码。
"三次握手键连接"
	彼此之间互相开通道传输数据。
   1.客户端向服务端发出开通道需求并附上标识(作为此通道唯一标识)
	2. 服务端允许建立通道(+上此通道标识),但此时通道是单向的,服务端也想向 客户端开通通信通道, 发出请求给客户端建立通信通道。 并附上标识。
   	3. 客户端允许建立 通道。附上标识。
#  上述步骤完成后 就建立了双向通道

"四次挥手断链接"
	1.客户端请求断开单向通道。(客户端通向服务端的通道)
   2. 服务端确认断开单向通道。
	3.服务端请求断开单向通道(服务端通向客户端的通道)
   4.客户端确认断开单向通道
# 不能向 3次握手建链接那样 中间2步合并,因为中间需要确认消息是否发完,要思考。
		称为: "TIME_WAIT 状态  "(时间等待)
	比如说: 你发分手短信给女朋友, 女朋友不会立刻给你回复消息。他需要思考思考。(海后除外)
    
====================================================================================
 "洪水攻击"   "SYN_RCVD 状态"  (同步收到)
    是指在同一时间大量的客户端向服务端申请建立链接。 导致服务端处于 SYN_RCVD状态
 解决方案:
	设定缓冲池: 设定数量同时只接待规定的数量的客户端,超出部分进入缓冲中排队。当接待中有客户端退出,顺位补位  # 类似于咱们玩游戏排队        

三次握手键连接
image

四次挥手断链接
image

 "listen "          监听
 "syn_sent  "       请求联系
 "SYN_RCVD "        同步收到
 "estab_lished  "   建立
"TIME_WAIT 状态  "  时间等待
"FIN_WAIT       "   

UDP协议

丢包协议、不可靠协议
不需要建立双向通道,数据的传输的速度快,但是传输的数据可能会发生丢失
QQ使用的就是UDP协议,以前我们使用QQ得时候经常会发现短信发了对方收不到,所以就存在产生数据的丢失情况。
但如果在UDP协议的基础上做扩展来保证数据的安全就两全其美。

OSI七层协议之应用层

程序员自己写的应用程序。协议狠多
 常见的  HTTP , HTTPS, FTP 

面试题

# TCP协议之所以比UDP协议可靠 ,就是因为有双向通道 对不对?
	不对
  TCP协议之所以比UDP协议可靠 原因在于TCP协议发送消息有反馈机制
  	基于TCP发送的消息会在本地先保存该消息 如果地方确认收到才会删除
    否则在一定的时间内会频繁的多次发送知道确认或者超时为止
  UDP协议发送数据之后会立刻删除内存数据 不会保留
posted @ 2022-11-15 18:47  李阿鸡  阅读(73)  评论(0编辑  收藏  举报
Title