DNS的背景
DNS是一整套从域名映射到IP的系统
TCP/IP中使用IP地址和端口号来确定网络上的一台主机的一个程序,但是IP地址不方便记忆,于是人们发明了一种叫主机名的东西,是一个字符串,并且使用hosts文件来描述主机名和IP地址的关系。
IP地址是方便计算机处理的,而域名方便用户记忆操作
DNS系统:
- 一个组织的系统管理机构,维护系统内的每个主机名的IP和主机名的对应关系
- 如果新计算机接入网络,将这个信息注册到数据库中
- 用户输入域名的时候,会自动查询DNS服务器,由DNS服务器检索数据库,得到对应的IP地址
- 至今,我们的计算机上仍然保留了HOSTS文件,在域名解析的过程中仍然会优先查找hosts文件内容(cat /etc/hosts)
域名简介:
主域名是用来识别主机名称和主机所属的组织机构的一种分层结构的名称
www.baidu.com
域名使用.来连接
- com:一级域名,表示这是一个企业域名。同级的还有“net”,“org”
- baidu:二级域名,公司名
- www:只是一种习惯用法
域名服务器:
域名是分层结构,域名服务器也是对应的分层结构
- 每个层的域名上都有自己的域名服务器,最顶层的是根域名服务器
- 每一级域名服务器都知道下级域名服务器的IP地址
- 为了容灾,每一季至少设置俩个或以上的域名服务器
域名解析的过程:
- 输入域名之后,先查找自己主机对应的域名服务器
- 域名服务器先查找自己的数据库中的数据,如果没有,就向上层域名服务器进行查找,依次类推
- 最多回溯到根域名服务器,肯定能找到这个域名对应的IP地址
- 域名服务器自身也会进行一些缓存,把曾经访问果的域名对应的IP地址缓存起来,可以加速查找过程
思考:在浏览器中输入url后会发生哪些事情
- url的组成:协议名+域名+端口号+路径+查询字符串+片段表示符
- 通过DNS域名解析,找到域名对应的IP地址(上述域名解析过程)DNS实际上就是一个域名和IP对应的数据库,IP地址通常都难以记住,但方便计算机操作,而域名方便人们使用,DNS就是让域名和IP地址一一对应
- 建立TCP连接,三次握手
- 发送HTTP请求(客户端向服务器)请求内容包括(请求行:方法+地址+HTTP版本,请求头,请求体)
- 服务器处理请求,并返回http响应报文,响应报文包括(请求行:HTTP版本+状态码+状态码解释)
- 浏览器解析与渲染
- 关闭TCP连接
ICMP
ICMP是一个网络层协议
一个新搭建好的网络往往需要先进行一个简单的测试,来验证网络是否畅通,但是IP协议并不提供可靠传输,如果丢包了,IP协议也不能通知传输层是否丢包以及丢包的原因
ICMP的功能
- 确认IP包是否成功到达目标地址
- 通知发生过程中的IP包被丢失的原因
- ICMP也是基于IP协议工作的,但是它并不是传输层的功能,因此人们仍然把他归类为网络层协议
- ICMP只能搭配IPV4使用,如果是IPV6的情况下,需要是用ICMPV6
ICMP的报文格式:
类型(十进制数):
- 0:回送应答
- 3:目标不可达
- 4:原点抑制
- 5:重定向或改变路由
- 8:会送请求
- 9:路由器公告
- 10:路由器请求
- 11:超时
- 17:地址子网请求
- 18:地址子网应答
ICMP大概分为俩类报文:
- 通知出错报文
- 用于诊断查询
ping命令:
- 注:这里ping的是一个域名而不是url,一个域名可以通过DNS解析成IP地址
- ping命令不光能验证网络的连通性,同时也会统计响应时间和TTL(生存周期)
- ping命令会先发送一个ICMP会送请求给对方
- 对端收到后会返回一个ICMP回送应答
注:有些面试官可能会问,telnet是23端口,ssh是22端口,那么ping的端口是什么?
注意!!!ping没有端口号
ping是基于ICMP,在网络层,而端口号,是传输层的内容,在ICMP中根本就不关注端口号这样的信息