精华内容
下载资源
问答
  • rfc791文档

    2018-11-30 10:50:15
    rfc791,里面写了很多规范,向深入学习网络知识的同学可以下载来看看
  • RFC 791

    2008-06-04 10:19:32
    IP protocol
  • RFC791

    2007-11-16 16:40:11
    2. 查找与无线局域网有关的信息,写一份报告。 3. 查找路由器和交换机市场上主流厂家的信息,就他们公司及其产品写一份报告。(要求不少于3家公司) 4. 查找与IEEE802项目相关的资料,写一篇报告。...
  • rfc791_Internet Protocol

    2018-01-20 22:26:20
    RFC 791,Internet Protocol,IP协议规范,学习IP协议的参考
  • IPv4_Specification-rfc791

    2019-04-21 23:12:00
    IPv4_Specification-rfc791: This document specifies the DoD Standard Internet Protocol.
  • RFC791 IPV4标准

    2012-06-24 22:40:54
    RFC791 INTERNET PROTOCOL DARPA INTERNET PROGRAM PROTOCOL SPECIFICATION September 1981
  • IP protocol RFC791

    2008-09-16 18:36:37
    ip protocol RFC791.INTERNET PROTOCOL DARPA INTERNET PROGRAM PROTOCOL SPECIFICATION September 1981
  • RFC791中文-IP协议

    2013-04-06 00:05:26
    RFC791 IP协议
  • RFC 791 - Internet Protocol

    2019-11-19 23:12:23
    http://www.faqs.org/rfcs/rfc791.html 计算机网络中,IP地址的重要文档,互联网的正式标准。

    http://www.faqs.org/rfcs/rfc791.html

    计算机网络中,IP地址的重要文档,互联网的正式标准。

    展开全文
  • rfc791 IP协议标准 PDF

    2009-11-12 15:06:21
    rfc791 Internet Protocol IP协议标准 PDF,英文版
  • 首先需要说明一下,前边的4份博客合起来正好包含了RFC791的全部内容。这里的全部不包含附录和分片说明的示例部分。 整个翻译过程,跨过的时间比较长。中间一度想放弃,但是咬咬牙又重新开始。 在翻译的过程中,发现...

    首先需要说明一下,前边的4份博客合起来正好包含了RFC791的全部内容。这里的全部不包含附录和分片说明的示例部分。

    整个翻译过程,跨过的时间比较长。中间一度想放弃,但是咬咬牙又重新开始。

    在翻译的过程中,发现了一个比较好的方式,就是碎片时间翻译法。RFC791的第二章,第三章基本是在地铁里站着的时候,或者是在厕所里蹲着的时候一点点翻译的。每次翻译几段,甚至一小段。

    然而,每次感觉都特别好:一是空闲时间利用起来了,心情很好;一是没有玩游戏或者浏览水木,大脑没有被连续性的娱乐占据和消耗,能够很快恢复到工作状态,很好;一是有一些产出,有零星的长进,还不错。

    估计以后会坚持这种方式。虽然不会有大的长处,不会有大的成就,但是毕竟能做些有意义的事情。接下来计划翻译QUIC协议,一种基于UDP的传输层协议,是和TCP协议相对的一种快速协议。

    另外,RFC791翻译里边有些不一致和用词不准的地方,后续会做一次统一和确认,希望能够给读者比较流畅的感觉。

    展开全文
  • RFC791(IP协议)

    千次阅读 2018-10-12 23:43:32
    即将开始RFC791的翻译工作,以下是第一篇——目录。翻译过程中随着理解的深入和对编撰者用词的把握程度,可能会不断的修改已经完成的翻译稿。 RFC791是IP协议的说明规范,在几个关键协议的RFC中是篇幅相对比较小的...

    即将开始RFC791的翻译工作,以下是第一篇——目录。翻译过程中随着理解的深入和对编撰者用词的把握程度,可能会不断的修改已经完成的翻译稿。

    RFC791是IP协议的说明规范,在几个关键协议的RFC中是篇幅相对比较小的,读过之后能够对IP协议的一些数据格式,以及某些限制条件出现的原因有清晰的认识。

    阅读之前可以先把TCP/IP详解卷中IP协议部分的问题看一遍,带着问题去看RFC791协议效果更好。

    RFC791英文原文可见:https://tools.ietf.org/html/rfc791。

    目录:

    1. 引言
      1.1 动机
      1.2 范围
      1.3 接口
      1.4 操作
    2. 综述
      2.1 关联协议
      2.2 操作模型
      2.3 功能说明
      2.4 网关
    3. 详解
      3.1 IP头格式
      3.2 讨论
      3.3 接口

    附录1: 示例和场景
    附录2: 数据传输顺序
    名词释义
    引用

    展开全文
  • IP协议标准规范、接口..
  • IP header的结构由RFC 791定义,如图(第一行每个数字代表一个bit位): 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ ...
        
    IP header的结构由RFC 791定义,如图(第一行每个数字代表一个bit位):
    
        0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 
       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
       |Version|  IHL  |Type of Service|          Total Length         |
       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
       |         Identification        |Flags|      Fragment Offset    |
       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
       |  Time to Live |    Protocol   |         Header Checksum       |
       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
       |                       Source Address                          |
       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
       |                    Destination Address                        |
       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
       |                    Options                    |    Padding    |
       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    然后TCP header的结构是由RFC 793定义的:
    
        0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 
       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
       |          Source Port          |       Destination Port        |
       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
       |                        Sequence Number                        |
       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
       |                    Acknowledgment Number                      |
       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
       |  Data |           |U|A|P|R|S|F|                               |
       | Offset| Reserved  |R|C|S|S|Y|I|            Window             |
       |       |           |G|K|H|T|N|N|                               |
       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
       |           Checksum            |         Urgent Pointer        |
       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
       |                    Options                    |    Padding    |
       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    

    摘自:

    1. https://www.binarytides.com/raw-sockets-c-code-linux/

    2. https://www.binarytides.com/raw-socket-programming-in-python-linux/

    3. https://wordpress.youran.me/python-raw-socket-programming/

    /*
        Raw TCP packets
        Silver Moon (m00n.silv3r@gmail.com)
    */
    #include<stdio.h>   //for printf
    #include<string.h> //memset
    #include<sys/socket.h>  //for socket ofcourse
    #include<stdlib.h> //for exit(0);
    #include<errno.h> //For errno - the error number
    #include<netinet/tcp.h> //Provides declarations for tcp header
    #include<netinet/ip.h>  //Provides declarations for ip header
    
    /* 
        96 bit (12 bytes) pseudo header needed for tcp header checksum calculation 
    */
    struct pseudo_header
    {
        u_int32_t source_address;
        u_int32_t dest_address;
        u_int8_t placeholder;
        u_int8_t protocol;
        u_int16_t tcp_length;
    };
    
    /*
        Generic checksum calculation function
    */
    unsigned short csum(unsigned short *ptr,int nbytes) 
    {
        register long sum;
        unsigned short oddbyte;
        register short answer;
    
        sum=0;
        while(nbytes>1) {
            sum+=*ptr++;
            nbytes-=2;
        }
        if(nbytes==1) {
            oddbyte=0;
            *((u_char*)&amp;oddbyte)=*(u_char*)ptr;
            sum+=oddbyte;
        }
    
        sum = (sum>>16)+(sum &amp; 0xffff);
        sum = sum + (sum>>16);
        answer=(short)~sum;
        
        return(answer);
    }
    
    int main (void)
    {
        //Create a raw socket
        int s = socket (PF_INET, SOCK_RAW, IPPROTO_TCP);
        
        if(s == -1)
        {
            //socket creation failed, may be because of non-root privileges
            perror("Failed to create socket");
            exit(1);
        }
        
        //Datagram to represent the packet
        char datagram[4096] , source_ip[32] , *data , *pseudogram;
        
        //zero out the packet buffer
        memset (datagram, 0, 4096);
        
        //IP header
        struct iphdr *iph = (struct iphdr *) datagram;
        
        //TCP header
        struct tcphdr *tcph = (struct tcphdr *) (datagram + sizeof (struct ip));
        struct sockaddr_in sin;
        struct pseudo_header psh;
        
        //Data part
        data = datagram + sizeof(struct iphdr) + sizeof(struct tcphdr);
        strcpy(data , "ABCDEFGHIJKLMNOPQRSTUVWXYZ");
        
        //some address resolution
        strcpy(source_ip , "192.168.1.2");
        sin.sin_family = AF_INET;
        sin.sin_port = htons(80);
        sin.sin_addr.s_addr = inet_addr ("1.2.3.4");
        
        //Fill in the IP Header
        iph->ihl = 5;
        iph->version = 4;
        iph->tos = 0;
        iph->tot_len = sizeof (struct iphdr) + sizeof (struct tcphdr) + strlen(data);
        iph->id = htonl (54321);    //Id of this packet
        iph->frag_off = 0;
        iph->ttl = 255;
        iph->protocol = IPPROTO_TCP;
        iph->check = 0;     //Set to 0 before calculating checksum
        iph->saddr = inet_addr ( source_ip );   //Spoof the source ip address
        iph->daddr = sin.sin_addr.s_addr;
        
        //Ip checksum
        iph->check = csum ((unsigned short *) datagram, iph->tot_len);
        
        //TCP Header
        tcph->source = htons (1234);
        tcph->dest = htons (80);
        tcph->seq = 0;
        tcph->ack_seq = 0;
        tcph->doff = 5; //tcp header size
        tcph->fin=0;
        tcph->syn=1;
        tcph->rst=0;
        tcph->psh=0;
        tcph->ack=0;
        tcph->urg=0;
        tcph->window = htons (5840);    /* maximum allowed window size */
        tcph->check = 0;    //leave checksum 0 now, filled later by pseudo header
        tcph->urg_ptr = 0;
        
        //Now the TCP checksum
        psh.source_address = inet_addr( source_ip );
        psh.dest_address = sin.sin_addr.s_addr;
        psh.placeholder = 0;
        psh.protocol = IPPROTO_TCP;
        psh.tcp_length = htons(sizeof(struct tcphdr) + strlen(data) );
        
        int psize = sizeof(struct pseudo_header) + sizeof(struct tcphdr) + strlen(data);
        pseudogram = malloc(psize);
        
        memcpy(pseudogram , (char*) &amp;psh , sizeof (struct pseudo_header));
        memcpy(pseudogram + sizeof(struct pseudo_header) , tcph , sizeof(struct tcphdr) + strlen(data));
        
        tcph->check = csum( (unsigned short*) pseudogram , psize);
        
        //IP_HDRINCL to tell the kernel that headers are included in the packet
        int one = 1;
        const int *val = &amp;one;
        
        if (setsockopt (s, IPPROTO_IP, IP_HDRINCL, val, sizeof (one)) < 0)
        {
            perror("Error setting IP_HDRINCL");
            exit(0);
        }
        
        //loop if you want to flood :)
        while (1)
        {
            //Send the packet
            if (sendto (s, datagram, iph->tot_len , 0, (struct sockaddr *) &amp;sin, sizeof (sin)) < 0)
            {
                perror("sendto failed");
            }
            //Data send successfully
            else
            {
                printf ("Packet Send. Length : %d \n" , iph->tot_len);
            }
        }
        
        return 0;
    }
    
    //Complete
    
    展开全文
  • RFC791中文文档

    2008-11-28 09:32:12
    本文档详细说明叻国防部(DoD)的标准互联网协议.文档基于APRA互联网协议的前六个早期版本.很多人对规范的概念以及正文作出过贡献.这个版本对寻址(addressing),错误处理(error handling ),选项编码(option codes),以及...
  • IP协议RFC 791

    2016-10-08 21:48:40
    这个在DNS中会有更好的实现,TCP/IP卷I说明,类似RFC是做整体的说明,而这些东西的实际用途需要在上层应用或者上层协议体现出现。 局域网内部报文长度比途径路由限制的最大报文长度大时,必须将报文分片。 ...
  • 1.1 动机 IP协议设计的目标是为基于分组交换计算机通信网络的互联系统提供支持,这类系统曾经被称为多类型网络系统(catenet)。IP协议实现在源和目标之间传输数据块,也就是我们常说的数据报。...
  • 序 本文档用来详细描述国防部标准IP协议(the DoD Standard Internet Protocol)。本文档基于前6版阿帕网(ARPA)IP协议规范编写而成,并且大量吸收了他们的内容。本文档的完成得益于很多人在思想和文字方面的贡献...
  • RFC791中文文档PDF格式

    2011-03-08 09:53:37
    本文档详细说明国防部(DoD)的标准互联网协议.文档基于APRA互联网协议的前六个早期版本.很多人对规范的概念以及正文作出过贡献.这个版本对寻址(addressing),错误处理(error handling ),选项编码(option codes),以及...
  • 有关 IP 包的分片 摘自rfc791 随便翻译一下,当作是学习笔记,哈哈 Fragmentation 分片 Fragmentation of an internet datagram is necessary when it originates in a local ...
  • RFC791中文

    千次阅读 2012-05-10 09:46:06
    互联网协议 DARPA互联网程序 协议规范 1981.9 防御高级研究计划结构 信息处理技术办公室 1400 Wilson Boulevard  Arlington, Virginia ... 前言 .......................................................
  • rfc791 IP协议

    千次阅读 2015-05-18 09:39:54
    简介目的在网络中,IP协议被用来从源主机向目的主机传送数据包。网络中的主机用固定长度的地址来标识。由于硬件限制,网络中只能通过有限大小的数据包,IP提供分片和重组功能来传输大的数据包。...
  • RFC791(IP协议)——协议格式

    千次阅读 2019-03-09 20:00:30
    3.1 协议头格式 先看一下协议头的全景图,每一个竖线代表一个字节 Version: 4比特 标记当前报文使用的协议格式,本文件描述的是第4版本。 IHL:4比特 表示请求头32比特字长度(单位是32比特),它的计算是从第一个...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 2,669
精华内容 1,067
关键字:

RFC791