本文主要是介绍网络编程,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
软件开发架构
# 什么是软件开发架构
程序员在编写软件的时候应该遵循的架构设计
# 软件开发架构分类
1. C/S架构
C:client(客户端) 淘宝app 微信 qq
S:server(服务端)
2. B/S架构
B:browser(浏览器) 淘宝网页版 视频网站
S:server(服务器)
'''B/S架构本质也是C/S架构
由浏览器来充当客户端'''
# 两种架构的优缺点
C/S架构:
优势:针对客户端可以高度定制 个性化能力强
劣势:需要下载客户端才能使用 系统更新不仅需要更新服务端 也需更新客户端
B/S架构:
优势:无需下载客户端 打开浏览器即可使用 系统更新只需更新服务端 不需要更新浏览器
劣势:无法高度定制 个性化能力弱
网络编程简介
# 什么是网络编程
网络编程的研究前提就是基于互联网 网络编程就是基于互联网编写代码
# 学习网络编程的目的/结果
学习完网络编程之后就可以开发C/S架构的软件(掌握原理 使用框架)
# 网络编程发展史
该技术源于美国军方>>>:很多先进的技术都是由军事发明后续转为民用
实际应用:
军方想要实现不同计算机之间数据交互
没有网络编程技术的时候只能拿U盘拷贝并携带
为了跨区域交互数据所以发明了网络编程
# 早期远程通信
1.座机电话
彼此打电话需要电话线
2.大屁股电脑
数据交互需要插网线
3.智能手机
数据交互需要无限网卡
'''
电话线 网线 无限网卡
远程通信的前提是必须具备一个物理链接介质
'''
# 互联网协议
不同计算机之间要想实现无障碍交互
除了需要有物理链接介质之外还需要一套公有的标准
'''
思考为什么不同厂家的手机零部件几乎是一样的
'''
这个标准是>>>:互联网协议(OSI七层协议)
OSI七层协议简介
OSI七层的本质其实就是规定了数据要想基于网络发送出去必须在计算机上经历一些固定的流程
"""
所有的计算机在生产过程中必须有相同的部分和相同的功能
应、表、会、传、网、数、物
"""
1.应用层
2.表示层
3.会话层
4.传输层
5.网络层
6.数据链路层
7.物理链接层
# 上述的七层也有很多人总结为五层
1.应用层(三层)
2.传输层
3.网络层
4.数据链路层
5.物理链接层
物理链接层
建立、维护、断开物理连接。
物理链接介质,传递电信号
数据链路层
"""
基于物理链接层接收到一串二进制数 如何切分才能正常解析?
"""
1.规定了二进制数据的分组方式
2.规定了'以太网协议'
但凡能够接入互联网的计算机都必须有一块网卡
每块网卡在出厂的时候都会被烧制一个全世界独一无二的编号
该编号是由12位16进制数组成
前六位是产商编号
后六位是流水线号
这个独一无二的编号也有一个称呼>>>:'mac地址'(类似于身份证号)
ps:基于mac地址就可以实现计算机之间的数据通信了!!!
网络知识补充
# 1.什么是互联网
将计算机彼此链接在一起的介质
# 2.互联网建立的目的
基于互联网做数据交互
# 3.上网的本质
基于网线去访问其他计算机上面的资源
专业设施名词
交换机
让接入交互机的多台计算机之间彼此互联
局域网
由交换机组成的网络称之为局域网(一个区域)
广播与单播
广播:在交换机中群发
单播:定向回复消息(记录mac地址)
路由器
将局域网彼此链接起来并支持数据交互
互联网其实可以看成是由多个局域网链接在一起
"""
在局域网中可以直接基于mac地址实现数据交互
但是可能会产生广播风暴:交换机中同一时间出现太多广播操作
mac地址只能用于局域网交互数据 不能跨局域网传输
"""
网络层
# IP协议
规定了每台接入互联网的计算机都必须有一个IP地址(取决于网线)
'IP地址可以唯一标识地球上独一无二的一台接入互联网的计算机'
# IP地址目前的两个版本
IPV4:点分十进制
最小:0.0.0.0
最大:255.255.255.255
# 随着社会的进步 计算机的使用越来越普遍 IPV4地址不够用
IPV6:十六进制
# IP地址分为公网IP和私网IP
公网IP是可以直接被浏览器访问到的 但是私网IP是不可以的
我们所有人的电脑默认使用的都是私网IP
公网IP需要花钱购买并且需要实名认证并备案
很多非法网站都是在国外注册备案
传输层
提供可靠和不可靠的传输机制,TCP、UDP
# PORT协议(端口协议)
端口表示计算机上的程序进程
端口号范围:0~65535
0~1024:系统经常使用的端口号
1024~8000:常用软件端口号
1.同一时间同一台计算机上面端口号不能冲突
2.端口号是动态分配的
IP地址:用于标识全世界独一无二的一台接入互联网的计算机
PORT号:用于标识一台计算机上面的某一个应用程序
IP+PORT:能够标识全世界独一无二的一台计算机上面的某一个应用程序
我们日常生活使用浏览器访问的各个网址其实就是IP+PORT
www.baidu.com 好记
14.215.177.29:80 难记
ip:port
很多常见的服务端都不需要指定端口 只要访问了ip地址内部去会自动映射
域名解析
将好记的地址解析成真正的地址
www.baidu.com 解析 202.108.22.5:80
"""
TCP与UDP协议
TCP协议
# 用户传输协议
# 流式协议、可靠协议
基于TCP协议进行数据交互之前需要做一系列复杂的操作>>>:三次握手四次挥手
'''
三次握手建立链接
四次挥手断开链接
洪水攻击:服务端接收到了大量的syn请求 处于rcvd状态
控制很多台计算机同一时刻去访问服务端 造成服务端瞬间过载瘫痪
'''
UDP协议
# 用户数据报协议
# 丢包协议、不可靠协议
不需要建立双向通道 数据的传输速度快 但是可能会丢失
qq使用的就是UDP协议 所以有时候会产生数据丢失现象
但是我们可以在UDP协议的基础之上做很多额外的扩展来保证数据的安全
TCP 与 UDP对比
# TCP:连接打电话
需连接、较稳定
需要三次握手四次挥手 效率低
# UDP:不连接发短信
不连接、不稳定
不需要建立双向通道 数据的传输速度快
不管有没有准备好,都可以发送,不能保证一定接收到
应用层
HTTP协议 HTTPS协议 FTP协议 自定义协议
面试题
# TCP协议之所以比UDP协议可靠 就是因为有双向通道 对不对?
描述的不够精确 不对!!!
# 为何基于tcp协议的通信比基于udp协议的通信更可靠
TCP协议一定要先建立双向链接 发送消息后会有反馈机制
基于TCP发送的消息会在本地先保存该消息 如果地方确认收到才会删除
没有收到反馈就会一直重发直到确认或超时为止
UDP消息发送后不验证是否到达 会立刻删除内存数据 不会保留
域名解析
域名解析是把域名指向网站空间IP,让人们通过注册的域名可以方便的访问到网站的一种服务
IP地址是网络上标识站点的数字地址,为了方便记忆,采用域名来代替IP地址标识站点地址。域名解析就是域名到IP地址的转换过程。
互联网中的地址就是数字的IP地址,域名解析的作用主要就是为了便于记忆
DNS服务器
DNS是进行域名和与之相对应的IP地址转换的服务器、
DNS中保存了一张域名和和与之相对应的IP地址的表,
以解析消息的域名。
这篇关于网络编程的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!