网络编程
网络编程
- 软件开发架构
- 网络编程简介
- OSI七层协议
- 互联网相关专业名词(局域网、广域网、交换机、路由器)
- TCP与UDP协议
软件开发架构
1.什么是软件开发架构
程序员在编写软件的时候应该遵循的架构设计
类似于ATM和选课系统所采用的三层机构
2.软件开发架构的分类
1.C/S架构
C: client(客户端)
客户端相当于是需要体验服务的客人,我们在网上和手机上下 载的软件都是属于客户端
S: server(服务端)
服务端我们一般用户是看不见的,是发行软件人员才能进入 的,一般不对外开放
2.B/S架构
B: browser(浏览器)
S: server(服务端)
B/S 架构本质还是C/S架构
让浏览器充当各个厂家的客户端 让用户无需对应下载相应客户端
3.两种架构的优缺点
C/S架构:
优势:针对客户端可以高度定制
劣势:需要用户下载才能使用
B/S 架构:
优势:无需下载 极速体验
劣势: 无法做到高度定制 体验效果较差
目前的趋势其实更加偏向于B/S架构
eg: 微信小程序 支付宝诸多应用
原因: 只需要一个微信或者支付宝就可以去访问很多客户端或者体验很 多服务
网络编程
1.什么是网络编程
网络编程的研究前提就是基于互联网 网络编程就是基于互联网编写 的代码
2.网络编程发展史
该技术源于美国军方>>>>:很多先进的技术都是由军事发明后续转为民用
实际应用:
军方想要实现不同计算机之间的数据交互
没有网络编程技术的时候只能拿U盘拷贝并携带
为了跨区域交互数据所以发明了网络编程
3.早期远程通信
1.座机电话
彼此打电话需要电话线
2.大屁股电脑
数据交互需要插网线
3.智能手机
数据交互需要无线网卡
4.互联网协议
不同计算机之间要想实现无障碍交互,除了需要有物理链接介质之外还需要一套共有的标准
这个标准就是>>>:互联网协议(OSI七层协议)
OSI七层协议简介
所有的计算机在生产过程中必须有相同的部分和相同的功能,eg:
1.应用层
2.表示层
3.会话层
4.传输层
5.网络层
6.数据链路层
7.物理链接层
上述七层也有很多人总结为五层
1.应用层(三层)
2.传输层
3.网络层
4.数据链路层
5.物理链接层
OSI七层的本质其实就是规定了数据要想基于网络发送出去必须在计算机上经历一些固定的流程
1.物理链接层
物理链接介质,传递电信号
2.数据链路层
1.规定了二进制数据的分组方式
2.规定了'以太网协议'
但凡能够接入互联网的计算机都必须有一块网卡
每块网卡在出场的时候都会被烧制一个全世界独一无二的编号
每块编号是由12位16进制数组成
前六位是产商编号
后六位是流水线号
这个独一无二的编号也有一个称呼>>>>:mac地址(类似于身份证号)
PS:基于mac地址就可以实现计算机之间的数据通信了!!!
网络知识补充
1.什么是互联网?
将计算机彼此链接到一起的介质
2.互联网建立的目的
基于互联网做数据交互
3.上网的本质
基于网线去访问其他计算机上面的资源
其实我们的计算机也可以称之为是服务器/服务端(专门对外提供服务)
专业设施名词
1.交换机
让接入交换机的多台计算机之间彼此互联
2.局域网
由交换机组成的网络称之为局域网(一个区域)
3.广播与单播
广播:在交换机中群发
单播:定向回复消息(记录mac地址)
4.路由器
将局域网彼此链接起来并支持数据交互
互联网其实可以看成是由多个局域网链接在一起
在局域网中可以直接基于mac地址实现数据交互
但是可能会产生广播风暴:交换机中同一时间出现太多广播操作
mac地址只能用于局域网交互数据 不能跨局域网传输
OSI七层协议
网络层:
IP协议
规定了每台接入互联网的计算机都必须有一个IP地址(取决于网线)
IP地址目前有两个版本
IPV4:点分十进制
最小:0.0.0.0
最大:255.255.255.255
随着社会的进步,计算机的使用越来越普遍,IPV4地址不够用
IPV6: 十六进制
ps:IP地址可以唯一标识地球上独一无二的一台接入互联网的计算机
IP地址分为公网IP和私网IP
公网IP是可以直接被浏览器访问到的 但是私网IP是不可以的
我们所有人的电脑默认使用的都是私网IP
公网IP需要花钱购买并且需要实名认证并备案
很多非法网站都是在国外注册备案
传输层:
PORT协议(端口协议)
一台计算机上面可以运行很多数据交互软件 比如微信、qq、钉钉
它们都是从内存中获取数据 为什么不会错乱
就是因为端口协议的存在!!!
用于标识一台计算机上面正在运行的应用程序(端口号类似于手牌号)
端口号的范围是:0~65535
0~1024:系统经常使用的端口号
1024~8000:常用软件端口号
写项目的时候推荐使用8000之后的端口
1.同一时间同一台计算机上面的端口号不能冲突
2.端口号是动态分配的
eg: 打开微信随机分配一个没有被使用的端口号8888
关闭微信重新打开那么会随机分配可能还是8888也可能是其他
IP地址:用于标识全世界独一无二的一台接入互联网的计算机
PORT号:用于标识一台计算机上面的某一个应用程序
IP+PORT:能够标识全世界独一无二的一台计算机上面的某一个应用程 序
我们日常生活使用浏览器访问的各个网址其实就是IP+PORT
www.baidu.com 好记
14.215.177.29:80 难记
ip:port
很多常见的服务端都不需要指定端口 只要访问了ip地址内部去会自动 映射
域名解析:
将好记的地址解析成真正的地址 eg:
www.baidu.com 解析 202.108.22.5:80
应用层
这里完全可以取决于程序员自己
HTTP协议 HTTPS协议 FTP协议 自定义协议
TCP与UDP协议
都属于传输层
TCP协议
流式协议、可靠协议
基于TCP协议进行数据交互之前需要做一系列复杂的操作>>>:三次握 手,四次挥手
三次握手建立链接
eg:彼此挖通道
四次挥手断开连接
eg:彼此切断通道
洪水攻击:服务端接收到了大量的syn请求,处于rcvd状态
控制很多台计算机同一时刻去访问服务端,造成服务端瞬间过载瘫痪
UDP协议
丢包协议、不可靠协议
不需要建立双下通道 数据的传输速度快 但是可能会丢失
qq使用的就是UDP协议 所以有时候会产生数据丢失现象
但是我们可以在UDP协议的基础之上做很多额外的扩展来保证数据的 安全
TCP协议类似于打电话:你一句我一句 你侬我侬
UDP协议类似于发短信:发了之后不管你看不看 只要发了就行
面试题
TCP协议之所以比UDP协议可靠 就是因为有双向通道 对不对?
描述的不够精确 不对!!!
TCP协议之所以比UDP协议可靠 原因在于TCP协议发送消息有反馈机制
基于TCP发送的消息会在本地先保存该消息 如果地方确认收到才会删 除
否则在一定的时间内会频繁的多次发送知道确认或者超时为止
UDP协议发送数据之后会立刻删除内存数据 不会保留
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)