网络知识总结----(一)TCP/IP协议族

TCP/IP协议族

TCP/IP协议族:一个四层的协议系统,自底向上包括数据链路层、网络层、传输层和应用层。每一层完成不同的功能,且通过若干协议实现。上层协议使用下层协议提供的服务。
这里写图片描述

数据链路层

数据链路层:实现了网卡接口的网络驱动程序,以处理数据在物理介质(以太网、令牌环)上的传输。
不同的物理网络具有不同的电气特性,但网络驱动程序只为上层协议提供一个统一的接口。

主要协议:

  • ARP(Address Resolve Protocol,地址解析协议):网络层使用IP地址寻址一台机器,数据链路层使用物理地址寻址一台机器,所以要使用数据链路层提供的服务就需要将IP地址转换为物理地址。
  • RARP(Reverse Address Resolve Protocol,逆地址解析协议):有些无盘工作站没有记录自身的IP地址,但是可以利用网卡上的物理地址向网络管理者(服务器或网管软件)查询自身IP。
  • 他们实现了IP地址与机器物理地址(MAC地址,以太网,令牌环和802.11无线网络都是用MAC地址)之间的互换

网络层

网络层:实现数据包的选路和转发。
WAN(Wide Area Network,广域网)同城使用众多的分级路由器来连接分散的主机或LAN(Local Area Network,局域网)。网络层的任务就是选择这些路由器,已确定两台主机之间的通信路径。同时,网络层对上层协议隐藏了网络拓扑连接的细节,使得通信双方看起来像直接连接的。

主要协议:

  • IP(Internet Protocol,因特网协议)
  • ICMP(Internet Control Message Protocol,因特网控制报文协议):IP协议的补充,用于检测网络连接。非严格意义上的网络层协议,他使用同一层的IP协议提供的服务(一般来说,上层协议使用下层协议提供的服务)

ICMP协议
这里写图片描述

8位类型:用于区分类型 ①差错报文:回应网络错误,比如目标不可达(类型值 3)、重定向(类型值 5) ②差错报文:查询网络信息,ping就使用ICMP报文查看是否可达。
8位代码:进一步细分不同的条件.
16位校验和:对整个报文进行循环冗余校验。

传输层

传输层:为两台主机上的应用程序提供端到端(end to end)的通信。传输层只关心通信的起始端和目的端,不在乎数据包的中转过程。
这里写图片描述
主要协议:

  • TCP(Transmission Control Protocol,传输控制协议):为应用层提供,可靠,有连接,基于字节流的服务。
  • UDP(User Datagram Protocol,用户数据报协议):为应用层提供,不可靠,无连接,基于数据报的服务。
  • SCTP(Stream Control Transmission Protocol,流控制传输协议)

应用层

应用层:处理应用程序的逻辑。
用户空间实现,负责处理众多逻辑,比如文件传输、名称查询和网络管理等。如果在内核中实现,内核就太庞大了(数据链路层、网络层和传输层在内核中实现,处理网络通信明细,保证稳定且高效)

主要协议:

  • telnet协议:远程登录协议
  • OSPF(Open Shortest Path First,开放最短路径优先)协议:动态路由更新协议,用于路由器之间的通信,以告知对方各自的路由信息
  • DNS(Domain Name Service,域名服务)协议:提供机器域名到IP地址的转换

封装

通过封装,是上层协议使用下层协议提供的服务。
应用层的数据在发送到物理网络上之前,将沿着协议栈从上往下依次传递。每层协议都将在上层数据的基础上加上自己的头部信息,以实现该层功能。
这里写图片描述

经过TCP/UDP封装后的数据成为TCP/UDP数据报。
经过IP封装后的数据称为IP数据报。
数据链路层封装的数据称为帧。传输媒介不同,帧的类型也不同。以太网上传输的是以太网帧。

这里写图片描述
CRC字段:对帧的其他部分提供循环冗余校验
帧的最大传输单元(MTU,Max Transmit Unit):即帧最多能携带多少上层数据,通常受到网络类型的限制,此时MTU = 1500字节。过长的IP数据报可能需要分片传输。

帧是最终在物理网络上传送的字节序列,至此封装完成。

分用

当帧达到目标主机后,将沿着协议栈自底向上依次传递。
各层协议依次处理帧中本层负责的头部数据,最后将处理后的帧交给应用程序。

这里写图片描述

  • IP、ARP、RARP协议都是用帧传输数据,所以帧的头部需要提供某个字段来区分。以太网帧使用两个字节的类型字段来区分。
  • ICMP、TCP、UDP协议使用IP协议,IP数据报的头部采用16位的协议字段区分。
  • TCP、UDP则通过头部的16位端口号来区分上层应用程序。DNS协议–53,HTTP协议–80。/etc/services文件可查知名端口号。

ARP协议

ARP协议能实现任意网络层地址到任意物理地址的转换。

主机向自己所在网络中广播一个ARP请求,请求中包含目标机器的网络地址(IP …)地址,网络中所有的机器也能收到这个请求,但是只有被请求的机器会回应一个ARP应答,其中包含自己的物理地址。

这里写图片描述

  • 硬件类型:物理地址的类型,MAC地址类型值为 1
  • 协议类型:要映射的协议地址类型,IP地址类型值为 1
  • 硬件地址/协议地址长度:单位字节,MAC地址 6 ,IP地址 4
  • 操作:ARP请求 1 ,ARP应答 2 ,RARP请求 1 ,RARP应答 2
  • 最后四个地址,发送请求的机器将除目的端以太网地址的其它地址进行填充,目标机器接收到请求后,将自己的以太网地址添加,并将目的端发送端地址进行交换,操作字段设置为2,然后发出。

ARP请求/应答报文长度为28字节,以太网帧的头部+尾部为18字节,则携带一个ARP请求/应答的以太网数据帧至少46字节。但是有的实现要求以太帧数据部分长度至少46字节,这样ARP会增加一些填充字节,在这种情况下,一个携带ARP请求/应答的以太网数据帧长度为64字节。

DNS

我们在浏览器中进行访问是都是用的域名来访问的,将域名转换成IP地址,就需要使用域名查询服务。比如本地静态文件、DNS、NIS(Network Information Service,网络信息服务)等。

DNS是一套分布式的域名服务系统,每个DNS服务器都存放着大量机器名和IP地址的映射,并且动态更新。
使用DNS服务查询目标主机的IP地址。
这里写图片描述
16位标识字段用于标记一对DNS查询和应答,以此区分一个DNS应答是哪个DNS查询的回应。
16位标志字段用于协商具体的通信方式和反馈通信状态。DNS报文头部的16位标志字段的细节:
这里写图片描述

  • QR,查询/应答标志。0表示这是一个查询报文,1表示这是一个应答报文。
  • opcode,定义查询和应答的类型。0表示标准查询,1标识反响查询(由IP地址获得主机域名),2表示请求服务器状态。

  • AA,授权应答标志,仅由应答报文使用。1表示域名服务器是授权服务器。

  • TC,截断标志,仅当DNS报文使用UDP服务时使用。因为UDP数据报有长度限制,所以过长的DNS报文将被截断。1表示DNS报文超过512字节,并被截断。
  • RD,递归查询标志,1表示执行递归查询,即如果目标DNS服务器无法解析某个主机名,则它将向其他DNS服务器继续查询,如此递归,直到获得结果并把该结果返回给客户端。0表示执行迭代查询,即如果目标DNS服务器无法解析某个主机名,则它将自己知道的其他DNS服务器的IP地址返回给客户端,以供客户端参考。
  • RA,允许递归标志。仅由应答报文使用,1表示DNS服务器支持递归查询。
  • zero,这三位未用,必须都设置为0。
  • rode,4位返回码,表示应答的状态,常用值由0(无错误)和3(域名不存在)。

Linux访问DNS服务
Linux使用/etc/resolv.conf存放DNS服务器IP地址。
查询域名为IP地址:host -t A www.baidu.com

猜你喜欢

转载自blog.csdn.net/qq_37934101/article/details/81563720
今日推荐