IP数据报
1. IP数据报究竟是个什么鬼
IP是TCP‘/IP协议族中的核心协议。所有UDP、TCP、ICMP和IGMP数据都是通过IP数据报传输。IP提供了一种尽力而为、无连接的数据报交付服务。
1.尽力而为的含义是IP数据报在传送到目的地的时候,有可能会丢弃一部分流量(这一点由IPv4与IPv6中的DS字段和ECN两者决定)。
2.无连接意味着IP不维护网络单元(即路由器)中数据报相关的任何链接状态信息,每个数据报独立于其他数据报来处理。这也意味着IP数据报可不按顺序交付。
2 IPv4头部和IPv6头部
2.1 IPv4头部
2.1.1 先把一些easy的记住,再搞花里胡哨的Internet校验、DS字段和ECN
2.1.2 Internet检验和
Internet头部检验和字段仅仅(注意是仅仅,不做高考语文阅读理解)计算IPv4头部,也就意味着它不管后面的IPv4数据报有效负载(例如TCP和UDP数据报)的正确性。这些有效负载自己弄自己不理他。
Intemet校验和是一个16位的数字和,它能以相当高的概率确定接收的消息或其中的部分内容是否与发送的相匹配。注意,Intemet校验和算法与常见的循环冗余校验(CRC)[PB61]不同,后者提供了更强的保护功能。
CRC不记得的可以看一下CSDN博主weizhengbo的文章《细说循环冗余校验码》,原文链接:https://blog.csdn.net/weizhengbo/article/details/75040495?depth_1-utm_source=distribute.pc_relevant.none-task&utm_source=distribute.pc_relevant.none-task
它的加和符合数学性质如下:
代码(c语言):
#include<stdio.h>
void main()
{
int buff[