通讯协议
网络模型
七层模型
- OSI模型
- 应用层 为应用程序提供服务
- 表示层 数据格式转换
- 会话层 建立 管理 维护会话
- 传输层 最重要 端对端的连接 数据可靠性传输
- 网络层 ip 路由
- 链路层 交换机
- 物理层 物理介质 网线等等
- TCP/IP模型
- 应用层
- 传输层
- 网路层
- 链路层
TCP的3次握手
- 客户端请求建立连接
- 服务端应答 服务端建立连接
- 客户端应答
SYN洪泛攻击
定义
通过网络服务所在的端口发送大量伪造原地址的攻击报文,发送到服务端,造成服务端上的半开连接队列被占满,从而阻止其他用户进行访问。
原理
攻击者客户端利用伪造的IP地址向服务端发出请求(第一次握手),而服务端的响应(第二次握手)的报文将永远发送不到真实的客户端,
服务端在等待客户端的第三次握手(永远都不会有的),
服务端在等待这种半开的连接过程中消耗了资源,如果有成千上万的这种连接,主机资源将被耗尽,从而达到攻击的目的。
解决方案
无效连接监控释放
延缓TCB分配方法
防火墙
TCP的4次挥手
- 客户端发送关闭请求
- 服务端关闭请求
- 服务端发送关闭请求
- 客户端发送关闭
TCP的通讯原理
Socket套接字
TCP用主机的IP地址加上主机上的端口号作为TCP连接的端点,这种端点就叫做套接字(socket)。
TCP缓冲区
每个TCP的Socket的内核中都有一个发送缓冲区和一个接收缓冲区。
阻塞模式
接收端缓冲区为空,接收端调用read方法的线程阻塞。
发送端缓冲区满了或者不够大,发送端调用write方法的线程阻塞。
TCP中的滑动窗口协议——可靠和高效的结合
滑动窗口
- 发送方和接收方都会维护一个数据帧的序列,这个序列被称作窗口。
- 发送方的窗口大小由接收方确认。
目的
- 确保数据不丢失
- 如果发送的数据丢失了可以重新发。
- 控制发送速度
- 控制发送速度,以免接收方的缓存不够大导
- 致溢出,同时控制流量也可以避免网络拥塞。
- 确保数据不丢失
滑动演示:
HTTP协议
1 | //服务端 |
UDP协议
UDP协议更快,但是容易丢包 只管发送,不管有没有送达
1 | //服务端 |