1.1 体系结构
- 数据链路层->网络层->传输层->应用层
1.1.1 数据链路层
- 实现网卡接口的网络驱动程序。
- 处理数据在物理媒介上的传输。
- 为上层隐藏了物理网络的不同电气特性。
1.1.2 网络层
- 实现数据包的选路和转发,因为网络是网状的,从A到B不止有一条路,关键是如何选择路。
1.1.3 传输层
- 为应用程序提供端到端的通信,只用关心通信传输的起始端和目的端。
1.1.4 应用层
- 负责处理应用程序的逻辑
- 在用户空间实现
1.2 封装
- 上层协议使用下层协议提供的服务,就需要用到封装
- 应用层到物理网络,每一层加上自己的头部信息,或进行信息的拆分(数据链路层每次传输数据大小有限),以实现该层的功能。
- 发送:从上到下依次添加头部,头部的添加使得下层为上层屏蔽了传输细节,上层协议在使用时不用考虑下层使用的是什么协议。
- 接收:从下到上依次剥离头部,获取原本信息。
1.3 分用(这里的“分”应该理解为“分解”)
- 报文到达目的主机时,各层协议从下到上依次处理帧中本层的信息,并最后提交到目标应用层序。
1.4 测试网络
1.5 ARP协议工作原理
- Address Resolution Protocol 地址解析协议
- 任意网络层地址到任意物理地址的转换,例如IP地址到MAC地址。
1.5.1 报文格式:
1.5.2 ARP高速缓存查看和修改
- 用来避免重复的ARP请求,提高发包速度。
- arp 命令可以用来查看和修改linux下的arp高速缓存
- 查看
arp -a
- 删除
arp -d xxx.xxx.xxx.xxx
- 添加
arp -s xxx.xxx.xxx.xxx
1.5.3 使用tcpdump观察ARP通信过程
- tcpdump的抓包原理:tcpdump抓取的是
以太网帧
- 略
1.6 DNS工作原理
- 实现机器域名和IP地址之间的映射
- 域名好记IP不好记
1.6.1 DNS查询和应答报文详解
- 报文
- 注意标识和标志是不一样的
- 16位标志字段
- 略
1.6.2 linux访问DNS服务器
- DNS服务器IP地址:
/etc/resolv.conf
文件存放DNS服务器IP地址 host -t A www.baidu.com
向DNS服务器询问IP地址- host命令使用DNS协议和DNS服务器通信
1.6.3 使用tcpdump观察DNS通信过程
略
1.7 socket和TCP/IP协议族关系
- 数据链路层、网络层、传输层协议是在内核中实现的,操作系统有一组调用,来使得应用程序可以访问这些协议提供的服务,实现这组调用的API目前用的基本都是socket。