今天所学的内容大致如下:
# 软件开发框架分为两类 1. c/s架构 c:client 客户端 s:server 服务端 """ 将客户端看成是去店里消费客人 将服务端看成是提供服务的店面 eg:下载的各种app其实就是各大软件的客户端 服务端需要具备的三大特征 1.24小时不间断提供服务(24小时监听) 2.固定的地址(IP地址) 3.能够服务多个用户(高并发) """ 2. b/s架构 b:browser 浏览器 s:server 服务器 """ 浏览器统一充当各个服务端的客户端 本质:bs架构本质上也是cs架构 """ # 两者比较 C/S架构: 优势:针对客户端可以高度定制 劣势:需要用户去下载才能使用 B/S架构: 优势:无需下载 急速体验 劣势:无法做到高度定制 体验效果较差 ps:各大互联网巨头正在做的事情(B/S架构也是目前趋势) eg: 微信小程序(微信提供开发微信小程序的软件) 支付宝小程序(各大程序接口) 统一提供接口服务>>>:获取大量用户及数据,中途还可以提供广告服务
# 什么是网络编程 网络编程其实研究的就是程序之间的数据通信,前提就是基于互联网 # 学习网络编程的目的/结果 学习完网络编程之后就可以开发C/S架构的软件(掌握原理 使用框架) # 网络编程的发展史 由来: 基于远程传输数据的技术最早诞生于美国军方(前沿技术通常都是由军事产生) 实际应用: 军方想要实现不同计算机之间数据交互 没有网络编程技术的时候只能拿U盘拷贝并携带 为了跨区域交互数据所以发明了网络编程 # 早期的远程通信 远程数据传输发展史(民用) 1.有线电话 电话线互联 2.无线电话 信号发射器 3.大屁股电脑 网线 4.笔记本电脑 网卡 ... """ 要想实现远程数据交互的前提是必须要有物理连接介质 比如: 电话线, 网线, 无线网卡 """ # 互联网协议 不同的计算机之间进行无障碍交互,除了有物理连接介质之外还应该有一些能够保证数据彼此无障碍交互的东西(适合所有计算机的标准) 标准 ---> 互联网协议(OSI七层协议)
# 1.什么是互联网? 将计算机彼此链接到一起的介质 # 2.互联网建立的目的? 基于互联网做数据交互 # 3.上网的本质 基于网线去访问其他计算机上面的资源 """当然计算机也可以称之为是服务器/服务端(可以专门对外提供服务)"""
# 所有的计算机都必须要有这七层 应用层 表示层 会话层 传输层 网络层 数据链路层 物理连接层 # 开发层面可以归纳为五层 应用层 传输层 网络层 数据链路层 物理连接层
# 物理连接层 物理链接介质,传递电信号 提供一个物理连接接口(网线口 无线网卡) # 数据链路层 1.规定了电信号(二级制数据)的分组方式 2.以太网协议 规定了计算机必须有一块网卡,并且网卡上面要有一个固定的一串数字(编号) 该编号由12位16进制数 前六位:产商编号 后六位:流水线号 上述的数字也称之为计算机的'mac地址'(类似于身份证号) ps:然后基于mac地址就可以实现计算机之间的数据通信了
IP协议: 规定了接入互联网的计算机都必须有一个IP地址用于唯一标识 # IP地址目前两个版本 IPV4版本 最小 0.0.0.0 最大 255.255.255.255 IPV6版本 十六进制 能够表示出地球上每一粒沙子 # IP地址能够唯一标识接入互联网的一台独一无二的计算机 # 公网IP与私网IP 公网IP是可以直接被浏览器访问到的,但是私网IP是不可以的 公网IP需要花钱购买并申请,并且需要实名认证并备案 私网IP是个人计算机自带的但是无法直接基于互联网访问 """ arp协议 将IP地址转换成mac地址(基于网络请求) """
PORT协议(端口协议) # 端口协议存在的作用 一台计算机上面可以运行很多数据交互软件,而软件都是从内存中获取数据的,'端口协议'就是保证了获取数据时不回发生错乱 # 端口号 用于标识一台计算机上面正在运行的应用程序(端口号类似于手牌号) 范围:0~65535 特性:动态分配 eg:第一次运行微信 系统随机取一个端口号2022 然后关闭微信重新启动 系统随机取一个端口号 端口号基本使用: 0~1024系统默认需要使用的端口号 1024~8000常见软件端口号 以后我们开发的软件最后使用8000之后的端口号 """ 端口号在同一台计算机同一时刻不能重复 """ # 总结 IP地址:用于标识全世界独一无二的一台接入互联网的计算机 PORT号:用于标识一台计算机上面的某一个应用程序 ip+port <==> 127.0.0.1:8080 """ IP+PORT: 能够唯一标识世界上某一台接入互联网的计算机上面的某一个正在运行的应用程序 """ # 例子 www.baidu.com 14.215.177.29:80 ip:port
# 都属于传输层 # TCP协议 也叫:流式协议,可靠协议 基于TCP协议进行数据交互之前需要做一系列复杂的操作 >>>:三次握手四次挥手 三次握手 ---> 建立链接 重要状态 listen监听态:等待对方发请求 syn_rcvd态:忙于恢复确认建立请求 四次挥手 ---> 断开链接 不能合并成三次 ''' 洪水攻击:服务端在同一时间接收到了大量的要求建立链接的请求 控制很多台计算机同一时刻去访问服务端,造成服务端瞬间过载瘫痪 ''' # UDP协议 也叫:丢包协议,不可靠协议 因为不需要建立双下通道 所以数据的传输速度快 但是可能会丢失 数据发送没有通道的概念 发送出去了就不管了 所以有时候会产生数据丢失现象 """ TCP协议相当于打电话 你一句我一句 你侬我侬 UDP协议相当于发短信 发了就完事 管你看不看 """ 早期的QQ使用的就是UDP
交换机: 能够使接入该机器的所有计算机之间彼此互联 局域网: 有交换机组成的网络(一个区域的局域网) 互联网: 可以简单的理解为是多个局域网之间彼此互联 广播与单播: 广播:在交换机中群发 单播:定向回复消息(记录mac地址) 路由器: 能够连接多个局域网并实现局域网之间的数据传输 ps:'mac地址只能用于局域网交互数据,不能跨局域网传输'
# TCP协议之所以比UDP协议可靠 就是因为有双向通道 对不对? 描述的不够精确 不对!!! TCP协议之所以比UDP协议可靠 原因在于TCP协议发送消息有反馈机制 基于TCP发送的消息会在本地先保存该消息 如果地方确认收到才会删除 否则在一定的时间内会频繁的多次发送知道确认或者超时为止 UDP协议发送数据之后会立刻删除内存数据 不会保留