计算机网络基础与网络编程基础
计算机网络基础
软件开发架构
- 1.C\S架构
Client:客户端(可以由提供服务端高度定制客户端)
Server:服务端(提供服务的程序) - 优势:不同公司客户端由不同公司独立开发 可以高度定制客户端功能
- 劣势需要下载
规定了程序的请求逻辑、功能分块
"""
我们使用计算机下载下来的一个个app本质是各大互联网公司的客户端软件
通过这写客户端软件我们就可以体验到各个互联网公式给我们提供的服务
eg:
下在淘宝客户端 打开 体验淘宝服务端提供的购物服务
下载抖音客户端 打开 体验抖音服务端提供的视频服务
ps:一般情况下客户端与服务端交互需要互联网 但是有些不需要(因为服务端与客户端都在一台计算机上)
"""
-
B\S架构
Browser:浏览器(各大浏览器,由浏览器开发提供统一的接口)
Server:服务端(由服务提供者公司开发)
-
优势:不用下载直接访问
-
劣势:无法高度定制化 需要遵守很多规则
"""
浏览器可以充当所有服务端的客户端
ps:B\S架构本质上还是C\S架构
只不过我们客户端不由我们编写,我们只注重与服务端的编写
eg:在浏览器里访问百度页面可以在不同浏览器,
如 Chrome Edge 火狐 360浏览器 QQ浏览器等等
访问同一个百度页面
"""
架构总结:架构发展趋势
ATM:三层架构
选课系统:三种架构
本质也是属于软件开发架构的范畴
软件设计的大方向》》》:统一接口
微信小程序
支付宝小程序
使用规划好的的接口进行开发
网络编程前戏
-
什么是网络编程
基于网络编写代码 能够实现不同计算机数据的远程交互
-
学习网络编程的目的
能够开发cs架构的软件
-
网络编程的起源
""" 最早起源于美国军事领域 想实现计算机之间的数据的交互 最早的时候只能用硬盘拷贝 之后发明了网络编程 """
-
网络编程的必备条件
数据的远程交互
- 早期的电话:电话线
- 早期的大屁股电脑:网线
- 笔记本(laptop)电脑,移动电话:网卡
-
实现数据的远距离交互必备的基础条件是物理连接媒介
OSI七层协议
osi七层协议:规定了所有计算机在远程数据交互的时候必须警告相同的处理流程、在制造过程中必须拥有相同的功能硬件
-
应用层
-
表示层
-
会话层
-
传输层
-
网络称
-
数据链路层
-
物理连接层
常见的整合之后五层或则四层
- 应用层
- 传输层
- 网络层
- 数据链路层 # 4层是数据链路层与物理层合并成为网络接口层
- 物理连接层
接收消息从下往上
发送消息从上往下
OSI七层协议之物理连接层
主要用于确保计算机之间的物理连接媒介 接收数据是(bytes类型、也就是二进制类型)
OSI七层协议之数据链路层
-
规定了电信号的分组方式:电信号只有两种高电位,低电位
-
以太网协议
-
规定了计算机出厂的时候必须由一块网卡 网卡上由一串数字
-
该数字相当于计算机的身份证号码是独一无二的
-
改数字的特征:12位16进制的数据
前六位厂商编号 后六位流水线号
-
该数字也成为:以太网地址/MAC地址
-
网络相关专业名称
计算机之间想要实现数据交互必须要’连接‘到一起
-
交换机
能够将所有连接交换机的计算机彼此互联起来
-
广播
首次查找接入同一交换机的其他计算机 需要朝交换机里每一台主机发送的信号都要进行无条件辅助并转发,所有主机都可以接收到所有信息(不管你是否需要),由于其不用路径选择,所有其网络成本可以很低廉。在数据网络中也允许广播的存在,但其被限制在二层交换机的局域网范围内,禁止广播数据穿过路由器,防止广播数据影响大面积的主机
-
单播
首次被查找的计算机回应查找他的计算机 并附带自己的mac地址 -
广播风暴
接入同一台交换机的多台计算机同时发广播 -
局域网
可以简单的理解为有单个交换机组成的网络
在局域网内可以直接使用mac地址通信
局域网是封闭型的,可以有办公室内的两台计算机组成,也可以有一个公司内的上千台计算机组成 -
广域网
可以简单的理解为范围更大的局域网 -
互联网
有所有局域网,广域网,连接到一起形成的网络 -
路由器
不同的局域网之间计算机是无法直接实现数据交换的 需要路由器连接
OSI七层协议之网络层
IP协议:规定所有接入互联网的计算机都必须有一个IP地址 类似于身份证号
mac地址是物理地址可以看成永远无法修改的
IP地址是动态分配的 不同的场所IP地址是不同的
IP地址的特征:
- IPV4:点分十进制
0.0.0.0-255.255.255.255 一共就有这些43亿多个地址看似多,但是在2019年11月26日,分配完就没了 - IPV6:是冒号分16进制的,可以给地球上每一粒沙尘分一个IP地址
2409:8a1e:912c:7de0:699b:51e1:4a6c:c212 - IP地址可以跨局域网传输
- IP地址是可以用来标识世界上独一无二的一台计算机
OIS七层协议之传输层
-
port协议(端口协议)
用来表示一台计算机上面的某一个应用程序
范围:0-65535
特征:动态分配(类似于酒店房号)
建议:
0-1024- 系统默认使用 80http 443 https 22是ssh 53dns
1024-8000
常见软件端口号5000 flask djongo8000 3389windows远程桌面 3306mysql
8000之后的 8080也是http 8888宝塔
-
URL:同一资源定位符(网址www.baidu.com)
网址本质是IP和端口组成的:36.152.44.96:80
IP+PORT:能够定位全世界独一无二的计算机上面的某一个应用程序 -
域名解析:将网址解析成IP
域名只是与IP创建了对应的关系,但是与端口无关!
端口则要自己确定。 -
我们之所以不直接使用IP+PORT的原因是太难记 所以发明了域名(网址)
TCP与UDP协议
TCP与UDP都是用来规定通信方式的
通信的时候可以随心所欲的聊 也可以遵循一些协议符合要求的聊
想怎么聊怎么聊:文字图片视频
遵循协议:开头带尊称 首行空两格遵循协议聊
ps:不遵循上述协议也可以通信 只不过遵循了更合规合法合理
-
TCP协议
三次握手建立链接
- TCP协议也称为可靠协议(数据不容易丢失)
造成数据不容易丢失的原因不是因为有双向通道 而是因为有反馈机制
给对方发消息之后会保留一个副本 直到对方回应消息收到后才会删除
否则会在一定时间内反复发送 - 洪水攻击
同一时间有大量的客户端请求建立链接 会导致服务端一致处于SYN_RCVD状态 - 服务端如何区分客户端建立链接的请求
可以对请求做唯一标识
四次挥手断链接
- 四次不能合并为三次
因为中间需要确认消息是否发完(TIME_WAIT)
- TCP协议也称为可靠协议(数据不容易丢失)
-
UDP协议
也称之为数据报协议、不可靠协议
早期的QQ使用的使用的纯生的(没有添加任何额外功能)UDP协议
现在的QQ自己添加了很多技术和功能
使用UDP的原因就是因为很简单 快捷 粗暴 只要指定对方的地址就可以发消息了
面试题
# TCP协议之所以比UDP协议可靠 ,就是因为有双向通道 对不对?
不对
TCP协议之所以比UDP协议可靠 原因在于TCP协议发送消息有反馈机制
基于TCP发送的消息会在本地先保存该消息 如果地方确认收到才会删除
否则在一定的时间内会频繁的多次发送知道确认或者超时为止
UDP协议发送数据之后会立刻删除内存数据 不会保留
应用层
应用层相当于是程序员自己写的应用 里面的协议非常多
常见的有 HTTP HTTPS FTP SSH