个人笔记纪录, 待完善
常见的应用层协议:
超文本传输协议: HTTP, HTTPS;
文本传输: FTP;
电子邮件: SMTP, POP3, IMAP;
动态主机配置: DHCP;
域名系统:DNS;
DNS
域名: 由于IP 不方便记忆且不能直观的表示出所代表的组织名称和性质等, 所以设计出来了域名系统;但是实际上为了访问到正确的主机最终还是需要知道其 IP 地址;
DNS
: Domain Name System 域名系统;
- 利用 DNS系统可以将域名解析成对应的 IP;
- DNS可以基于 UDP 协议, 也可以使用 TCP, 固定占用53端口;
知识点:
客户端首先会访问最近的 DNS 服务器, 一般是 LocalDNS, 客户端自己配置的DNS 服务器;
所有的 DNS 服务器都会记录根域名的 DNS 服务器IP 地址;
所有 DNS 服务器都会记录下一级的DNS 服务器 IP 地址;
全球一共13台 IPv4根域名服务器, 25台 IPv6根域名服务器;
ipconfig/displaydns
: 查看DNS服务器缓存;ipconfig/flushdns
: 清除 DNS 缓存;
IP 地址相关
IP 地址根据分配方式分为静态IP 地址
和 动态 IP 地址
- 静态 IP 地址: 手动设置IP; 试用场景: 不怎么挪动的服务器之类;
- 动态 IP 地址: 从 DHCP 服务器自动获取 IP地址; 适用场景: 移动设备, 无线设备 等;
DHCP: Dynamic Host Configuration Protocol 动态主机配置协议;
DHCP 基于 UDP协议, 客户端是68端口, 服务器是67端口;
DHCP服务器会从 IP池中取出一个 IP 然后出租
给客户端, 到期后回收;
平时家里上网时的路由器可以充当 DHCP 服务器的角色;
DHCP 分配 IP 地址的4个阶段;
- DISCOVER: 发现服务器;发广播包;
- OFFER: 提供租约; 服务器返回可以租用的 IP 地址, 以及期限, 网关, 子网掩码, DNS 等信息; 注意这里可能会有多个服务器返回提供租约;
- REQUEST: 选择租约; 客户端选择一个OFFER,然后发广播进行通知;
-
ACKNOWLEDGE: 被选中的服务器发送ACK 数据包给客户端, 至此 IP分配完毕;
代理服务器
代理服务器: Proxy Server , 本身不产生内容, 处于中间位置转发上下游的请求和响应;
正向代理: 代理的对象是客户端;
- 隐藏客户端身份;
- 绕过防火墙(突破访问限制);
- Internet访问限制;
- 数据过滤
反向代理: 代理的对象是服务器;
- 隐藏服务器的身份;
- 安全防护;
- 负载均衡;
Fiddler, Charles 等工具的抓包原理就是在客户端启动正向代理;
注: WireShark的原理是通过底层驱动拦截网卡的数据;
CDN
CDN: 内容分发网络;利用最最靠近用户的服务器更快更可靠的将图片,视频, 音频等资源(一般是静态资源)传递给用户;
数字签名
生成签名: 由消息的发送者完成, 通过密钥
生成;
验证签名: 由消息接收站完成, 通过公钥
验证;
如果有人篡改了消息内容或者签名内容则验证签名会失败;
数字签名的意义:
- 确认消息的完整性;
- 识别消息是否有被篡改;
- 防止消息发送人否认;
证书
为了验证公钥
的合法性出现了证书;
密码学中的证书一般称为公钥证书
里面包含邮箱,姓名,以及相应的公钥;并由 CA(Certificate Authority)施加数字签名;
CA就是能够认定公钥确实属于此人
并且能够生成数字签名的个人或组织;
各大 CA 的公钥一般都有内置在浏览器或者系统中;
题目
1. 为什么不直接全部使用域名, 还要使用不直观的 IP?
因为一个 IP 只占用4个字节, 而域名一个字母一个直接随随便便就十几个字节无疑增加路由器的负担浪费流量;
2. DHCP 可以跨网段分配 IP 么?
当DHCP 服务器和客户端不在一个网段时, 可以借助 DHCP 中继代理实现跨网段的分配 IP 地址;