网络协议
1. C/S、B/S 架构
C:client端 B:browse浏览器 S:server 端
1.1 C/S 架构:
基于客户端与服务端之间的通信。 如QQ、抖音等。
优点:满足个性化设置,响应速度快。
缺点:开发成本、维护成本高,占用空间,用户固定。
1.2 B/S 架构:
基于浏览器与服务端之间的通信。 如360、谷歌浏览器。
优点:开发、维护成本低,占用空间相对低,用户不固定。
缺点:功能单一,没有个性化设置,响应速度慢一些。
2. 网络通信原理
1. 两台计算机要有一堆连接介质连接;
2. 需找到对方计算机软件位置;
3. 遵循互联网通信协议。
3. OSI七层协议(TCP/IP五层):
结构:应用层(应用层、表示层、会话层)、传输层、网路层、数据链路层、物理层
3.1 物理层:
介质:光缆、双绞线(网线)、无线电波等。
主要是基于电器特性发送高低电信号(1,0) 也叫比特流 010101110...
3.2 数据链路层:
对电信号(比特流)进行分组,定义了分组方式。
3.2.1 以太网协议:
对比特流进行合理的分组。按每一帧分割。
一组电信号(比特流)数据构成一个数据报,叫做“帧”。
每一个数据帧:由报头head和数据data组成。
每帧最短64字节,最长1518字节,超过就会分片发送。
head | data |
---|---|
固定18个字节(源地址6字节、目标地址6字节、数据类型6字节) | 46—1500字节 |
3.2.2 mac地址:(物理地址)
计算机上网卡上标注的地址(计算机地址)。
12位16进制数组成表示(前六位是厂家编号,后六位是流水线号)。
每帧的结构:源mac地址 目标mac地址 数据类型 | data
3.2.3 计算机通信方式:
同一个局域网内,通过广播的形式通信。 局域网所有的计算机都能接受消息、分析消息。是否是找'我'(mac地址)的,不是就会丢弃。
只能在局域网内进行广播。范围太大,会造成广播风暴,效率极低。
3.2.4 交互机的mac地址学习功能:
前提:知道目标的mac地址。 在同一局域网下,第一次发消息是以广播形式,当交互机的接口记录到每个计算机的mac地址后,再发消息就是单播模式。
单播:是一个单个的发送者和一个接受者直接通过网络进行的通信。
广播:“一对所有”的通讯模式。
3.3 网络层:
互联网是由一个个彼此隔离的小的局域网组成的。
功能:引入一套新的地址用来区分不同的广播域/子网,这套地址即网络地址。
3.3.1 IP协议
能够确定局域网(子网)的位置。
规定网络地址的协议叫Ip协议,它定义的地址称为IP地址,广泛采用IPV4,它规定网络地址由32位2进制表示。 范围为:0.0.0.0 ~255.255.255.255
一个IP地址通常写成 四段十进制 , 如:192.168.14.144
IP地址分为两部分: 网路部分:标识子网
主机部分: 标识主机
子网掩码:表示子网络特征的参数,中国是C类子网掩码:255.255.255.0
IP地址与子网掩码的二进制码分别进行AND(与)运算,就可判断两个IP地址是否在同一局域网(子网、网段)下。
192.168.14.0 网关地址被占用
192.168.14.255 广播地址被占用
以上三个都属于192.168.14.0的局域网,一个局域网可连254台计算机。
3.3.2 ARP协议
在实际情况中,我们无法知道目标的mac地址,因此需要通过一定的方法获取。
ARP协议可以从对方的IP地址获取到对方的mac地址 。
ARP协议功能:广播的方式发送数据包,获取目标主机的mac地址。
源mac地址 | 目标mac地址 | 源IP地址 | 目标IP地址 | 数据部分 | |
---|---|---|---|---|---|
发送端 | 发送端mac | FF:FF:FF:FF:FF:FF | 192.168.14.144 | 192.168.14.20 | data |
第一次发消息:发送到交互机——>路由器:广播形式发出。 目标计算机接收到信息时,会返回消息,将自己的mac地址传回。
3.4 传输层
端口协议:能够确定软件在计算机的位置。
有65535个端口;0~1023操作系统专门使用的端口; 3306是数据库端口; 自己开发软件都是8080以后的端口号。
3.4.1 UDP协议(User Datagram Protocol):
用户数据报协议:不可靠的、无连接的传输协议,传输效率高、面向数据包,尽最大努力服务,无拥塞控制。应用:域名系统(DNS),视频流,QQ, 微信。
3.4.2 TCP协议 (Transmission Control Protocol)
可靠的、面向连接的协议、流式协议,传输效率低全双工通信,基于字节流的传输层的通信协议。应用:浏览器、文件传输等。
3.4.3 TCP协议的三次握手和四次挥手
- 建立连接(三次握手)
syn: 请求 seq :序列号
TCP三次握手的过程如下:
- 客户端发送SYN(SEQ=x)报文给服务器端,进入SYN_SEND状态。
- 服务器端收到SYN报文,回应一个SYN(SEQ=x)和 ACK(ACK=x+1)报文,进入SYN_RECV状态。
- 客户端收到服务器端的SYN报文,回应一个ACK(ACK=x+1)报文,进入Established(连接)状态。
三次握手完成,TCP客户端和服务器端成功地建立连接,可以开始传输数据了。
服务端可以将请求与确认同时传给客户端。
- 断开连接(四次挥手)
客户端发送服务端数据时,在数据传输完成后,会马上发出fin=1的请求,主动请求断开连接。但此时,服务端可能还在给客户端传输数据,因此不能同时断开,需服务端在传输结束后,再次请求断开连接。所有共有4次挥手。
TCP四次挥手的过程如下:
建立一个连接需要三次握手,而终止一个连接要经过四次握手,这是由TCP的半关闭(half-close)造成的。
- 客户端的应用进程首先调用close,称该端执行“主动关闭”(active close)。客户端的TCP会发送一个FIN(fin=1,seq=y)分节,表示数据发送完毕。
- 接收到这个FIN的服务端端执行 “被动关闭”(passive close),这个FIN由TCP确认,并返回一个ACK(ack=1+y),断开一个通道连接。
注意:FIN的接收也作为一个文件结束符(end-of-file)传递给接收端应用进程,放在已排队等候该应用进程接收的任何其他数据之后,
因为,FIN的接收意味着接收端应用进程在相应连接上再无额外数据可接收。 - 一段时间后服务端也无数据可发时,服务端的应用进程会调用close关闭它的套接字。这导致它的TCP也发送一个FIN(fin=1,seq=y)分节。
- 接收到这个最终FIN的客户端,它的TCP会确认这个FIN,返回一个ACK(ack=1+y),断开另一个通道。
每个方向都需要一个FIN和一个ACK,因此需要4次。
syn洪水攻击:制造大量的假的无效的IP请求服务器,致使正常的IP访问不了服务器。
3.5 应用层
自己定义的协议。
应用层功能:规定应用程序的数据格式。
TCP协议可以为各种各样的程序传递数据,比如Email、WWW、FTP等等。那么,必须有不同协议规定电子邮件、网页、FTP数据的格式,这些应用程序协议就构成了”应用层”。
广播(局域网内)+ mac地址(计算机位置)+ IP(局域网位置)+ 端口(软件在计算机的位置)
有了以上四个参数,就可以确定任何一台计算机的软件的位置。
扩展
路由器:
外网(公网)IP:真正能够访问的地址;
内网(局域网)IP:都是虚拟的IP的,由DHCP协议:路由器自动分配IP地址、网关等。
DNS服务器:
域名解析(将网址解析成IP地址以及相应的端口)。
例:描述访问JD网站流程的步骤:
你的电脑输入"www.JD.com"网址,以单播的方式传到交互机,再以单播方式传到路由器,路由器将网址传给DNS服务器进行域名解析,然后将IP地址、接口等信息返回给路由器;路由器会根据据IP地址进行判断。
如果是同一个局域网,则以广播或者单播的形式访问到目标服务器的软件上。
如果不是同一局域网,会经过NPI:IP置换技术,将本机的IP地址换成路由器的IP地址,然后经过路由协议,选取最优的路线;找到目标路由,再以广播或者单播的形式访问到目标服务器的软件上(也可通过端口映射计算,能够直接连接到目标交换机上)。