Linux网络协议

应用层协议

应用层主要包括一下协议:
      文件传输类:HTTP、FTP、TFTP;
      远程登录类:Telnet;
      电子邮件类:SMTP;
      网络管理类:SNMP;
      域名解析类:DNS;
 
Http
Http(Hypertext Transfer Protocol,超文本链接协议)是一个应用层的、面向对象的协议,它适用
于分布式超媒体信息系统。
WWW(World Wide Web,也称Web)服务器使用的主要协议就是HTTP。由于HTTP支持的服务
器不限于WWW,还可以是其他服务,因此HTTP允许用户子啊统一的界面下,采用不同的协
议访问不同 服务,如FTP、SMTP、NNTP等。
HTTP服务:
 
FTP
   (File Transfer Protocol,文件传输协议)是一个用于简化IP网络上系统之间文件传输的协议。
采用FTP协议,用户可以高效从Internet上的FTP服务器下载大量的数据文件,已达到资源共享
和传递信息的目的。
 
一个FTP站点可以是公用的、私有的、或者两者兼之。用户可以为FTP帐号定义权限,让它可
以访问整个FTP服务的目录结构,或者是特定的区域。
 
FTP服务器可以设置为允许任何人连接和传输文件,这种访问方式被称为匿名访问。当使用匿
名方式登陆到FTP站点时,系统默认使用“anonymous”作为用户名,用“guest”某个E-mail地
址作为密码。匿名FTP经常用于发布大量的公用领域或共享软件。
 
实际上,FTP已经包含于Internet Exploer浏览器中,因此用户可以使用浏览器Web的程序来浏览
FTP服务器。
 
FTP服务的主动模式和被动模式
FTP包含两种连接模式:控制连接和数据连接。
 
控制连接
控制连接用于传递用户端的命令和服务器端对命令的响应,它使用服务器的21端口。
 
数据连接
数据连接用于传输文件和其他数据,如目录列表等。这汇总连接在需要数据传输时建
立,而一旦数据传输完毕就关闭,每次使用的端口也不一定相同。而且,数据连接既
可能是服务器端发起的。
 
FTP服务器数据连接的主动模式和被动模式
FTP的数据连接也存在两种模式:主动模式和被动模式。主动(PORT)模式从服务器端
向客户端发起连接;被动(PASV)模式是客户端像服务器端发起连接。
 
当FTP被设置为主动模式时,首先客户端像服务器的FTP端口(默认是21)发送连接请求
服务器接收连接,建立一条控制连接。当需要传输数据时,客户端在控制连接上用
PORT名利告诉服务器:“打开了XXXX端口,你来连接我”。于是服务器从20端口向
客户端的XXXX端口发送连接请求,最后建立一条数据连接来传输数据。
 
当FTP被设置为被动模式时,首先客户端向服务器的FTP端口(默认是21)发送连接请求,
服务器接收连接,建立一条控制连接。当需要传输数据时,服务器在命令链路上用
PASV命令告诉客户端:“我打开了XXXX端口,你来连接我”。于是客户端向服务器
的XXXX端口发送连接请求,最后建立一条数据连接来传输数据。
 
当进行FTP连接时,IE 通常被设置为被动模式,而FTP客户端软件(如FlashFXP、CutFTP)
一般为主动模式。如果服务器和客户端之间存在防火墙,主动模式经常会引起一些麻烦。
例如,客户端位于防火墙之后,通常防火墙允许所有内部向外部的连接,但是对于外部
向内部发起的连接却存在很多限制。在这种情况下,客户端可以正常地和客户端建立控
制连接,而如果使用主动模式的数据连接,一些数据传输命令就很难成功运行,因为防
火墙会足赛从服务器向客户发起的数据传输连接。因此在使用主动模式的FTP数据连接
时,防火墙上的配置会比较麻烦。
 
TFTP
TFTP(Trivial File Transfer Protocol,简单文件传输协议)是基于UDP的应用。TFTP在设计是
用与小文件传输的,它对内存和处理器的要求很低,速度快。但那是TFTP不具备FTP的
许多功能,它只能从文件服务器获得或写入文件,而不能列出目录,也不能进行认证,
所以它没有建立连接的过程及错误恢复的功能,适用范围也不像FTP那么广泛。
 
一个最常见的TFTP应用例子就是使用TFTP服务器来备份或恢复Cisco路由器、Catalyst交
换机的IOS镜像和配置文件。
 
SNMP
SNMP(Simple Network Management Protocol)即简单网络管理协议,它允许第三方的管理系
统集中采集来自许多网络设备的数据,为网络管理系统提供了底层网络管理的框架。利
用SNMP,一个管理管理工作站可以远程管理所有支持这种协议的网络设备,包括监视
网络状态、修改网络设备配置、接收网络事件警告等。
 
SNMP被设计成与协议无关,所以它可以被使用在IP、IPX、AppleTalk、OSI以及其他用
到的传输协议上。
 
SNMP 提供了监控联网设备的能力,它采用了分布式体系结构,这个体系结构由两部分
组成:管理系统和代理。
 
管理系统(Management System.):管理系统是任意的一台运行SNMP管理软件的计算机。任
何管理系统的主要功能都是从代理那里请求信息。
 
代理(Agents):代理是任何一种运行SNMP代理软件的设备,如服务器或者路由器。代理的
主要功能是发送管理系统所请求的信息。
 
SNMP是一种非连接协议,非连接的意思是它不支持像Telnet或FTP这种专门的连接。通过
使用请求报文和返回响应的方式,SNMP在代理和管理系统之间传送信息。这种机制减轻
了代理的负担,它不必非得支持其他协议及基于连接模式的处理过程。因此,SNMP协议
提供了一种独有的机制来处理可靠性和故障检测方面的问题。
 
DNS
域名管理系统DNS(Domain Name System)是一台域名解析服务器。在互联网中我们通常用
一些域名(如 www.baidu.com)来代替难记的IP地址(如 220.181.6.19)以定位计算机和服务。
DNS服务器中包含了域名和相应的IP地址的映射。因此DNS的作用是把域名转换成网络可
以标识的IP地址。


网络层协议


网络层协议主要包括 IP、ICMP(网络控制报文协议)、ARP(地址解析协议)
  • IP协议
  • 什么是IP协议

    IP协议位于网络层,它提供了不可靠的、无连接的数据报传输机制。TCP/IP是为了适应物理网络的多样性而设计的,而这种适应性主要是通过IP层来体现的。由于物理网络的多样性,各种物理网络的数据帧格式、地址格式之间的差异很大。为了将这些底层的细节屏蔽起来,使得采用不同物理网络的网络之间进行通讯, TCP/IP分别采用了IP数据报和IP地址作为物理数据帧与物理地址的统一描述形式。这样IP向上层提供统一的IP数据报和统一的IP地址,使得各种物理帧及物理地址的差异性对上层协议不复存在。

    IP数据报头格式如下:

      0             7 8          15 16        23 24           31

       ┣┳┳┳┳┳┳┳╋┳┳┳┳┳┳┳╋┳┳┳┳┳┳╋┳┳┳┳┳┳┳┫

       ┃ VERS │HLEN │   服务类型   ┃        总长度            ┃

       ┣┼┼┼┼┼┼┼╋┼┼┼┼┼┼┼╋┼┼┼┼┼┼╋┼┼┼┼┼┼┼┫

       ┃         标   识            ┃ 标记 │    分段偏移       ┃

       ┣┼┼┼┼┼┼┼╋┼┼┼┼┼┼┼╋┼┼┼┼┼┼╋┼┼┼┼┼┼┼┫

       ┃  生 存 期   ┃   协  议     ┃      头校验和            ┃

       ┣┼┼┼┼┼┼┼╋┼┼┼┼┼┼┼╋┼┼┼┼┼┼╋┼┼┼┼┼┼┼

       ┃                   源 IP 地 址                          ┃

       ┣┼┼┼┼┼┼┼╋┼┼┼┼┼┼┼╋┼┼┼┼┼┼╋┼┼┼┼┼┼┼

       ┃                  目 的 IP 地 址                        ┃

       ┣┼┼┼┼┼┼┼╋┼┼┼┼┼┼┼╋┼┼┼┼┼┼╋┼┼┼┼┼┼┼

       ┃             IP选项(可选)                      ┃ 填充 ┃

       ┣┼┼┼┼┼┼┼╋┼┼┼┼┼┼┼╋┼┼┼┼┼┼╋┼┼┼┼┼┼┼

       ┃           IP报文数据(最大65535字节)                   ┃

       ┣┼┼┼┼┼┼┼╋┼┼┼┼┼┼┼╋┼┼┼┼┼┼╋┼┼┼┼┼┼┼

    (1) 版本字段(VERS):记录数据报文符合协议的哪一个版本协议。版本号表示发送者、接收者和路由器对该数据的处理都要按所示的版本进行。现在的版本号是4。
    (2) 首部长度(HLEN):指明报头的长度。
    (3) 服务类型:一共8个比特,前3个比特表示优先级,第4个比特表示要求有更低的时延,第5个比特表示要求有更高的吞吐量,第6个比特表示要求更高的可靠性,第7个比特表示选择价格更低廉的路由,最后一个比特未用。
    (4) 总长度包括报头长度和数据长度,最大长度 = 65536字节。
    (5) 标识符:用于数据分段,一个数据报在传输过程中可能分成若干段,标识符可以区分某分段属于某报文,一个数据报的所有分段具有相同的标识符。
    (6) DF:该位置1时表示不分段,置0时允许分段。
    (7) MF:表示后面还有一分段,除了最后一个分段,所有分段的MF置为1。
    (8) 段偏移:指明此分段在当前数据报中的位置。
    (9) 生存周期:限定分段生存期的计数器,当它为0时该分段被抛弃,时间单位为秒。
    (10) 协议:指明此数据报属于哪一种传送过程,如TCP、UDP等。
    (11) 报头校验和:只校验报头。
    (12) 源端地址和目的端地址:指明源和目的方的网络编号与主机号,即IP地址。

    [plain] view plain copy
    1. 该协议被设计成互联分组交换通信网,以形成一个网际通信环境。它负责在源主机和目的地主机之间传输来自其较高层软件的称为数据报文的数据块,它在源和目的地之间提供非连接型传递服务。  
    [plain] view plain copy
    1. IP主要有四个主要功能:  
    2. 数据传送  
    3. 寻址  
    4. 路由选择  
    5. 数据报文的分段  
    [plain] view plain copy
    1. IP的主要目的是为数据输入/输出网络提供基本算法,为高层协议提供无连接的传送服务。这意味着在IP将数据递交给接收站点以前不在传输站点和接收站点之间建立对话。它只是封装和传递数据,但不向发送者或接受者报告包的状态,不处理所遇到的故障。  
  • 网际控制报文协议(ICMP)
  • IMCP协议介绍

    前面讲到了,IP协议并不是一个可靠的协议,它不保证数据被送达,那么,自然的,保证数据送达的工作应该由其他的模块来完成。其中一个重要的模块就是ICMP(网络控制报文)协议。

    当传送IP数据包发生错误--比如主机不可达,路由不可达等等,ICMP协议将会把错误信息封包,然后传送回给主机。给主机一个处理错误的机会,这 也就是为什么说建立在IP层以上的协议是可能做到安全的原因。ICMP数据包由8bit的错误类型和8bit的代码和16bit的校验和组成。而前 16bit就组成了ICMP所要传递的信息。

    尽管在大多数情况下,错误的包传送应该给出ICMP报文,但是在特殊情况下,是不产生ICMP错误报文的。如下

    1. ICMP差错报文不会产生ICMP差错报文(出IMCP查询报文)(防止IMCP的无限产生和传送)
    2. 目的地址是广播地址或多播地址的IP数据报。
    3. 作为链路层广播的数据报。
    4. 不是IP分片的第一片。
    5. 源地址不是单个主机的数据报。这就是说,源地址不能为零地址、环回地址、广播地 址或多播地址。

    虽然里面的一些规定现在还不是很明白,但是所有的这一切规定,都是为了防止产生ICMP报文的无限传播而定义的。

    ICMP协议大致分为两类,一种是查询报文,一种是差错报文。其中查询报文有以下几种用途:

    1. ping查询
    2. 子网掩码查询(用于无盘工作站在初始化自身的时候初始化子网掩码)
    3. 时间戳查询(可以用来同步时间)

    而差错报文则产生在数据传送发生错误的时候。就不赘述了。

    PING

    ping可以说是ICMP的最著名的应用,当我们某一个网站上不去的时候。通常会ping一下这个网站。ping会回显出一些有用的信息。一般的信息如下:

    Reply from 10.4.24.1: bytes=32 time<1ms TTL=255
    Reply from 10.4.24.1: bytes=32 time<1ms TTL=255
    Reply from 10.4.24.1: bytes=32 time<1ms TTL=255
    Reply from 10.4.24.1: bytes=32 time<1ms TTL=255

    Ping statistics for 10.4.24.1:
        Packets: Sent = 4, Received = 4, Lost = 0 (0% loss),
    Approximate round trip times in milli-seconds:
        Minimum = 0ms, Maximum = 0ms, Average = 0ms

    ping这个单词源自声纳定位,而这个程序的作用也确实如此,它利用ICMP协议包来侦测另一个主机是否可达。原理是用类型码为0的ICMP发请 求,受到请求的主机则用类型码为8的ICMP回应。ping程序来计算间隔时间,并计算有多少个包被送达。用户就可以判断网络大致的情况。我们可以看到, ping给出来了传送的时间和TTL的数据。我给的例子不太好,因为走的路由少,有兴趣地可以ping一下国外的网站比如sf.NET,就可以观察到一些 丢包的现象,而程序运行的时间也会更加的长。
    ping还给我们一个看主机到目的主机的路由的机会。这是因为,ICMP的ping请求数据报在每经过一个路由器的时候,路由器都会把自己的ip放到该数 据报中。而目的主机则会把这个ip列表复制到回应icmp数据包中发回给主机。但是,无论如何,ip头所能纪录的路由列表是非常的有限。如果要观察路由, 我们还是需要使用更好的工具,就是要讲到的Traceroute(windows下面的名字叫做tracert)。

    ICMP的应用--Traceroute

    Traceroute是用来侦测主机到目的主机之间所经路由情况的重要工具,也是最便利的工具。前面说到,尽管ping工具也可以进行侦测,但是,因为ip头的限制,ping不能完全的记录下所经过的路由器。所以Traceroute正好就填补了这个缺憾。


    [plain] view plain copy
    1. 实际上不是IP层部分,但直接同IP层一起工作,报告网络上的某些出错情况。允许忘记路由器传输差错信息或测试报文。 
  • 地址解析协议(ARP)
  • 地址解析协议ARP----------------------Address Resolution Protocol
  • 逆地址解析协议RARP-----------------Reverse Address Resolution Protocol
  • ARP 和 RARP 协议:

    • ARP协议-------根据物理地址求得物理地址,在局域网中有效;RARP协议-------根据物理地址求得IP地址
    • ARP实现的原理:在主机ARP高速缓存中应存放一个IP地址到物理地址的映射表,并且这个映射表还需要经常动态更新    

      2:划分子网

           由于IP地址空间的利用率有时很低;给每个物理网络分配一个网络号会使得路由表变得太他因而是网络性能变坏;两级IP地址不够灵活。---------------------->划分子网。IP地址::={<网络号>,<子网号>,<主机号>}。但是划分子网使得路由器的负担加重。使用子网划分后,路由表必须包含以下三项内容:目的网络地址、子网掩码、下一跳地址。

     3:网际控制报文协议:为了更有:效的转发IP数据包和提高交付成功的机会,在网际层使用了网际控制报文协议ICMP,ICMP 允许主机或路由器报告产错情况和提供异常情况的报告.ICMP 报文分为:ICMP 差错控制和ICMP询问报文。 对于Ping、traceroute使用ICMP报文

         ICMP 差错报告分为五种:终点不可达、源点抑制、时间通过、参数问题、改变路由

    [plain] view plain copy
    1. ARP实际上不是网络层部分,它处于IP和数据链路层之间,它是在32位IP地址和48位物理地址之间执行翻译的协议  
传输层协议

包含传输控制协议和用户数据报文协议
  • 传输控制协议(TCP)
  • (1)源端口和目的端口字段——各占 2 字节。端口是运输层与应用层的服务接口。运输层的复用和分用功能都要通过端口才能实现。 
      (2)序号字段——占 4 字节。TCP 连接中传送的数据流中的每一个字节都编上一个序号。序号字段的值则指的是本报文段所发送的数据的第一个字节的序号。 
      (3)确认号字段——占 4 字节,是期望收到对方的下一个报文段的数据的第一个字节的序号。
      (4)数据偏移——占 4 bit,它指出 TCP 报文段的数据起始处距离 TCP 报文段的起始处有多远。“数据偏移”的单位不是字节而是 32 bit 字(4 字节为计算单位)。
      (5)保留字段——占 6 bit,保留为今后使用,但目前应置为 0。 
      (6)紧急比特 URG —— 当 URG = 1 时,表明紧急指针字段有效。它告诉系统此报文段中有紧急数据,应尽快传送(相当于高优先级的数据)。
      (7)紧急指针字段 —— 占 16 bit。紧急指针指出在本报文段中的紧急数据的最后一个字节的序号。(实际上就是当URG=1时候,这个指针会指向紧急数据的最后一个字节的序号,而不要把紧急指针和紧急比特当作一个概念)
      (8)确认比特 ACK —— 只有当 ACK = 1 时确认号字段才有效。当 ACK = 0 时,确认号无效。
      (9)推送比特 PSH (PuSH) —— 接收 TCP 收到推送比特置 1 的报文段,就尽快地交付给接收应用进程,而不再等到整个缓存都填满了后再向上交付.
      (10)复位比特 RST (ReSeT) —— 当 RST = 1 时,表明 TCP 连接中出现严重差错(如由于主机崩溃或其他原因),必须释放连接,然后再重新建立运输连接。
      (11)终止比特 FIN (FINal) —— 用来释放一个连接。当FIN = 1 时,表明此报文段的发送端的数据已发送完毕,并要求释放运输连接。
      (12)窗口字段 —— 占 2 字节。窗口字段用来控制对方发送的数据量,单位为字节。TCP 连接的一端根据设置的缓存空间大小确定自己的接收窗口大小,然后通知对方以确定对方的发送窗口的上限.
      (13)检验和 —— 占 2 字节。检验和字段检验的范围包括首部和数据这两部分。在计算检验和时,要在 TCP 报文段的前面加上 12 字节的伪首部.
      (14)MSS是 TCP 报文段中的数据字段的最大长度。数据字段加上 TCP 首部才等于整个的 TCP 报文段。
      (15)选项字段 —— 长度可变。TCP 只规定了一种选项,即最大报文段长度 MSS (Maximum Segment Size)。MSS 告诉对方 TCP:“我的缓存所能接收的报文段的数据字段的最大长度是 MSS 个字节。”
      (16)填充字段 —— 这是为了使整个首部长度是 4 字节的整数倍。
    [plain] view plain copy
    1. 该协议对建立网络上用户进程直接的对话负责,它确保进程直接的可靠通信,所提供的功能如下:  
    2. 监听输入对话建立请求  
    3. 请求另一网络站点对话  
    4. 可靠的发送和接收数据  
    5. 适度的关闭对话  
    [plain] view plain copy
    1. TCP是重要的传输层协议,目的是允许数据同网络上的其它节点进行可靠的交互。它能提供端口编号的译码,以识别主机的应用程序,而且完成数据的可靠传输。  
    2. TCP协议具有严格的内装差错检验算法确保数据的完整性。  
    3. TCP是面向自己的顺序协议,这意味着包内的每个字节被分配一个顺序编号,并分配给每包一个顺序编号。  
  • 用户数据报文协议(UDP)
  • UDP用户数据报的首部数据格式。
      (1)用户数据报 UDP 有两个字段:数据字段和首部字段。首部字段有 8 个字节,由 4 个字段组成,每个字段都是两个字节。 
      首部格式如下:
         伪首部|源端口|目的端口|长度|检验和
      字节数: 12| 2 | 2 | 2 | 2
      (2)数据字段的格式如下:
         源IP地址|目的IP地址| 0 | 17 |UDP长度
    对应字节数: 4 | 4 | 1 | 1 | 2
      说明:在计算检验和时,临时把“伪首部”和 UDP 用户数据报连接在一起。伪首部仅仅是为了计算检验和。
  •  UDP协议在IP协议上增加了复用、分用和差错检测功能。UDP的特点:

           A)是无连接的。相比于TCP协议,UDP协议在传送数据前不需要建立连接,当然也就没有释放连接。

           B)是尽最大努力交付的。也就是说UDP协议无法保证数据能够准确的交付到目的主机。也不需要对接收到的UDP报文进行确认。

           C)是面向报文的。也就是说UDP协议将应用层传输下来的数据封装在一个UDP包中,不进行拆分或合并。因此,运输层在收到对方的UDP包后,会去掉首部后,将数据原封不动的交给应用进程。

           D)没有拥塞控制。因此UDP协议的发送速率不送网络的拥塞度影响。

           E)UDP支持一对一、一对多、多对一和多对多的交互通信。

           F)UDP的头部占用较小,只占用8个字节。

    UDP报文格式

            UDP协议分为首部字段和数据字段,其中首部字段只占用8个字节,分别是个占用两个字节的源端口、目的端口、长度和检验和。

    sd

           长度:UDP报文的整个大小,最小为8个字节(仅为首

            检验和:在进行检验和计算时,会添加一个伪首部一起进行运算。伪首部(占用12个字节)为:4个字节的源IP地址、4个字节的目的IP地址、1个字节的0、一个字节的数字17、以及占用2个字节UDP长度。这个伪首部不是报文的真正首部,只是引入为了计算校验和。相对于IP协议的只计算首部,UDP检验和会把首部和数据一起进行校验。接收端进行的校验和与UDP报文中的校验和相与,如果无差错应该全为1。如果有误,则将报文丢弃或者发给应用层、并附上差错警告。

    [plain] view plain copy
    1. UDP提供不可靠的非连接型传输层服务,它允许在源和目的地直接传送数据,而不必在传送数据之前建立对话。它主要用于那些非连接型的应用程序,如:视频点播。  
    [plain] view plain copy
    1. UDP是传输层协议,它是无连接的,不可靠的传输服务。当接收数据时它不向发送方提供确认信息,它不提供输入包的顺序,如果出现丢失包或重份包的情况,也不会向发送方发出差错报文。由于它执行功能时具有较低的开销,因而执行速度比TCP快。   部)。
  • 网络接口层

      网络接口层在发送端将上层的IP数据报封装成帧后发送到网络上;数据帧通过网络到达接收端时,该结点的网络接口层对数据帧拆封,并检查帧中包含的MAC地址。如果该地址就是本机的MAC地址或者是广播地址,则上传到网络层,否则丢弃该帧。

    当使用串行线路连接主机与网络,或连接网络与网络时,例如,主机通过Modem和电话线接入Internet,则需要在网络接口层运行SLIPPPP协议。

     SLIPSerial Line Internet Protocol)协议提供了一种在串行通信线路上封装IP数据报的简单方法,使用户通过电话线和Modem能方便地接入TCP/IP网络。

    ☆ PPPPoint to Point Protocol)协议是一种有效的点到点通信协议,解决了SLIP存在的上述问题,即可以支持多种网络层协议(如IPIPX等),支持动态分配的IP地址;并且PPP帧中设置了校验字段,因而PPP在网络接口层上具有差错检验能力。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值