其他重要协议
ICMP协议(网际控制报文协议)
ICMP协议的作用:提高了转发IP数据报和交付成功的机会。(主要是通过发送差错报告报文和询问报文)
1.ICMP报文被封装在IP数据报中发送。
其中:
①:ICMP查错报文有以下五种:
- 终点不可达:如果说主机或者路由器给不能交付数据报给目标地址时,就会给发送该数据包的主机发送终点不可达报文。(具体可以根据ICMP字段分为目的网络不可达、目的主机不可达、目的协议不可达、目的端口不可达、目的网络未知、目的主机未知等等3种错误)(要帮忙转发的路由器没有要转发数据包的目的地址的任何信息,就会发送该不可达报文)
- 源点抑制:路由器或者主机因为拥塞而丢弃数据包时发送的源点抑制报文。(让源点吧数据报发送的速率放慢)
- 时间超过:若要发送的数据报还没到目的主机,此时如果说TTL的值为0了,那么就要发送该报文。(或者目的主机在规定时间内没有收到一个数据报的全部报片时,就会丢弃已经接收的报片,然后返回该报文)
- 参数问题:发送的数据报里面的内容出错了,就发送该报文。
- 改变路由(重定向):选择最优的路径进行。(也就是路由器吧改变路由的报文发送给主机,这下当主机接收后,就知道下次走什么路径是最优的)
②:不能发送差错报文的情况:
- 对ICMP差错报文不能发送ICMP差错报文。
- 对第一个分片的数据报分片的所有后续数据报片都不发送ICMP差错报文。
- 对具有多播地址的数据报不发送ICMP差错报文。
- 对具有特殊地址的数据报不发送ICMP差错报文。
2.常用的ICMP询问报文:
①回送请求和回答:测试目的站是否可达。(源端主机给目的端主机发送ICMP请求报文进行询问,目的主机接收后,必须给源端主机发送ICMP回答报文进行回答,这下源端主机就知道目的主机可以连接成功)
②时间戳请求和回答:进行始终同步和测量时间。(给某个主机发送ICMP时间戳请求报文,让某个主机回答当前的日期和时间)
3.具体的两个命令:
①:ping命令(分组网间探测)
- 测试主机或路由器间的连通性。
- 应用层之间使用网际层的ICMP报文。(不通过运输层的TCP或者UDP)
- 使用ICMP回送请求和回答报文。
如图:
在虚拟机上ping一个百度的服务器。
②:traceroute(跟踪路由)
- 用来测试IP数据报从源端主机到达目的主机要经过那些路由。
- Windows版本:
①:tracert命令。
②:应用层之间使用网际层的ICMP协议。
③:使用ICMP回送请求和回答报文以及差错报告报文。 - Unix版本:
①:traceroute命令。
②:在运输层使用UDP协议。
③:仅使用ICMP差错报告报文。
如图:
如图,是在虚拟机上traceroute百度服务器要经过那些路由,有很多。
原理:通过回送请求报文进行。(一个路由器一个路由器进行,并且每个路由器发送ICMP报文的TTL报文依次从1增加,然后依次增加TTL)
DNS服务(域名系统服务)
1.域名服务器DNS的作用
①:首先我们先使用ping命令,ping一下百度,如下图:
我们ping的是www.baidu.com,但是我们得到的是来自14.215.177.38IP地址的一些连接关系。
②作用:由于在TCP/IP中使用IP地址和端口号来确定网络上的一台主机的一个程序. 但是IP地址不方便记忆。于是人们发明了一种叫主机名的东西, 是一个字符串, 并且使用hosts文件来描述主机名和IP地址的关系。(便于被人们记忆)
2.DNS域名结构:
①:因特网所采用的是层次树状结构的域名结构。
②:域名结构由若干个分量组成,各分量之间用“点”隔开,分别代表不同级别的域名。
- 每级域名是由英文字母和数字组成,不超过63个字符,不区分大小写字母。
- 级别低的域名写在最左边,级别高的顶级域名写在最右边。
- 完整的域名不超过255个字符。
③:域名系统不规定一个域名需要包含多少个下级域名,也不规定每一级域名代表的什么意思。
④:各级的域名由其上级域名管理机构管理,而最高的顶级域名则由因特网名称与数字地址分配机构ICANN进行管理。
3.域名分类如下:
①顶级域名TLD:
- 国家顶级域名nTLD:如cn表示中国,us标识美国等等。
- 通用顶级域名gTLD:常见的有7个如:com(公司企业)、net(网络服务机构)、org(非营利性组织)、int(国际组织)、edu(美国教育结构)、gov(美国政府部门)、mil(美国军事部门)。
- 方向域arpa:用于反向域名解析,即IP地址反向域名解析为域名。
②:国家顶级域名下的注册的二级域名均有该国家自己确定。
③:我国二级域名如下:
- 类别域名:7个:ac(科研机构)、com(工、商等企业)、edu(教育机构)、gov(政府部门)、net(提供网络服务的机构)、mil(军事机构)和org(非营利性组织)。
- 行政区域域名:根据我们国省、自治区、直辖市等划分。
4.域名的IP地址的映射关系必须保存在域名服务器中,供所有其他应用查询。(因为一台域名服务器根本不够,所以DNS使用分布在各地的域名服务器来实现域名到IP地址的转换)
域名服务器的划分:
- 根域名服务器:最高层次的域名服务器。(知道所有顶级域名服务器的域名和IP地址)(通常不直接对域名进行解析,而是返回该域名所属顶级域名的顶级域名服务器的IP地址)
- 顶级域名服务器:管理在该顶级域名服务器注册的所有二级域名。(收到请求时回给出下一级的权限域名服务器的IP地址或者最终结果)
- 权限域名服务器:管理某个区的域名。(每个主机的域名必须在某个权限域名服务器处注册登记,并且其还知道下级域名的服务器地址)
- 本地域名服务器:代理作用,主机发送的DNS请求报文时,会将报文赚发到上述的域名服务器的等级结构中。(也成为默认域名服务器)
5.域名解析的过程
①递归查询:一路从本地域名服务器往上递归经过根域名服务器、顶级域名服务器、权限域名服务器,然后返回。(哪个给了结果就从本地域名服务器返回主机了,如果没有给结果,那么就依次到权限域名服务器)
②迭代查询:由本地域名服务器挨个访问根域名服务器、顶级域名服务器、权限域名服务器,然后返回。(哪个给了结果就从本地域名服务器返回主机了,如果没有给结果,那么就依次到权限域名服务器)
③:为了提高DNS的查询效率并减轻根域名服务器的负荷和减少因特网上的DNS查询报文数量,在域名服务器中广泛的使用了高速缓存。(用来存放最近查询的域名以及从合初获得域名的映射信息的记录)
注意:
- 高速缓存中的域名到IP地址的映射关系并不是永久的,为了保存高速缓存中的内容正确性,域名服务器应为没想内容设置计时器。(删除超过合理时间的项)
- 用户主机中也会有高速缓存。
6.问题:浏览器中输入URL后,会发生什么?
请看该篇:浏览器中输入url后发生的事情
应用层
应用层的作用:
- 满足我们日常需求的网络程序, 都是在应用层。
- 能够根据自己的需求, 设计应用层协议。
- 了解HTTP协议。
- 理解DNS的原理和工作流程。
传输层
传输层的作用:
- 负责数据能够从发送端传输接收端。
- 理解端口号的概念。
- 认识UDP协议, 了解UDP协议的特点。
- 认识TCP协议, 理解TCP协议的可靠性;理解TCP协议的状态转化。
- 掌握TCP的连接管理, 确认应答, 超时重传, 滑动窗口, 流量控制, 拥塞控制, 延迟应答, 捎带应答特性。
- 理解TCP面向字节流, 理解粘包问题和解决方案。
- 能够基于UDP实现可靠传输。
- 理解MTU对UDP/TCP的影响。
网络层
网络层的作用:
- 在复杂的网络环境中确定一个合适的路径。
- 理解IP地址, 理解IP地址和MAC地址的区别。
- 理解IP协议格式。
- 了解网段划分方法。
- 理解如何解决IP数目不足的问题, 掌握网段划分的两种方案. 理解私有IP和公网IP。
- 理解网络层的IP地址路由过程. 理解一个数据包如何跨越网段到达最终目的地。
- 理解IP数据包分包的原因。
- 了解NAT设备的工作原理。
数据链路层
数据链路层的作用:
- 两个设备(同一种数据链路节点)之间进行传递数据。
- 以太网是一种技术标准; 既包含了数据链路层的内容, 也包含了一些物理层的内容。例如: 规定了网络拓扑结构, 访问控制方式, 传输速率等。
- 以太网帧格式。
- 理解mac地址。
- 理解arp协议。
- 理解MTU。