Linux网络协议和管理

一.网络设备基本知识

网络设备基本知识

图1-网络设备基本知识

二.TCP/IP协议栈简介

1.概述

  • 网络协议通常工作在不同的层中,每一层分别负责不同的通信功能。一个协议族,
    比如T C P / I P,是一组不同层次上的多个协议的组合。T C P / I P通常被认为
    是一个四层协议系统。如图2.1所示。
  • 其每一层负责不同的传输任务:
    • 1)数据链路层,有时也称网络接口层,通常包括操作系统中的设备驱动程序和计算机
      中对应的网络接口卡。它们一起处理与电缆(或其他任何传输媒介)的物理接口细节。
      (ISO网络7层模型中最底层为物理层,其为启动、维护和关闭物理链路规定了:
      电器特性、机械特性、过程特性和功能特性)
    • 2)网络层,有时也称作互联网层,其主要负责处理分组在网络中的活动,例如分组的选路。在
      TCP/IP协议族中,网络层协议包括IP协议(网际协议),ICMP协议(Internet互联网控制报文协议),以及IGMP协议(Internet组管理协议)。
    • 3)运输层主要为两台主机上的应用程序提供端到端的通信。在TCP/IP协议族中,有两个
      互不相同的传输协议:TCP(传输控制协议)和UDP(用户数据报协议)。
      TCP为两台主机提供高可靠性的数据通信。它所做的工作包括把应用程序交给它的数据分
      成合适的小块交给下面的网络层,确认接收到的分组,设置发送最后确认分组的超时时钟
      等。由于运输层提供了高可靠性的端到端的通信,因此应用层可以忽略所有这些细节。
      而另一方面,UDP则为应用层提供一种非常简单的服务。它只是把称作数据报的分组
      从一台主机发送到另一台主机,但并不保证该数据报能到达另一端。任何必需的可靠
      性必须由应用层来提供。这两种运输层协议分别在不同的应用程序中有不同的用途。
    • 4)应用层负责处理特定的应用程序细节。几乎各种不同的TCP/IP实现都会提供下面这些
      通用的应用程序:
      •Telnet远程登录。
      •FTP文件传输协议。
      •SMTP简单邮件传送协议。
      •SNMP简单网络管理协议。

TCP/IP协议栈所在的4层

图2.1-TCP/IP协议栈所在的4层

2.数据链路层

  • 在TCP/IP协议族中,数据链路层主要有三个目的

    • (1)为IP模块发送和接收IP数据报;
    • (2)为ARP模块发送ARP请求和接收ARP应答;
    • (3)为RARP发送RARP请求和接收RARP应答。
  • TCP/IP支持多种不同的链路层协议,这取决于网络所使用的硬件,如以太网、
    令牌环网、FDDI(光纤分布式数据接口)及RS-232串行线路等。

以太网

  • 以太网这个术语一般是指数字设备公司(DigitalEquipmentCorp.)、英特尔公司(IntelCorp.)
    和Xerox公司在1982年联合公布的一个标准。它是当今TCP/IP采用的主要的局域网技术。它采用一种
    称作CSMA/CD的媒体接入方法,其意思是带冲突检测的载波侦听多路接入(CarrierSense,
    MultipleAccesswithCollisionDetection)。它的速率为10Mb/s,地址为48bit。

  • 后来,IEEE(电子电气工程师协会)802委员会公布了一个稍有不同的标准
    集,其中802.3针对整个CSMA/CD网络,802.4针对令牌总线网络,
    802.5针对令牌环网络。这三者的共同特性由802.2标准来定义,那就是8
    02网络共有的逻辑链路控制(LLC)。

  • IEEE802.2-802.3和以太网的数据帧封装格式如图2.2.1。

    • IEEE802.2-802.3和以太网的数据帧封装,两种帧格式都采用48bit(6字节)的目
      的地址和源地址(802.3允许使用16 bit的地址,但一般是48bit地址)。这就是硬件
      地址,也就是电脑网卡的MAC地址。ARP和RARP协议对32bit的IP地址和48bit的硬件地
      址进行映射。
    • 接下来的2个字节在两种帧格式中互不相同。在802标准定义的帧格式中,长度字段
      是指它后续数据的字节长度,但不包括CRC检验码。以太网的类型字段定义了后续数据
      的类型。在802标准定义的帧格式中,类型字段则由后续的子网接入协议(Sub-network
      AccessProtocol,SNAP)的首部给出。
    • 在以太网帧格式中,类型字段之后就是数据;而在802帧格式中,跟随在后面的是3字节
      的802.2LLC和5字节的802.2SNAP。目的服务访问点(DestinationServiceAccessPoint,
      DSAP)和源服务访问点(SourceServiceAccessPoint,SSAP)的值都设为0xaa。
      Ctrl字段的值设为3。随后的3个字节orgcode都置为0。再接下来的2个字节类型字段和
      以太网帧格式一样。
    • CRC字段用于帧内后续字节差错的循环冗余码检验(检验和)(它也被称为FCS或帧检验
      序列)。802.3标准定义的帧和以太网的帧都有最小长度要求。802.3规定数据部分必须
      至少为38字节,而对于以太网,则要求最少要有46字节。
  • IEEE802.2-802.3和以太网的数据帧封装格式
    IEEE802.2-802.3和以太网的数据帧封装格式

图2.2.1

串行接口链路层协议SLIP

  • SLIP的全称是Serial Line IP。它是一种在串行线路上对IP数据报进行封装的
    简单形式,在RFC1055[Romkey1988]中有详细描述。SLIP适用于家庭中每台计算
    机几乎都有的RS-232串行端口和高速调制解调器接入Internet。

串行接口链路层协议PPP(点对点协议)

  • PPP,点对点协议修改了SLIP协议中的所有缺陷。PPP包括以下三个部分:

    • 1)在串行链路上封装IP数据报的方法。PPP既支持数据为8位和无奇偶检验的
      异步模式(如大多数计算机上都普遍存在的串行接口),还支持面向比特的同步链接。
    • 2)建立、配置及测试数据链路的链路控制协议(LCP:LinkControlProtocol)。
      它允许通信双方进行协商,以确定不同的选项。
    • 3)针对不同网络层协议的网络控制协议(NCP:NetworkControlProtocol)体系。
      当前RFC定义的网络层有IP、OSI网络层、DECnet以及AppleTalk。例如,
      IPNCP允许双方商定是否对报文首部进行压缩,类似于CSLIP(缩写词NCP也可用在TCP的前面)。
  • PPP数据帧的格式
    PPP数据帧的格式

图2.2.2
  • PPP数据帧字段

    • 每一帧都以标志字符0x7e开始和结束。紧接着是一个地址字节,值始终是0xff,
      然后是一个值为0x03的控制字节。
    • 接下来是协议字段,类似于以太网中类型字段的功能。当它的值为0x0021时,
      表示信息字段是一个IP数据报;值为0xc021时,表示信息字段是链路控制数据;
      值为0x8021时,表示信息字段是网络控制数据。
    • CRC字段(或FCS,帧检验序列)是一个循环冗余检验码,以检测数据帧中的错误。
  • PPP&SLIP相同点

    • 与SLIP类似,由于PPP经常用于低速的串行链路,因此减少每一帧的字节数可以
      降低应用程序的交互时延。利用链路控制协议,大多数的产品通过协商可以省略标志符和
      地址字段,并且把协议字段由2个字节减少到1个字节。
  • 总的来说,PPP比SLIP具有下面这些优点:

    • (1)PPP支持在单根串行线路上运行多种协议,不只是IP协议;
    • (2)每一帧都有循环冗余检验;
    • (3)通信双方可以进行IP地址的动态协商(使用IP网络控制协议);
    • (4)与CSLIP类似,对TCP和IP报文首部进行压缩;
    • (5)链路控制协议可以对多个数据链路选项进行设置。为这些优点付出的代价是在
      每一帧的首部增加3个字节,当建立链路时要发送几帧协商数据,以及更为复杂的实现。

环回接口

  • 大多数的产品都支持环回接口(Loopback Interface),以允许运行在同一台主机上
    的客户程序和服务器程序通过TCP/IP进行通信。A类网络号127就是为环回接口预留的。根
    据惯例,大多数系统把IP地址127.0.0.1分配给这个接口,并命名为localhost。一个传
    给环回接口的IP数据报不能在任何网络上出现。

  • 我们所想象的是,一旦传输层检测到目的端地址是环回地址时,应该可以省略部分传输
    层和所有网络层的逻辑操作。但是大多数的产品还是照样完成传输层和网络层的所有过
    程,只是当IP数据报离开网络层时把它返回给自己。

  • 图2.2.3是环回接口处理IP数据报的简单过程
    在这里插入图片描述

图2.2.3环回接口处理IP数据报的过程
  • 图中需要指出的关键点有:

      1. 传给环回地址(一般是127.0.0.1)的任何数据均作为IP输入。
      1. 传给广播地址或多播地址的数据报复制一份传给环回接口,然后送到以太网上。
        这是 因为广播传送和多播传送的定义(第12章)包含主机本身。
    • 3 )任何传给该主机IP地址的数据均送到环回接口。
  • 看上去用传输层和IP层的方法来处理环回数据似乎效率不高,但它简化了设计,因为
    环回接口可以被看作是网络层下面的另一个链路层。网络层把一份数据报传送给环回接
    口,就像传给其他链路层一样,只不过环回接口把它返回到IP的输入队列中。

  • 图2-4中,另一个隐含的意思是送给主机本身IP地址的IP数据报一般不出现在相应的
    网络上。例如,在一个以太网上,分组一般不被传出去然后读回来。某些BSD以太网的
    设备驱动程序的注释说明,许多以太网接口卡不能读回它们自己发送出去的数据。

4.4BSD系统定义了变量useloopback,并初始化为1。但是,如果这个变量置为0,
以太网驱动程序就会把本地分组送到网络,而不是送到环回接口上。它也许不能工作,
这取决于所使用的以太网接口卡和设备驱动程序。

3.网络层

IP协议

  • IP是TCP/IP协议族中最为核心的协议。所有的TCP、UDP、ICMP及IGMP数据都以IP数据
    报格式传输。许多刚开始接触TCP/IP的人对IP提供不可靠、无连接的数据报传送服务感到
    很奇怪。IP提供的是一种不可靠的服务。也就是说,它只是尽可能快地把分组从源结点送
    到目的结点,但是并不提供任何可靠性保证。而另一方面,TCP在不可靠的IP层上提供了
    一个可靠的运输层。为了提供这种可靠的服务,TCP采用了超时重传、发送和接收端到端的
    确认分组等机制。
    • 不可靠(unreliable)的意思是它不能保证IP数据报能成功地到达目的地。IP仅提供最好
      的传输服务。如果发生某种错误时,如某个路由器暂时用完了缓冲区,IP有一个简单的错误
      处理算法:丢弃该数据报,然后发送ICMP消息报给信源端。任何要求的可靠性必须由上层来
      提供(如TCP)。
    • 无连接(connectionless)这个术语的意思是IP并不维护任何关于后续数据报
      的状态信息。每个数据报的处理是相互独立的。这也说明,IP数据报可以不按发送顺序接收。
      如果一信源向相同的信宿发送两个连续的数据报(先是A,然后是B),每个数据报都是独立地
      进行路由选择,可能选择不同的路线,因此B可能在A到达之前先到达。

https://img-blog.csdnimg.cn/20191025085448576.jpg?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L1lvdU9vcHM=,size_16,color_FFFFFF,t_70

图2.3.1-IP报文头部格式
  • 头部各字节的具体含义如下:
字段 含义
4位版本号 指的是IP协议的版本信息目前的协议版本号是4,因此IP有时也称作IPv4。将来IPv6将会普及。
4位首部长度 指的是头部占32bit字的数目(头部的"选项"字段也计算在内),最多标识15个32bit,也就是首部最长位60字节。不带选项的IP报文该字段值为5,也就是首部固定大小20字节。
8位服务类型 服务类型(TOS)字段包括一个3bit的优先权子字段(现在已被忽略),4bit的TOS子字段和1bit未用位但必须置0。4bit的TOS分别代表:最小时延、最大吞吐量、最高可靠性和最小费用。4bit中只能置其中1bit。如果所有4bit均为0,那么就意味着是一般服务。新的路由协议如OSPF和IS-IS都能根据这些字段的值进行路由决策。不同应用建议的TOS值见图2.3.2。
16位总长度(字节数) 总长度字段是指整个IP数据报的长度,以字节为单位。利用首部长度字段和总长度字段,就可以知道IP数据报中数据内容的起始位置和长度。由于该字段长16比特,所以IP数据报最长可达65535字节,超级通道的MTU为65535。尽管可以传送一个长达65535字节的IP数据报,但是大多数的链路层都会对它进行分片。
16位标识 标识字段唯一地标识主机发送的每一份数据报。通常每发送一份报文它的值就会加1。
3位标志 标志字段和片偏移字段在分片时使用
13位片偏移 标志字段和片偏移字段在分片时使用
8位生存时间(TTL) TTL(time-to-live)生存时间字段设置了数据报可以经过的最多路由器数。它指定了数报的生存时间。TTL的初始值由源主机设置(通常为32或64),一旦经过一个处理它的路由器,它的值就减去1。当该字段的值为0时,数据报就被丢弃,并发送ICMP报文通知源主机。可以使用traceroute命令来分析。
8位协议 指明其上层协议类型(TCP/UDP/ICMP/IGMP,etc.),在分用1的时候各报文的首部协议字段会被程序检查,以确定其上层协议类型。
16位首部检验和 首部检验和字段是根据IP首部计算的检验和码。它不对首部后面的数据进行计算。ICMP、IGMP、UDP和TCP在它们各自的首部中均含有同时覆盖首部和数据检验和码。
  • 9
    点赞
  • 54
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值