网络编程(一)
内容概要
- 软件开发框架
- 互联网相关专业名词
- 网络编程简介
- OSI七层协议
- TCP与UDP协议
软件开发框架
# 什么是软件开发架构
程序员在编写代码的时候应该遵循的架构设计
类似于设计模式的三层架构
# 软件开发架构的分类
1.C/S架构
C:client(客户端)
S:server(服务端)
"""
eg:
我们手机上下载的各种app其实是各大厂家的客户端
打开app使用功能的时候其实就是相当于是基于网络去到厂家的店里面让服务员给你提供服务!!!
"""
2.B/S架构
B:(浏览器)
S:(服务器)
"""
B/S架构本质也是C/S架构
让浏览器充当各个厂家的客户端 用户无需对应下载相应客户端
"""
# 两种架构的优缺点
C/S架构
优势: 针对客户端可以高度定制
劣势: 需要用户去下载才能使用
B/S架构
优势: 无需下载 急速体验
劣势: 无法做到高度定制 体验效果较差
"""
目前的趋势更加偏向于B/S架构
如微信小程序
只需要下载一个微信就可以通过微信去访问其他的服务端
如支付宝
只需要下载一个支付宝就可以通过支付宝体验到很多的服务
统一提供接口服务>>>:获取大量用户及数据 中途还可以提供广告服务
"""
互联网相关专业名词
# 网络知识
1.什么是互联网
将计算机彼此链接到一起的介质
2.互联网建立的目的
基于互联网做数据的交互
3.上网的本质
基于网线去访问其他计算机上的资源
"""其实我们的计算机也可以称之为是服务器/服务端(专门对外提供服务)"""
# 专业设施名词
1.交换机
让接入交换机的多台计算机之间彼此互相链接(互联)
2.局域网
由交换机组成的网络称之为局域网(一个区域)
3.广播与单播
广播: 在交换机中群发(由一台电脑发消息 其他电脑都可以收到)
单播: 定向回复消息(记录mac地址)
4.路由器
将局域网彼此链接起来并支持数据交互
互联网也可看成有多个局域网链接在一起的
"""
在局域网中可以直接基于mac地址实现数据交互
但可能产生广播风暴: 交换机中同一时间出现太多广播操作
mac地址只能用于局域网交互数据 不能跨局域网传输
"""
网络编程简介
# 什么是网络编程
网路编程的研究前提是基于网络 网络编程就是基于互联网编写代码
# 学习网络编程的目的
学习网络编程可以帮助我们掌握网络相关知识方便后续开发C/S架构的软件(掌握原理 使用框架)
# 网络编程发展史
网络编程技术最早是源于美国军方 (很多先进的技术都是由军事发明后续转为民用)
实际应用:
军方想要实现不同计算机间的数据交互
在早期没有网络编程时只能通过人力将数据拷贝并携带
因此发明了网络编程用于跨区域数据交互
# 早期远程通信
1.座机电话
彼此打电话需要电话线
2.大屁股电脑
数据交互需要插网线
3.智能手机
数据交互需要无限网卡
'''
电话线 网线 无限网卡
远程通信的前提是必须具备一个物理链接介质
'''
# 互联网协议
不同计算机之间要想实现无障碍交互
除了需要有物理链接介质之外还需要一套公有的标准
'''
思考为什么不同厂家的手机零部件几乎是一样的
'''
这个标准是>>>:互联网协议(OSI七层协议)
OSI七层协议简介
'''所有计算机在生产时都必须有相同的部分和相同的功能'''
# 七层协议
1.应用层
2.表示层
3.会话层
4.传输层
5.网络层
6.数据链路层
7.物理链接层
# 七层协议也由很多人总结为五层协议
1.应用层(含有表示层,会话层 三层)
2.传输层
3.网络层
4.数据链路层
5.物理链接层
"""
为了方便记忆我们只需记住每层的第一个字
应、表、会、传、网、数、物
"""
OSI七层协议
"""
OSI七层的本质其实就是规定了数据想要基于网络发送出去
必须在计算机上经历一些固定的流程
"""
# 物理链接层
物理链接介质,传递电信号 (网线接口)
# 数据链路层
'''
基于物理链接层接收到的二进制数 如何切分才能正常解析?
'''
1.规定二进制数据的分组方式
2.规定了'以太网协议'
但凡能够接入互联网的计算机都必须用于一块网卡
每一块网卡出厂时都会有自己的独立编号(独一无二的)
网卡编号由12位16进制数组成:
前六位是产商编号
后六位是流水线号
这个独一无二的编号也有一个称呼>>>:'mac地址'(类似于身份证号)
ps:基于mac地址就可以实现计算机之间的数据通信了!!!
# 网络层
IP协议
规定了每台接入互联网的计算机都必须有一个IP地址(取决于网线)
IP地址目前有两个版本
IPV4: 点分十进制
最小: 0.0.0.0
最大: 255.255.255.255 (255的4次方)
IPV6: 点分十六进制
'''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
eg:
www.baidu.com 更方便记忆
202.108.22.5:80 较难记忆
ip:port
很多常见的服务端都不需要指定端口 只要访问了ip地址内部去会自动映射
域名解析
将好记的地址解析成真正的地址
www.baidu.com 解析 202.108.22.5:80
"""
# 应用层
应用层完全可以取决于程序员
HTTP协议 HTTPS协议 FTP协议 自定义协议
TCP与UDP协议
**TCP协议与UDP协议都属于传输层
TCP协议
# TCP协议
TCP协议又称为流式协议、可靠协议...
基于TCP协议进行数据交互之前需要一系列复杂的操作>>>:三次握手四次挥手
'''
# 三次握手
eg:向朋友借钱
向好友提出借钱请求
好友收到请求后,并把钱借给你
向好友告知确认收到钱
# 四次挥手
eg:朋友还钱
你对朋友说我要还钱了
好友收到你要还钱的信息把银行卡号告诉你
好友在确认是否收到钱
你把还钱证明发给好友
'''
三次握手
四次挥手
UDP协议
# UDP协议
UDP协议又称丢包协议、不可靠协议
不需要建立双下通道 数据的传输速度快 但是可能会丢失
qq使用的就是UDP协议 所以有时候会产生数据丢失现象
但是我们可以在UDP协议的基础之上做很多额外的扩展来保证数据的安全
本文来自博客园,作者:{Mr_胡萝卜须},转载请注明原文链接:https://www.cnblogs.com/Mr-fang/p/16146102.html