TCP/IP协议栈:

 定义:

   Transmission Control Protocol/Internet Protocol的缩写,中译名为——传输控制协议/因特网互联协议,又名网络通讯协议,是internet最基本的协议、internet国际互联网络的基础,由-网络层的IP协议和-传输层的TCP协议组成。TCP/IP定义了电子设备如何连入因特网,以及数据如何在它们之间传输的标准。协议采用了4层的层级结构,每一层都呼叫它的下一层所提供的协议来完成自己的需求。通俗而言:TCP负责发现传输的问题,一有问题就发出信号,要求重新传输,直到所有数据安全正确地传输到目的地。而IP是给因特网的没一台联网设备规定一个地址。


 IP层:

   IP层接收由更低层发来的数据包,并把该数据包发送到更高层---TCP层或UDP层;相反,IP层也把从TCP或UDP层接收来的数据包传送到更低层。P数据包是不可靠的,因为IP并没有做任何事情来确认数据包是否按顺序发送的或者有没有被破坏,IP数据包中含有发送它的主机的地址(源地址)和接收它的主机的地址(目的地址)。

 TCP层:

   TCP是面向连接的通信协议,通过三次握手建立连接,通讯完成时要拆除连接,由于TCP是面向连接的所以只能用于端到端的通讯。

   TCP提供的是一种可靠的数据流服务,采用“带重传的肯定确认”技术来实现传输的可靠性。TCP还采用一种称为“滑动窗口”的方式进行流量控制,所谓窗口实际表示接收能力,用以限制发送方的发送速度。

   如果IP数据包中有已经封好的TCP数据包,那么IP将把它们向‘上’传送到TCP层。TCP将包排序并进行错误检查,同时实现虚电路间的连接。TCP数据包中包括序号和确认,所以未按照顺序收到的包可以被排序,而损坏的包可以被重传。

   TCP将它的信息送到更高层的应用程序,例如Telnet的服务程序和客户程序。应用程序轮流将信息送回TCP层,TCP层便将它们向下传送到IP层,设备驱动程序和物理介质,最后到接收方。

   面向连接的服务(例如Telnet、FTP、rlogin、X Windows和SMTP)需要高度的可靠性,所以它们使用了TCP。DNS在某些情况下使用TCP(发送和接收域名数据库),但使用UDP传送有关单个主机的信息。

 UDP层:

   UDP是面向无连接的通讯协议,UDP数据包括目的端口号和源端口号信息,由于通讯不需要连接,所以可以实现广播发送。

   UDP通讯时不需要接收方确认,属于不可靠的传输,可能会出现丢包现象,实际应用中要求程序员编程验证。

   UDP与TCP位于同一层,但它不管数据包的顺序、错误或重发。因此,UDP不被应用于那些使用虚电路的面向连接的服务,UDP主要用于那些面向查询---应答的服务,例如NFS。相对于FTP或Telnet,这些服务需要交换的信息量较小。使用UDP的服务包括NTP(网络时间协议)和DNS(DNS也使用TCP)。

   欺骗UDP包比欺骗TCP包更容易,因为UDP没有建立初始化连接(也可以称为握手)(因为在两个系统间没有虚电路),也就是说,与UDP相关的服务面临着更大的危险


 TCP/IP协议栈的四层结构:

   1)网络访问层:相当于OSI模型的物理层和数据链路层

       在TCP/IP参考模型中并没有详细描述,只是指出主机必须使用某种协议与网络连接。

   2)互联网层(网络层):相当于OSI模型的网络层

        是整个体系结构的关键部分,其功能是使主机可以把的不足发往任何网络,并使分组独立地传向目标。

        这些分组可能经由不同的网络,到达的顺序和发送的顺序也可能不同。高层如果需要顺序收发,那么就必须自行处理对分组的排序。互联网层使用因特网协议(IP,Internet Protocol)。

   3)传输层:

        使源端和目的机上的对等实体可以进行会话。

        在这一层定义了两个端到端的协议:传输控制协议和用户数据报协议。

        TCP是面向连接的协议,它提供可靠的报文传输和对上层应用的连接服务。

        为此,除了基本的数据传输外,它还有可靠性保证、流量控制、多路复用、优先权和安全性控制等功能。

   4)应用层:相当于OSI模型的表示层、会话层和应用层

         包含的所有的高层协议,包括:

         虚拟终端协议(TELNET,TELecommunications NETwork):TELNET允许一台机器上的用户登录到远程机器上,并进行工作

         文件传输协议(FTP,File Transfer Protocol):FTP提供有效地将文件从一台机器上移到另一台机器上的方法

         电子邮件传输协议(SMTP,Simple Mail Transfer Protocol):SMTP用于电子邮件的收发;

         域名服务(DNS,Domain Name Service);DNS用于把主机名映射到网络地址

         网上新闻传输协议(NNTP,Net News Transfer Protocol):NNTP用于新闻的发布、检索和获取

         超文本传送协议(HTTP,HyperText Transfer Protocol):HTTP用于在WWW上获取主页。

         ...

    互联网层的IP协议:

    存在着这样的协议关系:

    ICMP协议          IGMP协议  依赖于

           Internet Protocol -- IP

     ARP协议           ARAP协议  和网络访问层进行通信

    ICMP协议:是网络层的补充,可以回送报文。用来检测网络是否通畅。

              Ping命令就是发送ICMP的echo包,通过回送的echo relay进行网络测试。

    GMP:互联网组管理协议

    ARP协议:地址解析协议,将逻辑地址转变为物理地址

         在已知逻辑地址的情况下,获取对应逻辑地址的物理地址

         如何解析:

            1.在每一个参与网络功能的设备中都有一个ARP库;

            2.ARP缓存:通过ARP协议进行广播,指定的目标主机进行回应,本机缓存对应的结果信息;

    RARP:反向地址解析协议

          已知本机的物理地址,来获取合法的逻辑地址

          通常用于无盘工作站

  接口类型:

     传输层和应用层之间的接口叫协议接口

     传输层和互联网层之间的接口叫协议号

     互联网层和网路访问层之间的接口叫做协议类型

  互联网协议的特征:

     1.运行于OSI网络层

     2.面向无连接:

        1)无需再通信之前建立通信连接,也无需维护链接稳定,通信结束也无需拆除链接;

        2)无序数据传输

        3)没有所谓的数据恢复和数据可靠性保证

     3.独立处理数据包

        只有IP协议可以处理网络的数据

     4.分层编址

     5.尽力而为传输

     6.无数据恢复功能

  为什么使用IP地址?

    它们可唯一标识IP网络中的每台设备。

    每台主机必须具有唯一的地址。

  主机ID:

     标识单个主机

     由组织分配给各设备   

  地址分为两部分:

     网络部分:用来描述指定主机所在的网络范围

     主机部分:用来描述指定主机在特定的网络范围中的具体位置


 IP地址:

      IP地址是由IPv4协议定义的,整个地址由32位二进制位构成,包含网络位和主机位两部分。

   IP地址的分类:

     A类:第1位必须是0,第一个二进制位必须是0,并且网络位8位

     B类:前2位必须是10:前两个二进制位必须为10,并且网络位16为

     C类:前3位必须是110,并且网络位24位

     D类:前4位1110,并且网络位32位,通常用于组播通信

     E类:前4位1111,没有网络位要求,保留用于科学研究

   IP地址的十进制表示法:

     1.将32位的IP地址位,以8位为一组,分为4组;

     2.每一组之间使用.符号进行分割;

     3.将每个8位组转换为10进制表示

   使用点分十进制表示法表示的各类IP地址范围:

     A类:0.0.0.0~127.255.255.255

         有效的A类地址:1.0.0.0~126.255.255.255

         注意:

           第一个8位组全为0的,是无效IP,因为其表示整个IP地址栈;

           第一个8位组中除了第一位以外全部为1,称为环回地址;

     B类:128.0.0.0~192.255.255.255

          10000000.00000000.00000000.00000000


          10111111.11111111.11111111.11111111


     C类:192.0.0.0~223.255.255.255

          11000000.00000000.00000000。00000000


          10111111 11111111 11111111 11111111


     D类:224.0.0.0 ~239.255.255.255

         11100000.00000000.00000000.00000000


         11101111.11111111.11111111.11111111


     E类:240.0.0.0 ~ 255.255.255.255

         1110000.00000000.00000000.00000000


         11111111.11111111.11111111.11111111


保留地址:不能选择为其他主机配置使用的IP地址

0.0.0.0-0.255.255.255:0这个网段

127.0.0.0-127.255.255.255:127这个网段


自动分配地址段:

169.254.0.0-169.254.255.255


网络地址:

 主机位全为0的地址;

 1.0.0.0:表示一个范围的名称


广播地址:

主机位全为1的地址;

1.255.255.255:作为目的地址代表整个网段中的所有IP地址


定向广播地址:

255.255.255.255:作为目的地址代表整个IP地址栈中的所有IP地址

为了解决IP地址枯竭的问题:

  增加IP地址的复用次数;

      私有IP地址:在不同的网络中,可以重复使用,但是不能访问互联网,互联网无法为其路由

         A类:10.0.0.0-10.255.255.255

         B类:172.16.0.0-172.31.255.255

         C类:192.168.0.0-192.168.255.255

      公有IP地址:可以在互联网中使用,但必须唯一

      NAT:Network Address Translation

         SNAT:源地址转换,使用公有IP地址替换数据包中的私有IP地址;

         DNAT:目的地址转换,使用私有IP地址替换数据包中的公有IP地址

  研究更加庞大的地址栈:

      IPv6:128bit,2^128个IP地址

        冒号分十六进制;


 IPv4和IPv6共存:

   1.地址转换

   2.IPv6地址包含IPv4地址:IPv6地址的最右侧的32位就是IPv4地址


 IP协议是如何进行数据封装的:

2010040610020281.jpg

   IP首部的格式:

      Version:4bits,协议版本信息;IPv4:0100  IPv6:0110

      IHL:Internet Protocol Header Length ,IP首部长度,4bits,首部最大长度为15行

         20byte ~ 60Byte,必须为4的整数倍,默认为20Byte

      服务类型:

          4bits:服务类型

             0000,0001,0010,0100,1000:最大带宽,最小延迟,最大吞吐量,最高可靠性

          1bit:保留位

          3bits:优先级

             000,001,010,011,100,101,110,111 

      数据包长度:16bits,最大长度为65536Byte,包括首部;64KB

      标识:标识数据的来源,标识指定的数据是由那个原数据分片得到的;

      标志:3bits,

          第一位:保留

          第二位: 是否分片

          第三位:是否有更多分片,表示数据是否为最后一个分片

          000,010,011

      片偏移:13bits,IP协议在对数据包分片之后的序号;

      生存时间(Time To Live,TTL);8bits,计数器,每一个数据包都会获得一个初始化的TTL值,在每次经过路由设备之后,都会自减1,0表示该数据包为不可用数据,下一次路  由设备将其获得后,会直接丢弃;可以有效防止数据包的无限循环传输

       初始值为:255,128,64

      协议号:

         8bits,互联网层和传输层直接的通信接口,根据协议号指示的内容,正确接受数据之后,向上交给传输层的哪个协议进行进一步解封处理:

         TCP:6

         UCP:17

         OSPF:89

         EIGRP:88

       首部校验和:16bits,进行首部的可靠性校验,校验首部格式是否完整

       源地址:

         32bits,发送方地址

       目的地址:

         32bits,接收方地址