zoukankan      html  css  js  c++  java
  • [TCP/IP] Internet协议

    IP是TCP/IP协议族中的核心协议。

    IP提供一种尽力而为无连接数据报交付服务。

    尽力而为”的含义是不保证IP数据报能成功到达目的地。虽然IP不是简单丢弃所有不必要流量,但它也不对自己尝试交付的数据报提供保障。当某些错误发生时,IP提供一个简单的错误处理方法:丢弃一些数据(通常是最后达到的数据报)。任何可靠性必须由上层(例如TCP)提供。IPv4和IPv6都使用这种尽力而为的基本交付模式。

    无连接”意味着IP不维护网络单元(即路由器)中数据报相关的任何链接状态信息,每个数据报独立于其他数据报来处理。这也意味着IP数据报可不按顺序交付。如果一个源主机向同一目的地发送两个连续的数据报(第一个为A,第二个为B),每个数据报可以独立路由,通过不同路径,并且B可能在A之前到达。IP数据报也可能发生其他问题:它们可能在传输过程中被复制,可能改变内容从而导致错误。此外,IP之上的一些协议(通常是TCP)需要处理这些潜在问题,以便为应用提供无差错的交付。

    IPv4数据报。头部大小可变,4位的IHL字段被限制为15个32位字(60字节)。一个典型的IPv4头部包含20字节(没有选项)。源地址和目的地址的长度为32位。第二个32位字的大部分用于IPv4分片功能,头部校验和有助于确保头部字段被正确发送到目的地,但不保护数据内容

    IPv6头部大小固定(40字节),并包含128位源地址和目的地址。下一个头部字段用于说明IPv6头部之后其他拓展头部的存在和类型,它们形成一条包含特殊拓展或处理指令的头部链。应用数据跟在这条头部链之后。通常紧跟者是一个传输层头部。

    版本字段:IPv4(0100),IPv6(0110)。
    Internet头部长度(IHL)字段保存IPv4头部中32位字的数量,包含任何选项。这个字段正常值为5(0101)
    DS字段:区分服务字段
    ECN:显式拥塞通知
    总长度字段:IPv4数据报的总长度。通过这个字段和IHL字段,可以得知数据报的数据部分从哪里开始,以及它的长度。因为一些携带IPv4数据报的低层协议不能(准确)表达自己封装的数据报大小,所以需要在头部中给出总长度字段。IPv4数据报的最大长度(包括头部)为65535字节(2^16)。由于链路层不能携带这么大的数据,就需要将IP分片。UDP协议传输数据的应用程序限制使用512字节大小的数据。TCP根据额外消息选择自己的数据报大小。虽然一个IPv4数据报被分为多个更小的分片时,每个分片自身仍是一个独立的IP数据报,总长度字段反映了具体的分片长度。
    标识字段:帮助识别由IPv4主机发送的数据报。对实现分片很重要,即发送主机通常发送数据报时都将一个内部计数器加1,并将该值复制到IPv4标识字段。
    生存期:设置一个数据报可经过的路由器数量的上限。当该字段值达到0时,该数据被丢弃,并使用一个ICMP消息通知发送方。
    协议字段:表示数据报有效载荷部分的数据类型。UDP为17(00010001),TCP为6(00000110)。这提供了多路分解的功能,以便IP协议可用于携带多种协议类型的有效载荷。
    头部校验和:仅计算IPv4头部。意味着IP协议不检查IPv4数据报有效载荷(例如TCP或UDP数据)的正确性。
    当一个IPv4数据报经过一台路由器时,TTL字段减1带来的结果是其头部校验和必须改变。

  • 相关阅读:
    【Codeforces 776B】Sherlock and his girlfriend
    BZOJ4942 NOI2017整数(线段树)
    BZOJ4516 SDOI2016生成魔咒(后缀数组+平衡树)
    BZOJ4943 NOI2017蚯蚓排队(哈希+链表)
    Codeforces Round#500 Div.2 翻车记
    BZOJ5093 图的价值(NTT+斯特林数)
    BZOJ2821 作诗(分块)
    BZOJ2724 [Violet]蒲公英(分块)
    BZOJ2001 HNOI2010城市建设(线段树分治+LCT)
    BZOJ1093 ZJOI2007最大半连通子图(缩点+dp)
  • 原文地址:https://www.cnblogs.com/immjc/p/7637771.html
Copyright © 2011-2022 走看看