计算机网络三:知识汇总

体系结构

  • 分类

    • IP四层模型:应用层 传输层 网络层 网络接口层
    • TCP/IP五层模型:应用层 传输层 网络层 数据链路层 物理层
    • OSI七层模型:应用层 表示层 会话层 传输层 网络层 数据链路层 物理层
  • 五层协议体系结构

    1. 应用层
      * 应用层的任务是通过应用进程间的交互来完成特定网络应用。应用层协议定义的是应用进程间的通信和交互的规则。对于不同的网络应用需要不同的应用层协议。在互联网中应用层协议很多,如域名系统DNS,支持万维网应用的 HTTP协议,支持电子邮件的 SMTP协议等等。我们把应用层交互的数据单元称为报文
      * 包含的协议:DNS、HTTP、WWW
    2. 运输层
      * 运输层的主要任务就是负责向两台主机进程之间的通信提供通用的数据传输服务。应用进程利用该服务传送应用层报文。“通用的”是指并不针对某一个特定的网络应用,而是多种应用可以使用同一个运输层服务。由于一台主机可同时运行多个线程,因此运输层有复用和分用的功能。所谓复用就是指多个应用层进程可同时使用下面运输层的服务,分用和复用相反,是运输层把收到的信息分别交付上面应用层中的相应进程
      * 包含的协议:TCP、UDP
      * 重要设备:网关
    3. 网络层
      * 在计算机网络中进行通信的两个计算机之间可能会经过很多个数据链路,也可能还要经过很多通信子网。网络层的任务就是选择合适的网间路由和交换结点,确保数据及时传送。 在发送数据时,网络层把运输层产生的报文段或用户数据报封装成分组和包进行传送。在TCP/IP体系结构中,由于网络层使用IP协议,因此分组也叫IP数据报,简称数据报
      * 网络层的目的是实现两个主机系统之间的数据透明传送
      * 包含的协议:IP协议、ICMP协议、ARP协议、RARP协议、OSPF协议
      * 重要设备:路由器
    4. 数据链路层
      * 数据链路层通常简称为链路层。两台主机之间的数据传输,总是在一段一段的链路上传送的,这就需要使用专门的链路层的协议。在两个相邻节点之间传送数据时,数据链路层将网络层交下来的IP数据报组装成帧,在两个相邻节点间的链路上传送帧。每一帧包括数据和必要的控制信息(如同步信息,地址信息,差错控制等)
      * 数据链路层在物理层提供的服务的基础上向网络层提供服务,其最基本的服务是将源自网络层来的数据可靠地传输到相邻节点的目标机网络层
      * 该层的作用包括:物理地址寻址、数据的成帧、流量控制、数据的检错、重发等
      * 包含的协议:PPP、VLAN
      * 重要设备:网桥、交换机
    5. 物理层
      * 在物理层上所传送的数据单位是比特。 物理层的作用是实现相邻计算机节点之间比特流的透明传送,尽可能屏蔽掉具体传输介质和物理设备的差异。 使其上面的数据链路层不必考虑网络的具体传输介质是什么。“透明传送比特流”表示经实际电路传送后的比特流没有发生变化,对传送的比特流来说,这个电路好像是看不见的
      * 该层为上层协议提供了一个传输数据的可靠的物理媒体,即物理层确保原始的数据可在各种物理媒体上传输
      * 重要设备:中继器、集线器

从在浏览器中输入url地址到页面加载经历了什么?

  • 总体过程为:
    1. DNS解析
    * DNS解析的过程就是寻找哪台机器上有你需要资源的过程。互联网上每一台计算机的唯一标识是它的IP地址。输入的url地址是域名,DNS解析就是查找域名对应的IP地址(即DNS查询的过程)
    2. TCP连接
    * HTTP协议是使用TCP作为其传输层协议的
    3. 发送HTTP请求
    * 构建HTTP请求报文并通过TCP协议中发送到服务器指定端口(HTTP协议80/8080, HTTPS协议443)
    4. 服务器处理请求并返回HTTP报文
    * 对TCP连接进行处理,对HTTP协议进行解析,并按照报文格式进一步封装成HTTP Request对象,供上层使用
    5. 浏览器解析渲染页面
    6. HTTP断开连接

  • 涉及到的协议有:
    * DNS:域名解析协议,获取域名对应的IP
    * TCP:传输控制协议,与服务器建立TCP连接
    * IP:网际互连协议,建立TCP协议时,需要发送数据,发送数据在网络层使用IP协议
    * OPSF:路由协议,IP数据包在路由器之间,路由选择使用OPSF协议
    * ARP:地址解析协议,路由器在与服务器通信时,需要使用ARP协议将IP地址转换为MAC地址(物理地址)
    * HTTP:超文本传输协议,在TCP建立连接完成后,使用HTTP协议访问网页

  • 详细链接:

各种协议

TCP/IP协议
* TCP/IP协议是一个协议簇,里面包含很多协议,之所以命名为TCP/IP协议,因为TCP/IP协议是两个很重要的协议,就用他两命名了
* TCP/IP协议集包括应用层,传输层,网络层,网络访问层
	* 应用层:超文本传输协议HTTP、简单文件传输协议TFTP、远程登录协议Telnet、简单网络管理协议SNMP、域名系统协议DNS
	* 网络层:Internet协议IP、Internet控制信息协议ICMP、地址解析协议ARP、反向地址解析协议RARP
IP协议
  1. 概念:网络之间互连的协议,是为计算机网络相互连接进行通信而设计的协议
  2. IP地址的版本有IPv4和IPv6
    * IPv4:十进制、二进制(点分)
    * IPv6:零压缩和还原零压缩
  3. IP地址的分类
    * A类地址:以0开头(二进制表示时),第一个字节范围1~126(0000 0001~0111 1110),网络号8位,主机号24位,(1.0.0.0~126.255.255.255)
    * B类地址:以10开头(二进制表示时),第一个字节范围128191,网络号16位,主机号16位,(128.0.0.0191.255.255.255)
    * C类地址:以110开头(二进制表示时),第一个字节范围192223,网络号24位,主机号8位,(192.0.0.0223.255.255.255)
    * D类地址:以1110开头(二进制表示时),第一个字节范围224239,作为多播使用,(224.0.0.0239.255.255.255)
    * E类地址:保留
ARP协议
* 概念:地址解析协议,是根据IP地址获取物理地址的一个TCP/IP协议。主机发送信息时将包含目标IP地址的ARP请求广播到网络上的所有主机,并接收返回消息,以此确定目标的物理地址;收到返回消息后将该IP地址和物理地址存入本机ARP缓存中并保留一定时间,下次请求时直接查询ARP缓存以节约资源
* 工作流程:
	1. 每个主机在自己的ARP缓冲区中建立一个ARP列表,以表示IP地址和MAC地址之间的对应关系
	2. 当源主机要发送数据时,首先检查ARP列表中是否有对应IP地址的目的主机的MAC地址,如果有,则直接发送数据,如果没有,就向本网段的所有主机发送ARP数据包,该数据包包括的内容有:源主机IP地址,源主机MAC地址,目的主机IP地址
	3. 当本网络的所有主机收到该ARP数据包时,首先检查数据包中的IP地址是否是自己的IP地址,如果不是,则忽略该数据包,如果是,则首先从数据包中取出源主机的IP和MAC地址写入ARP列表,如果已经存在,则覆盖,然后将自己的MAC地址写入ARP响应包中,告诉源主机自己是它想要找的MAC地址
	4. 源主机收到ARP响应包后,将目的主机的IP和MAC地址写入ARP列表,并利用此信息发送数据。如果源主机一直没有收到ARP响应数据包,表示ARP查询失败
RARP协议
* 概念:逆地址解析协议,逆地址解析协议。局域网中有一台主机只知道物理地址而不知道IP地址,那么可以通过RARP协议发出征求自身IP地址的广播请求,然后由RARP服务器负责回答
* 工作流程:
	1. 给主机发送一个本地的RARP广播,在此广播包中,声明自己的MAC地址并且请求任何收到此请求的RARP服务器分配一个IP地址
	2. 本地网段上的RARP服务器收到此请求后,检查其RARP列表,查找该MAC地址对应的IP地址
	3. 如果存在,RARP服务器就给源主机发送一个响应数据包并将此IP地址提供给对方主机使用
	4. 如果不存在,RARP服务器对此不做任何的响应
	5. 源主机收到从RARP服务器的响应信息,就利用得到的IP地址进行通讯;如果一直没有收到RARP服务器的响应信息,表示初始化失败
DNS协议
* 概念:域名解析协议,用来将域名转换为IP地址(也可以将IP地址转换为相应的域名地址):<https://blog.csdn.net/baidu_37964071/article/details/80500825>

* 说明:
	1. TCP/IP中使用的是IP地址和端口号来确定网络上某一台主机上的某一个程序。不用域名来直接进行通信的原因:IP地址是固定长度的,IPv4是32位,IPv6是128位,而域名是不固定长度的,不便于计算机处理
	2. IP地址对于用户来说不方便记忆,但域名便于用户使用,例如www.baidu.com这是百度的域名
	3. 总结一点就是IP地址是面向主机的,而域名则是面向用户的

* DNS:域名系统,是因特网的一项核心服务,它作为可以将域名和IP地址相互映射的一个分布式数据库,能够使人更方便的访问互联网,而不用去记住能够被机器直接读取的IP数串
	1. 一个组织的系统管理机构, 维护系统内的每个主机的IP和主机名的对应关系
	2. 如果新计算机接入网络,将这个信息注册到数据库中
	3. 用户输入域名的时候,会自动查询DNS服务器,由DNS服务器检索数据库,得到对应的IP地址

* 域名结构:
	1. 域名系统必须要保持唯一性
	2. 为了达到唯一性的目的,因特网在命名的时候采用了层次结构的命名方法
	3. 域名服务主要是基于UDP实现的,服务器的端口号为53
	4. 例:xxx.yyy.zzz.com  从右边的com是顶级域名,到左依次是:二级域名,三级域名,四级域名

* 域名解析过程(大体):
	1. 输入域名后, 先查找自己主机对应的域名服务器,域名服务器先查找自己的数据库中的数据
	2. 如果没有, 就向上级域名服务器进行查找, 依次类推
	3. 最多回溯到根域名服务器, 肯定能找到这个域名的IP地址
	4. 域名服务器自身也会进行一些缓存, 把曾经访问过的域名和对应的IP地址缓存起来, 可以加速查找过程

* 域名解析过程(详细):
	1. 主机先向本地域名服务器进行递归查询
	2. 本地域名服务器采用迭代查询,向一个根域名服务器进行查询
	3. 根域名服务器告诉本地域名服务器,下一次应该查询的顶级域名服务器的IP地址
	4. 本地域名服务器向顶级域名服务器进行查询
	5. 顶级域名服务器告诉本地域名服务器,下一步查询权限服务器的IP地址
	6. 本地域名服务器向权限服务器进行查询
	7. 权限服务器告诉本地域名服务器所查询的主机的IP地址
	8. 本地域名服务器最后把查询结果告诉主机

* DNS查询过程:
	1. 当客户机提出查询请求时,首先在本地计算机的缓存中查找,如果在本地无法查询信息,则将查询请求发给DNS服务器
	2. 首先客户机将域名查询请求发送到本地DNS服务器,当本地DNS服务器接到查询后,首先在该服务器管理的区域的记录中查找,如果找到该记录,则进行此记录进行解析,如果没有区域信息可以满足查询要求,服务器在本地缓存中查找
	3. 如果本地服务器不能在本地找到客户机查询的信息,将客户机请求发送到根域名DNS服务器
	4. 根域名服务器负责解析客户机请求的根域名部分,它将包含下一级域名信息的DNS服务器地址,返回给客户机的DNS服务器地址
	5. 客户机的DNS服务器利用根域名服务器解析的地址访问下一级DNS服务器,得到再下一级域名的DNS服务器地址
	6. 按照上述递归方法逐级接近查询目标,最后在有目标域名的DNS服务器上找到相应IP地址信息
	7. 客户机的本地DNS服务器将递归查询结构返回客户机
	8. 客户机利用从本地DNS服务器查询得到的IP访问目标主机,就完成了一个解析过程
	9. 同时客户机本地DNS服务器更新其缓存表,客户机也更新期缓存表,方便以后查询

* 递归查询和迭代查询的解释
	1. 递归查询:本机向本地域名服务器发出一次查询请求,就静待最终的结果。如果本地域名服务器无法解析,自己会以DNS客户机的身份向其它域名服务器查询,直到得到最终的IP地址告诉本机
	2. 迭代查询:本地域名服务器向根域名服务器查询,根域名服务器告诉它下一步到哪里去查询,然后它再去查,每次它都是以客户机的身份去各个服务器查询
	3. 通俗地说,递归就是把一件事情交给别人,如果事情没有办完,哪怕已经办了很多,都不要把结果告诉我,我要的是你的最终结果,而不是中间结果;如果你没办完,请你找别人办完。迭代则是我交给你一件事,你能办多少就告诉我你办了多少,然后剩下的事情就由我来办.递归查询就好比是我问A同学一个问题,他不知道,于是他就去问B同学,如果B知道,就告诉A,A再告诉我结果,如果B也不知道,那么就继续向C问,知道A知道答案,告诉我,最终也是A和我直接交互。迭代查询就好比我问A同学问题,A不知道,但是A告诉我,B知道,你去问B吧,于是B告诉了我答案,这就是与上面递归的区别
	4. 查询过程中,递归查询和迭代查询可能会都使用,客户和服务器之间采用递归查询,服务器之间采用迭代查询,可能会多次迭代.迭代查询的逻辑顺序按照域名系统的域名结构中的层次去查询

* DNS优化
	1. 问题:一个DNS查询在没有缓存的情况下会有6步,这将是一个耗时的过程,如果DNS 查询时间过长,甚至会影响到用户体验
	2. 解决方法:缓存。DNS存在着多级缓存,从离浏览器的距离排序的话,有以下几种: 浏览器缓存,系统缓存,路由器缓存,IPS服务器缓存,根域名服务器缓存,顶级域名服务器缓存,主域名服务器缓存。
		* Capacity:缓存记录条数
		* timeout:缓存时间

* DNS负载均衡
	* 原理:
		1. 在DNS系统中有一个比较重要的的资源类型叫做主机记录也称为A记录,A记录是用于名称解析的重要记录,它将特定的主机名映射到对应主机的IP地址上。
		2. 在DNS服务器中应该配置了多个A记录,即一个域名对应多个IP地址
		3. 每次域名解析请求都会根据对应的负载均衡算法计算出一个不同的IP地址并返回,这样A记录中配置多个服务器就可以构成一个集群,并可以实现负载均衡

	* DNS域名解析负载均衡的优点:
		1. 将负载均衡的工作交给DNS,省去了网站管理维护负载均衡服务器的麻烦
		2. 技术实现比较灵活、方便,简单易行,成本低,使用于大多数TCP/IP应用
		3. 对于部署在服务器上的应用来说不需要进行任何的代码修改即可实现不同机器上的应用访问
		4. 服务器可以位于互联网的任意位置
		5. 同时许多DNS还支持基于地理位置的域名解析,即会将域名解析成距离用户地理最近的一个服务器地址,这样就可以加速用户访问,改善性能
	
	* DNS域名解析负载均衡的缺点:
		1. 目前的DNS是多级解析的,每一级DNS都可能缓存A记录,当某台服务器下线之后,即使修改了A记录,要使其生效也需要较长的时间,这段时间,DNS任然会将域名解析到已下线的服务器上,最终导致用户访问失败
		2. 不能够按服务器的处理能力来分配负载。DNS负载均衡采用的是简单的轮询算法,不能区分服务器之间的差异,不能反映服务器当前运行状态,所以其的负载均衡效果并不是太好
		3. 可能会造成额外的网络问题。为了使本DNS服务器和其他DNS服务器及时交互,保证DNS数据及时更新,使地址能随机分配,一般都要将DNS的刷新时间设置的较小,但太小将会使DNS流量大增造成额外的网络问题
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值