- TCP/IP协议族内容
分层、多协议通信体系,包含四层协议系统,分别是应用层、传输层、网络层、数据链路层。
1.1 数据链路层
实现了 网卡接口 的驱动程序,通过mac地址访问介质,处理数据在物理媒介上的传输。(交换机)
两个常用协议: ARP协议 以及 RARP协议, 实现ip地址与机器物理地址转换(mac地址)。
1.2 网络层
实现数据包的选路以及转发。 通信主机一般由多个中间节点连接的,网络层负责选择中间节点,确定主机之间的通信路径。(路由器)
常用协议:IP协议(网络寻址)以及ICMP协议(用于检测网络连接, 但不是严格网络层协议,使用了IP协议)
1.3 传输层
负责为主机上的应用程序提供端到端通信, 不关心中间过程,只关心通信起始端以及目的端。
常用协议: TCP(可靠、面向连接、基于流)、UDP(不可靠、无连接、基于数据报)
1.4 应用层
为应用程序提供服务。
常用协议:telnet (远程登录)、DNS(域名到ip转换) 、ODPF(Open Shortest Path First)开放最短路由优先,动态更新路由。
程序:ping
数据链路层、网络层、传输层负责处理网络通信细节,必须稳定、高效,在内核空间实现。
- TCP/IP 封装
通过封装使得上层协议使用下层协议提供的服务。应用层在数据发送到物理层之前,将数据沿着协议栈按照从上往下依次传递, 每一层协议都在上层数据基础上加上自己的头部信息,这个过程就叫封装。
TCP报文段、UDP数据报、IP数据报、数据链路帧。其中帧才是最终在物理网络传送的字节序列。
-
分用
与封装相对应的是分用。将物理网络传输的帧沿着协议栈自底向上传递,每一层处理本层负责的头部数据,最终将处理过后的帧交给目标应用程序。
依靠头部信息中的类型字段来实现。 -
DNS协议
http协议是基于tcp连接的,而tcp是通过ip地址来识别访问的,因此需要将域名转化为ip地址。
4.1 域名结构
与IP地址、MAC地址类似,用于唯一性地确定连接在因特网上的主机。
xxx.yyy.zzz.com
com为顶级域名(国家、通用等),然后从右到左分别是二级域名、三级域名、四级域名。
4.2 域名服务器
主要分为: 根域名、顶级域名、主域名、本地域名等
其中本地域名服务器可以看做是默认的域名服务器,客户端收到查询请求之后,首先会请求本地的域名服务器, 可能是手工指定的或者dhcp分配的。如果直连运行商网络,那么就是dhcp分配的运行商服务器的地址。如果中间有路由等,路由本身有dns转发器,那么实际上就是路由器本身地址。
4.3 域名解析
主要分为递归查询以及迭代查询。
浏览器输入网址之后,首先会进行的就是域名解析,然后才是tcp的三次握手的等等。
解析过程如下:
-
查看浏览器自身dns缓存(一分钟)
-
如果没找到,搜索操作系统自身的dns缓存以及hosts文件等
-
如果没找到,浏览器发起dns系统调用,发起域名解析请求,但是过程中会查询路由器缓存以及运行商缓存
-
如果没找到,浏览器发起dns系统调用,向本地配置的首选dns服务器(一般是运行商或者google提供的)发起域名解析请求,这个属于递归请求,dns服务器会提供给浏览器解析结果。
-
运营商dns服务器首先查找缓存,如果找到且没有过期,则解析成功。否则,由运行商服务器发起迭代请求, 首先查找根域的ip地址,然后发起请求。
-
根域返回顶级域名服务器的ip地址,然后运行商服务器向顶级域名服务器发起请求。
-
顶级域名服务器返回主域名服务器的ip地址,然后运行商服务器继续向主域名服务器发起请求。这个时候一般能正确返回域名对应的ip地址,然后返回给浏览器。
-
如果还没有解析成功,此时会查找本地的NetBIOS cache, (保存最近一段时间通讯成功的ip地址以及域名)
-
如果还不成功,最后进行广播查找以及读取MHOSTS文件。
OSI开放网络互连模型
七层模型
应用层 ------- 为应用数据提供服务 -------第七层
表示层 ------- 数据格式转换、加密
会话层 ------- 建立、管理维护会话
传输层 ------- 提供主机之间端到端的连接
网络层 ------- ip选择以及路由选择
数据链路层 ------- 提供介质访问以及链路管理
物理层 ------- 物理层传输比特流 --------- 第一层