网络编程
一、软件开发架构
-
C/S架构:客户端与服务器端架构
- C就是Client:客户端
- S就是Server:服务端
客户端一般指客户端应用程序exe,程序需要先安装后,才能运行在用户的电脑上,对用户的电脑操作系统环境依赖很大
比如:微信客户端、QQ客户端等
- 优点
- 软件的使用稳定
- 节省网络资源
- 缺点
- 安装麻烦,用户体验差
- 软件的每一次更新,用户都需要重新下载或更新版本
-
B/S架构:浏览器端与服务器端架构
- B就是Browser:浏览器端
- S就是Server:服务器端
Browser浏览器端,其实也是客户端,只是这个客户端并不需要大家去装什么应用程序,只需要在浏览器上通过HTTP请求服务器端相关的资源(网页资源),客户端Browser浏览器就能进行增删改查
比如:淘宝网页版、京东网页版等
- 优点
- 软件的使用方便
- 无须跟着软件的更新去下载
- 缺点
- 如果网络不稳定,软件的使用就不稳定
二、互联网协议
计算机与计算机之间通信
- 语言是人与人之间沟通的介质
- 协议是计算机与计算机之间沟通的介质
互联网协议按照功能 不同分为OSI七层或TCP/IP五层或TCP/IP四层
这七层协议从下往上记会比较好记
连接通信
- 交换机:所有连接了同一个交换机的电脑彼此之间都是互联的
- 三层交换机:既有叫交换机功能,又具有路由器功能
- 四层交换机:能够根据你走的是什么协议对应到对应的应用
每层常见运行协议
-
物理层
物理连接介质,传递电信号
电信号就是(01010101101010101)
问题:无法获取具体数据内容,将电信号数据扔给数据链路层
-
数据链路层
物理层接收到一长串0101010如何切分取值,这个是数据链路层里面的以太网协议
以太网协议:
- 它规定了0101的二进制电信号的分组方式
- head: 18个字节,划分3组6位字节
- 6:发送者
- 6:接收者
- 6:数据类型
- data: 电信号具体的数据类型
- head: 18个字节,划分3组6位字节
- 但凡接入互联网的机器,都需要一块网卡
- 每一块网卡都会有一串世界上独一无二的数字
- 12位16进制的数字(mac地址)
- 前六位:厂商编号
- 后六位:流水线号
- mac地址的作用
- 标识全世界上一台独一无二的计算机
- 以太网协议的工作方式
- 单播与广播
- 缺点
- 广播风暴
- 只能在局域网内实现通信,无法跨局域网实现通信
- 它规定了0101的二进制电信号的分组方式
-
网络层
规定了计算机都必须有一个IP地址
- IP地址(IP协议)
- 点分十进制的数字组成(192.168.1.1)
- 最小范围:0.0.0.0
- 最大范围:255.255.255.255
- IP的版本
- IPv4和IPv6为了兼容更多的计算机
- IP地址的作用
- IP协议可以跨局域网传输
- 能够唯一标识互联网中独一无二的一台机器
- mac地址和IP地址
- 标识全世界某一个局域网内的某一台计算机
- IP地址(IP协议)
-
传输层
TCP和UDP协议都是基于端口工作的协议
-
TCP协议
-
TCP协议建立双向通道
-
三次握手,建立连接
- 客户端向服务端发送建立连接的请求
- 服务端返回收到请求的信息给客户端,并且发送往客户端建立连接的请求
- 客户端接收到服务端发来的额请求,返回接收成功给服务端,完成双向连接
客户向服务端发送请求,请求建立连接
服务端同客户端的请求,并同时向客户端发送建立
连接的请求,最后客户端同意后建立 双向连接
-
反馈机制
- 客户端往服务端发送请求,服务端必须返回响应
- 告诉客户端收到请求了,并且将服务端的数据一并返回给客户端
- C---S: 一次请求,必须有一次响应
- 缺点
- 洪水攻击:指的是通过伪造大量的请求,往对方服务器发送请求,导致对方服务器响应跟不上,以至于瘫痪。
- 半连接池listen:限制用户在同一个时间段的访问量
-
四次挥手,断开连接
- 客户端向服务端发送断开连接的请求
- 服务端返回收到的请求的信息给客户端
- 服务端确认所有数据发送完成以后,再发送同意断开连接的请求给客户端
- 客户端返回收到断开连接的请求,给服务端
主要是软件与软件之间进行通信
port端口:能够标识一台机器上的某个程序
IP:能够查到全世界独一无二的计算机
IP + port:能够确定全世界范围内一台计算机的某个程序
-
-
UDP协议
- 称之为数据包协议
- 特点
- 不需要建立连接
- 不需要知道对方是否收到
- 优点
- 传输速度快
- 能支持并发
- 不会黏包
- 缺点
- 数据不安全,容易丢失
-
应用层
HTTP协议
FTP协议