最近学习了有关网络管理的有关知识,所以给也在学习这些知识的童鞋分享一下我的一些经验。
听了这几天课,总结了几个前提。
有关网络的通信均是基于数据传输的,且数据均是二进制格式的流式数据。
在网络中需要把大包分成小包,
每传一个包都需要有三个地址,由内向外为端口号、IP地址、MAC地址。端口号确定应用,IP确定网段,MAC确定广播域中的某个网卡。
OSI模型
-
应用层
- 为应用程序进程提供网络服务(例如,电子邮件、文件传输、视频语音聊天)
- 提供用户身份验证
-
表示层
- 确保接受系统可以读出该数据
- 格式化数据
- 构建数据
- 协商用于应用层的数据传输语法
- 提供加密
-
会话层
- 建立、管理和终止在应用程序之间的会话
-
传输层
- 确保数据传输的可靠性
- 建立、维护和终止虚拟电路
- 通过错误检测和恢复
- 信息流控制来保障可靠性
-
网络层
- 路由数据包
- 选择传递数据的最佳路径
- 支持逻辑寻址和路径选择
-
数据链路层
- 访问介质,访问接口接收数据,进行格式化判断,并进行错误检测
- 定义如何格式或数据以便进行传输以及如何控制对网络的访问
- 支持错误检测
-
物理层
- 二进制传输
- 为启动、维护以及关闭物理链路定义了电气规范、机械规范、过程规范和功能规范
-
应用层 PDU 消 息 message
- 应用层
- 表示层
- 会话层
-
传输层 PDU 数据 段 segment
- TCP协议
- UDP协议
-
网络层 PDU 数据 包 packet
- IP协议
-
网络访问层
- 数据链路层 PDU 数据 帧 frame
- 物理层 PDU 数据 位 bit
-
TCP协议
- 工作在传输层的面向连接协议
- 全双工协议
- 半关闭
- 错误检查
- 将数据打包成段,排序
- 确认机制
- 数据恢复,重传
- 流量控制,滑动窗口
- 拥塞控制,慢启动和拥塞避免算法
- TCP包头
-
- 数据偏移 4位 一位为4字节
- 保留位 6位
-
校验位 6位
-
URG 紧急校验位
- 表示该报文段中发送的数据是否包含紧急数据,后面的紧急指针字段只有当URG=1时才有效
-
ACK 确认校验位
- 表示前面的确认号字段是否有效,TCP规定,建议链接后,ACK必须为1,且为1的TCP报文段称为确认报文段。
-
PSH 立即从缓存区读取数据为位
- 校验位为1表示立即对方应当立即把数据提交给上层应用,不为1则是通常情况
-
RST 错误校验位
- 校验位为1表示链接出现严重错误,必须释放链接,然后重新建立链接。或者说明上次发给主机的数据有问题,主机拒绝响应,带RST标志的TCP报文段称为复位报文段
-
SYN 链接请求校验位
- 校验位为1表示请求时使用,用来同步序号。带SYN标志的TCP报文段称为同步报文段
-
FIN 断开请求校验位
- 校验位为1表示通知对方本端要关闭链接了,标记数据是否发送完毕。带FIN标志的TCP报文段称为结束报文段。
-
URG 紧急校验位
- 窗口 16位 表示现在允许对方发送的数据量
- 校验和 提供额外的可靠性
- 紧急指针 标记紧急数据在数据字段中的位置
-
选项(长度可变) 常见选项
- 最大报文长度
- 窗口扩大
- 时间戳
- 填充 无实意 补齐偏移量位
有限状态机制
客户端
- 工作在网络层,偏上层。
ARP协议 address resolution protocol 地址分辨协议
- 网络层协议
- 一般查看网络是否联通。
- 一般为广播的散播方式
- 运行于OSI网络层
- 面向无连接的协议
- 独立处理数据包
- 分层编址
- 尽力而为传输
- 无数据恢复功能
- 版本 4字节 是IP协议的版本
- 首部长度 4字节 是说明报头长度的
- 区分服务 8字节
- 总长度 16字节 本数据包的总长度
- 标识 16字节
- 标志 3字节 只有后两字节有用
- 片偏移 13字节 显示该数据包的最后一个字节在整个大包中是哪个字节。
- 生存时间 8字节 显示该包在网络中生存多少个路由节点
- 协议 8字节 显示上层协议编号
- 首部校验和 16字节 首部校验
mac目的地址 | mac源地址 | IP源地址 | IP目标地址 | 源端口号 | 目标端口号 | 正文数据 | 校验 |
原创文章,作者:何必呢,如若转载,请注明出处:http://www.178linux.com/85854