ip分包研究-以UDP为例】的更多相关文章

原文 http://www.jianshu.com/p/741cb12ab0c9 测试环境: 利用iOS的NE从TUN抓取IP packets,如下代码分析ip包: uint16_t iphid = IPH_ID(iphdr); uint16_t iphflagoff = ntohs(IPH_OFFSET(iphdr)); uint16_t iphoff = iphflagoff & IP_OFFMASK; uint8_t iphflag = iphflagoff >> 13; NSL…
源:以太网数据包.IP包.TCP/UDP 包的结构 版本号(Version):长度4比特.标识目前采用的IP协议的版本号.一般的值为0100(IPv4),0110(IPv6). IP包头长度(Header Length):长度4比特.这个字段的作用是为了描述IP包头的长度,因为在IP包头中有变长的可选部分.该部分占4个bit位,单位为32bit(4个字节),即本区域值 = IP头部长度(单位为bit)/ (8*4),因此,一个IP包头的长度最长为“1111”,即15*4=60个字节.IP包头最小…
一.计算机网络的发展历程 1.计算机网络发展 与其说计算机改变了世界,倒不如说是计算机网络改变了世界.彼时彼刻,你我都因网络而有了交集,岂非一种缘分? 计算机与网络发展大致经历如下过程:…
首先要看TCP/IP协议,涉及到四层:链路层,网络层.传输层,应用层. 当中以太网(Ethernet)的数据帧在链路层 IP包在网络层 TCP或UDP包在传输层 TCP或UDP中的数据(Data)在应用层 它们的关系是 数据帧{IP包{TCP或UDP包{Data}}} --------------------------------------------------------------------------------- 在应用程序中我们用到的Data的长度最大是多少,直接取决于底层的限…
TCP/IP协议不仅仅指的是TCP 和IP两个协议,而是指一个由FTP.SMTP.TCP.UDP.IP等协议构成的协议簇, 只是因为在TCP/IP协议中TCP协议和IP协议最具代表性,所以被称为TCP/IP协议. 1.OSI参考模型 ========================================== 物理层 作用:定义一些电器,机械,过程和规范,如集线器: PDU(协议数据单元):bit/比特 设备:集线器HUB; 注意:没有寻址的概念: ===================…
第0章 数据是如何进行一步步的封装的 第一章:mac帧头定义 帧头数据结构的定义: 一.MAC帧头定义 /*数据帧定义,头14个字节,尾4个字节*/ typedef struct _MAC_FRAME_HEADER { char m_cDstMacAddress[6]; //目的mac地址 6字节 char m_cSrcMacAddress[6]; //源mac地址 6字节 short m_cType; //上一层协议类型,如0x0800代表上一层是IP协议,0x0806为arp 占用2字节 }…
IP数据报的校验: IP数据报只需要对数据头进行校验,步骤如下: 将接收到的数据的checksum字段设置为0 把需要校验的字段的所有位划分为16位(2字节)的字 把所有16位的字相加,如果遇到进位,则将高于16字节的进位部分的值加到最低位上,举例,0xBB5E+0xFCED=0x1 B84B,则将1放到最低位,得到结果是0xB84C 将所有字相加得到的结果应该为一个16位的数,将该数取反则可以得到检验和checksum. 上述第2步中也可以不用每次把进位加到低位,可以等所有数据计算结束再将高位…
TCP头部格式 字段名称 长度(比特) 含义 TCP头部(20字节~) 发送方端口号 16 发送网络包的程序的端口号 接收方端口号 16 网络包的接收方程序的端口号 序号(发送数据的顺序编号) 32 发送方告知接收方该网络包发送的数据相当于所有发送数据的第几个字节 ACK号(接收数据的顺序编号) 32 接收方告知发送方接收方已经收到了所有数据的第几个字节.其中ACK是acknowledge的缩写 数据偏移量 4 表示数据部分的起始位置,也可以认为表示头部的长度 保留 6 该字段为保留,现在未使用…
Sendip是一个linux平台的命令行发数据包工具,目前(2018年2月)支持的协议有ipv4.ipv6.icmp.tcp.udp.bgp.rip.ntp,作者表示其他协议将会后面支持,当他有空写的时候.Sendip很强大,它支持自定义头部和数据(也就是IP层以上的整个包),没有过多的限制,所以连源IP都可以随意写,而且里面也提供了一些默认的选项,可以择需而发,非常方便.又因为它是命令行的,还支持从文件中直接读取整个packet发送,所以适合用脚本批量测试.它只是个发包工具,对于发出去的包,收…
TCP流和UDP数据报之间的区别 1.TCP本身是面向连接的协议,S和C之间要使用TCP,必须先建立连接,数据就在该连接上流动,可以是双向的,没有边界.所以叫数据流 ,占系统资源多 2.UDP不是面向连接的,不存在建立连接,释放连接,每个数据包都是独立的包,有边界,一般不会合并. 3.TCP保证数据正确性,UDP可能丢包,TCP保证数据顺序,UDP不保证 UDP使用场景 1.需要资源少,在网络情况比较好的内网,或者对于丢包不敏感的应用.如DHCP协议就是基于UDP的.一般的获取IP地址都是内网请…