25、网络编程
一、互联网通信协议
我们学习网络编程的目的是为了开发C/S架构或者B/S架构的软件
Client-------Server
# C/S架构,由客户端和服务端组成
数据放在服务端和客户端的利与弊
- 服务端统一处理有更好的安全性和稳定性而且升级比较容易,不过服务器负担就增加了。
- 客户端将负担分配到每个用户,从而可以节约服务器资源,安全性和稳定性可能会有一定的问题,但是升级比较麻烦,每个安装的客户端程序都需要升级,另外为了节省网络资源,通过网络传输的数据应该尽量减少!
Browser-------WEB Server-------Database Server
# B/S架构,
- 统一客户端即默认安装用户电脑中的浏览器,访问同种类的网站,具体业务的处理根据相应协议和标准提供通用的服务器程序,在不同的服务器处理。
二、OSI七层协议
我们知道,一个完整的计算机系统是由硬件、操作系统、软件三者组成,一台计算机系统就可以自己跟自己玩了,如果你想和别人一起玩,那就需要用到互联网了。
什么是互联网,互联网的核心技术由一堆协议组成,这个协议叫做OSI协议,按照功能不同,分为七层,但实际上七层只是一个概念,实际上并不存在,所以有人将它划成七层,还有人将它划成五层、四层
1、物理层
物理传输,用物理设备(网线,光纤)连接,传输的是电信号,发送高低电压,高电压对应数字1,低电压对应数字0
2、数据链路层
单纯的电信号0和1没有任何意义,而数据链路层的功能介绍定义了电信号的分组方式,规定了电信号多少位一组,每组是什么意思
2.1、以太网协议
以太网协议ethernet
ethernet规定:一组电信号构成一个数据报,叫做'帧',每一数据帧分成:报头(head)和数据(data)两部分
head包含:(固定18个字节)
发送者/源地址,6个字节
接收者/目标地址,6个字节
数据类型,6个字节
data包含:(最短46字节,最长1500字节)
数据报的具体内容:head长度+data长度=最短64字节,最长1518字节,超过最大限制就分片发送
这就像写信,发送者的地址(源地址)就是你家的地址,接收者地址(目标地址)就是对方的收信地址,你家的路由器就相当于邮局。其实在计算机通信中的源地址和目标地址指的是Mac地址。
2.2、Mac地址
head中包含的源和目标地址由来:ethernet规定接入internet的设备都必须具备网卡,发送端和接收端的地址便是指网卡的地址,即mac地址
mac地址:每块网卡出厂时都被烧制上一个世界唯一的mac地址,长度为48位2进制,通常由12位16进制数表示(前六位是厂商编号,后六位是流水线号)
2.3、广播地址
有了mac地址,同一网络内的两台主机就可以通信了(一台主机通过arp协议获取另外一台主机的mac地址)
ethernet采用最原始的方式,广播的方式进行通信,即计算机通信基本靠吼,具体请百度
3、网络层
有了物理和数据链路层,其实就可以实现互联网通信啦,但是通信范围很小,大概就是一个教室,那如何扩大范围,进行跨局域网通信,这就要经过网络层,网络层实体代表:路由器。
3.1、IP地址
规定网络地址的协议,广泛采用的v4版本即ipv4,范围:0.0.0.0-255.255.255.255
ip地址分为 网络部分:标识子网,主机部分:标识主机
3.2、子网掩码
就是表示子网络特征的一个参数,用于判断任意两个IP地址是否处在同一个子网络
3.3、ARP
ip和mac的对照表
4、传输层
4.1、端口
0--65535,一个应用程序可以监听多个端口,但是一个端口只能属于一个应用程序
应用程序 FTP TFTP TELNET SMTP DNS HTTP SSH MYSQL 熟知端口 21,20 69 23 25 53 80 22 3306 传输层协议 TCP UDP TCP TCP UDP TCP TCP TCP DNS:把网址转换成ip地址
从浏览器发送出去的数据,都是http协议,默认是80端口
4.2、TCP协议:可靠传输(可靠传输如何保证?三次握手,四次挥手)
请求链接(三次握手)
-客户端向服务端发送链接请求 # 第一次
-服务端回复可以建立,并且带着跟客户端建立链接的数据报 # 第二次
-客户端收到后,链接建好了 # 第三次 这个过程后就可以可靠传输数据
断开链接(四次挥手)
-客户端告诉服务端,要断开 # 第一次
-服务端收到,回复ok # 第二次
-服务端可能还有数据在传递,暂时还没断开,需要等数据传完
-服务端告诉客户端,我要断了 # 第三次
-客户端收到,回复ok # 第四次
4.3、UDP协议:不可靠传输
现在基本用不上了,略
5、应用层
http协议,ftp协议,websocket协议