网络并发编程基础
网络并发编程基础
网络理论前戏
OSI七层协议(五层)
以太网协议、ip协议、port协议、arp协议
交换机、路由器、局域网、广域网
TCP协议
三次握手与四次挥手
UDP协议
socket通信(模块)
软件开发架构
c/s架构 c:client 客户端 s:server 服务端
将客户端看成是去店里消费客人
将服务端看成是提供服务的店面
eg:收集各种app其实就是各大软件的客户端
服务端需要具备的三大特征
1.24小时不间断提供服务(24小时监听)
2.固定的地址(IP地址)
3.能够服务多个用户(高并发)
b/s架构 b:browser 浏览器 s:server 服务器
浏览器统一充当各个服务端的客户端
本质:bs架构本质上也是cs架构
统一:各大互联网巨头正在做的事情
eg:
微信小程序(微信提供开发微信小程序的软件)
支付宝小程序(各大程序接口)
# 总结
网络编程学习完就可以开发cs架构的软件(简易版本)
并发编程、前端、数据库、后端框架就可以开发bs架构软件(任何类型的软件)
网络编程前戏
网络编程其实研究的就是程序之间的数据通信
由来:
基于远程传输数据的技术最早诞生于美国军方(前沿技术通常都是由军事产生)
远程数据传输发展史(民用)
1.有线电话 电话线互联 2.无线电话 信号发射器 3.大屁股电脑 网线 4.笔记本电脑 网卡
要想实现远程数据交互的前提是必须要有物理连接介质
除了有物理连接介质之外还应该有一些能够保证数据彼此无障碍交互的东西(标准)
OSI七层协议
OSI七层协议
# 所有的计算机都必须要有这七层 应用层 表示层 会话层 传输层 网络层 数据链路层 物理连接层 # 开发层面可以归纳为五层 应用层 传输层 网络层 数据链路层 物理连接层 """ 从小往上研究 1.物理连接层 提供一个物理连接接口(网线口 无线网卡) 2.数据链路层 1.规定了电信号的分组方式 2.以太网协议 规定了计算机必须有一块网卡 并且网卡上面要有一个固定的一串数字 12位16进制数 前六位:产商编号 后六位:流水线号 上述的数字也称之为计算机的mac地址(类似于身份证号) """
网络层
IP协议:规定了接入互联网的计算机都必须有一个IP地址用于唯一标识 IPV4版本 最小 0.0.0.0 最大 255.255.255.255 IPV6版本 能够表示出地球上每一粒沙子 # IP地址能够唯一标识接入互联网的一台独一无二的计算机 公网IP与私网IP 公网IP需要花钱购买并申请 私网IP自带的但是无法直接基于互联网访问 """ arp协议 将IP地址转换成mac地址(基于网络请求) """
传输层
TCP协议 UDP协议 暂且忽略 端口协议 范围:0~65535 特性:动态分配 eg:第一次运行微信 系统随机取一个端口号2022 然后关闭微信重新启动 系统随机取一个端口号 端口号基本使用 0~1024系统默认需要使用的端口号 1024~8000常见软件端口号 以后我们开发的软件最后使用8000之后的端口号 # 端口号(port):能够唯一标识一台计算机上面正在运行的一款应用程序 """ 端口号在同一台计算机同一时刻不能重复 """ 总结 ip+port 127.0.0.1:8080 """ 能够唯一标识世界上某一台接入互联网的计算机上面的某一个正在运行的应用程序 """
TCP协议
流式协议 可靠协议 三次握手 建立链接 重要状态 listen监听态:等待对方发请求 syn_rcvd态:忙于恢复确认建立请求 # 洪水攻击:服务端在同一时间接收到了大量的要求建立链接的请求 四次挥手 断开链接 不能合并成三次 """该类知识需要课后再花时间研究(如果想要大厂)"""
不可靠协议
数据发送没有通道的概念 发送出去了就不管了
TCP协议相当于打电话 你一句我一句 你侬我侬UDP协议相当于发短信 发了就完事 管你看不看
早期的QQ使用的就是UDP
应用层
都是人为自定义的协议标准 可遵循可不遵循
HTTP协议 FTP协议 ...