网络编程
概要
- 软件开发架构
- c/s架构
- b/s架构
- 网络编程
- 计算机网络常见硬件
- 交换机
- 路由器
- OSI七层协议(# 所有的计算机都必须要有这七层)
- c/s架构(client/server)
- 服务端需具备特性
- 24小时不间断提供服务(24小时监听)
- 固定的地址(IP地址)
- 能够服务多个用户(高并发)
- 手机各种app其实就是各大软件的客户端
- b/s架构((browser/server)
- 浏览器统一充当各个服务端的客户端
- 本质上也是cs架构
- 开发软件需掌握
- 开发cs架构的软件(简易版本): 需掌握网络编程
- 开发bs架构软件:需掌握-'并发编程、前端、数据库、后端框架'
- 是要做什么
- 研究程序之间的数据通信
- 想实现远程数据交互需有
- 有物理连接介质
- 数据无障碍交互的标准->OSI七层协议
- 发展史<设备-物理连接介质>
- 有线电话-电话线
- 无线电话-信号发射器
- 大屁股电脑-网线
- 笔记本电脑-网卡
- 交换机:能够使接入该机器的所有计算机之间彼此互联
- 局域网:由交换机组成的网络
- 路由器:能够连接多个局域网并实现局域网之间的数据传输
- 路由功能: 把数据从一个子传输到另一个子网,因此路由具有判断网络地址和选择ip路径功能
- 互联网:可以简单的理解为多个局域网之间彼此互联
- 应用层
- 表示层
- 会话层
- 传输层
- 网络层
- 数据链路层
- 物理连接层
- # 开发层面可以归纳为五层
- 应用层
- 传输层
- 网络层
- 数据链路层
- 物理连接层
- 提供一个物理连接接口(网线口 无线网卡等)
- 如中继器: 常用于两个网络节点之间物理信号的双向转发工作
- 就是简单的信号放大器,信号在传输的过程中是要衰减的,中继器的作用就是将信号放大,使信号能传的更远
- 规定了电信号的分组方式
- 背景: 网络上的二级制数据传到电脑后,怎么分组取出然后翻译成人类能读懂的语言->电信号帮你
- 以太网协议
- 规定了计算机必须有一块网卡 并且网卡上面要有一个固定的一串数->mac地址
- mac地址理解
- 定义:每台计算机的出厂时写在设备上的一串12位16进制数,相当于该计算机的身份证号码
- 前六位:产商编号
- 后六位:流水线号
- 基于mac地址的数据传输
- 只能在局域网内传输数据,在互联网数据传输需用ip地址
- 什么是广播风暴
- 局域网内的多台计算机同时分别往其他计算机发起发送数据请求,造成交换机处理不过来的现象
- ip协议: 规定了接入互联网的计算机都必须有一个IP地址用于唯一标识
- ip地址
- 能够唯一标识接入互联网的一台独一无二的计算机
- IPV4版本
- 0.0.0.0~255.255.255.255
- IPV6版本
- 其数量-能够表示出地球上每一粒沙子
- 公网IP与私网IP
- 公网IP需要花钱购买并申请
- 私网IP自带的但是无法直接基于互联网访问
- arp协议
- 将IP地址转换成mac地址(基于网络请求)
- TCP
- 建立连接: 三次握手
- 其中重要状态
- Listen监听态: 监听对方发起的连接请求
- syn_rcvd态: 回复请求,并建立连接
- 断开连接: 四次挥手
- TCP协议可靠原因:
- 从"发送数据的"过程理解: 数据在内存留一个备份,然后数据发送到对方,这时对方会回传一个ok确认收到,然后发送方会将内存中备份的数据删除;若对方没有回复ok,每间隔一定时间发送一次数据,在规定时间内(如1min内),仍没有回复ok,这时才从内存中删除备份数据;
- 而UDP数据发出去不管对方有没有收到,就结束了,所以不可靠.
- UDP
- 没有通道,数据发出去就结束了
- 数据包可能在传输中因为某种原因损坏,丢失
- 对方看不看也跟发送方无关
- QQ刚出来用的就是这个协议,所以,会有人发出消息,但中途数据包丢失,而对方没有收到消息
- 注意: 并不是数据传输非要用这些协议,可以不用协议直接传,完全看双方约定
- 是人为自定义的协议标准 可遵循可不遵循
- HTTP协议 FTP协议 ...