1. 网络基础
1.1 网络应用程序设计模式
C/S - Client/Server模式
- 优点:1.协议选用灵活 2.可以缓存数据
- 缺点:1.对用户安全构成威胁 2.开发工作量大,调试困难
B/S - Browser/Server模式
- 优点跨平台
- 只能使用http
1.2 网络模型
7层模型-OSI:
- 物理层–双绞线、光纤
- 数据链路层–数据的传输和错误检测
- 网络层–为数据包选择路由
- 传输层–提供端对端(TCP/UDP)
- 会话层–解除或建立与别的节点的联系
- 表示层–数据格式化、代码转换、数据加密
- 应用层–文件传输、电子邮件、文件服务、虚拟终端
四层模型-TCP/IP
- 网络接口层(数据链路层)-以太网帧协议、ARP协议
- 网络层-IP协议
- 传输层-TCP/UDP协议
- 应用层-FTP/HTTP/SSH/telent协议
1.3 IP数据报
4位版本:ipv4、ipv6
8位生存时间(TTL):最多能进过多少跳
32位源IP地址:数据发送端地址
32为目的IP地址:数据接受端地址
1.4 UDP数据报
16位源端口
16位目的端口:
1.5 TCP数据报
- 16位源端口
- 16位目的端口
- 32位序号
- 32位确认序号
- 6个标志位
- 16位滑动窗口
1.6 数据的发送和接收
TCP/TP数据包封装
1.7 TCP/UDP协议
1.7.1 TCP协议
TCP:面向链接的安全的流式传输协议
- mss:最大数据长度
- 连接的时候,进行三次握手
- 数据发送的时候,会进行数据确认
– 数据丢失后,会进行数据重传
1.7.1.1 三次握手建立连接
- 标志位:
- SYN:请求建立连接
- ACK:应答
- 三次握手:
- 第一次握手:
- 客户端
– 携带标志位:SYN
– 随机产生32位序号,可以携带数据- 服务器
– 检测SYN值是否为1- 第二次握手
- 服务器
- ACK标志位+确认序号
– 客户端随机序号+1- 发起一个连接请求
– SYN+32位随机序号- 客户端
– 检测标志位:1
– 校验:确认序号是否正确- 第三次握手
- 客户端
- 发送确认数据包
– ACK+确认序号(服务器的随机需要+1)- 服务器
- 检测:ACK是否位1
- 校验:确认序号是否正确
1.7.1.2 四次挥手断开连接
哪一端主动断开连接都可以
- 标志位:
- FIN:请求断开连接
– 编号:对方最后一次发送ACK的时候携带的确认序号第一次挥手:
- 客户端
- 发送断开连接的请求
– FIN+序号
– ACK+序号- 服务器
- 校验:FIN是否为1
第二次挥手:
- 服务器
- 确认:ACK+序号
1.7.1.3 TCP 状态转换
1.7.2 UDP协议
UDP:面向无连接的不安全的报式传输
- 连接的时候不会握手
- 数据发送出去之后就不管了