IP/IGMP/UDP校验和算法】的更多相关文章

校验和算法:IP.IGMP.UDP和TCP报文头部都有检验和字段,其算法都是一样的. IP.IGMP.UDP和TCP校验和的范围:仅报文头部长度. 在发送数据时,为了计算数据包的检验和.应该按如下步骤: 1.把校验和字段设置为0: 2.把需要校验的数据看成以16位为单位的数子组成,依次进行二进制反码求和(需将溢出位加在低位上): 3.把得到的结果存入校验和字段中. 在接收数据时,计算数据包的检验和相对简单,按如下步骤: 1.把首部看成以16位为单位的数字组成,依次进行二进制反码求和,包括校验和字…
当用google搜索IP数据报首部校验和算法的时候,总是看到的是代码,没有看到其过程,于是就有了此文,如有错误请指正.文章省略一点,呵呵   IP/ICMP/IGMP/TCP/UDP等协议的校验和算法都是相同的,算法如下: 在发送数据时,为了计算数IP据报的校验和.应该按如下步骤: (1)把IP数据报的首部都置为0,包括校验和字段. (2)把首部看成以16位为单位的数字组成,依次进行二进制反码求和. (3)把得到的结果存入校验和字段中. 在接收数据时,计算数据报的校验和相对简单,按如下步骤:  …
1.算法思路: IP/ICMP/IGMP/TCP/UDP等协议的校验和算法都是相同的,算法如下: 在发送数据时,为了计算IP数据包的校验和.应该按如下步骤: (1)把IP数据包的校验和字段置为0: (2)把首部看成以16位为单位的数字组成,依次进行二进制反码求和: (3)把得到的结果存入校验和字段中. 在接收数据时,计算数据包的校验和相对简单,按如下步骤: (1)把首部看成以16位为单位的数字组成,依次进行二进制反码求和,包括校验和字段: (2)检查计算出的校验和的结果是否等于零(反码应为16个…
一.MAC帧头定义 /*数据帧定义,头14个字节,尾4个字节*/ typedef struct _MAC_FRAME_HEADER {  char m_cDstMacAddress[6];    //目的mac地址  char m_cSrcMacAddress[6];    //源mac地址  short m_cType;        //上一层协议类型,如0x0800代表上一层是IP协议,0x0806为arp }__attribute__((packed))MAC_FRAME_HEADER,…
网络协议: TCP/IP 和UDP/IP TCP/IP TCP/IP(Transmission Control Protocol/Internet Protocol)是一种可靠的网络数据传输控制协议.定义了主机如何连入因特网以及数据如何在他们之间传输的标准. TCP/IP协议参考模型把所有TCP/IP系列协议归类到四个抽象层中: 每一个抽象层建立在低一层提供的服务上,并且为高一层提供服务 ICMP:控制报文协议 IGMP:internet组管理协议 ARP:地址解析协议 RARP:反向地址转化协…
1 TCP/IP协议介绍 TCP/IP协议:Transmission Control Protocol/Internet Protocol 传输控制协议/因特网互联协议. TCP/IP是一个Protocol Stack,包括TCP.IP.UDP.ICMP.RIP.TELNET.FTP.SMTP.ARP等许多协议. 最早发源于1969年美国国防部(缩写为DoD)的因特网的前身ARPA网络项目,1983年1月1日,TCP/IP 取代了旧的网络控制协议NCP,成为今天的互联网和局域网的基石和标准,由互…
/// <summary> /// IP Hash负载均衡算法 /// </summary> public static class IpHash { static Dictionary<string, int> dic = new Dictionary<string, int> { { }, { }, { }, { }, {}, { }, { }, { } }; public static string ipHash(string remoteIp) {…
Socket(套接字) 阮老师的微博 (转)什么是套接字(Socket)? 应用层通过传输层进行数据通信时,TCP和UDP会遇到同时为多个应用程序进程提供并发服务的问题.多个TCP连接或多个应用程序进程可能需要 通过同一个TCP协议端口传输数据.为了区别不同的应用程序进程和连接,许多计算机操作系统为应用程序与TCP/IP协议交互提供了称为套接字 (Socket)(socket是操作系统提供出来的接口)的接口,区分不同应用程序进程间的网络通信和连接.生成套接字,主要有3个参数:通信的目的IP地址.…
IP数据报的校验: IP数据报只需要对数据头进行校验,步骤如下: 将接收到的数据的checksum字段设置为0 把需要校验的字段的所有位划分为16位(2字节)的字 把所有16位的字相加,如果遇到进位,则将高于16字节的进位部分的值加到最低位上,举例,0xBB5E+0xFCED=0x1 B84B,则将1放到最低位,得到结果是0xB84C 将所有字相加得到的结果应该为一个16位的数,将该数取反则可以得到检验和checksum. 上述第2步中也可以不用每次把进位加到低位,可以等所有数据计算结束再将高位…
首先点击编辑->首选项…
UDP是一个简单的面向数据报的运输层协议:进程的每个输出操作都产生一个UDP数据报,并组装成一份待发送的IP数据报.UDP数据报是要依赖IP数据报传送的.UDP协议并不可靠,它不能保证发出去的包会被目的端接收. UDP首部的前8个字节:16bit的源端口号.16bit的目的端口号.16bit的UDP长度.16bit的UDP检验和1. 端口号可以代表用户的程序,分别表示发送进程和接收进程.2. UDP长度字段指的是UDP首部和UDP数据的字节长度.该字段的最小值为8字节(发送一份0字节的UDP数据…
原文地址:http://www.cnblogs.com/feitian629/archive/2012/11/16/2774065.html 1.ISO开放系统有以下几层: 7 应用层 6 表示层 5 会话层 4 传输层 3 网络层 2 数据链路层 1 物理层 2.TCP/IP 网络协议栈分为应用层(Application).传输层(Transport).网络层(Network)和链路层(Link)四层. 通信过程中,每层协议都要加上一个数据首部(header),称为封装(Encapsulati…
1.ISO开放系统有以下几层: 7 应用层 6 表示层 5 会话层 4 传输层 3 网络层 2 数据链路层 1 物理层 2.TCP/IP 网络协议栈分为应用层(Application).传输层(Transport).网络层(Network)和链路层(Link)四层. 通信过程中,每层协议都要加上一个数据首部(header),称为封装(Encapsulation),如下图所示 不同的协议层对数据包有不同的称谓,在传输层叫做段(segment),在网络层叫做数据报(datagram),在链路层叫做帧…
在分析两者之间的区别之前,我们先搞清楚这两者的关系, TCP/IP协议簇  是一种网络控制协议,简单点说就是一种网络协议,我们网络中的计算机就是通过这套协议簇来进行数据通信的.这套协议簇里面包含了很多协议,比如说DNS,HTTP,ARP,ICMP等,UDP协议也是其中的一种. 关于TCP/IP协议簇详解可以参考:http://blog.chinaunix.net/uid-30077524-id-5074334.html 1.TCP/IP协议详解 TCP/IP协议集包括应用层,传输层,网络层,网络…
文章大纲 网络OSI七层及各层作用 TCP与UDP基本介绍 TCP连接过程详解 SOCKET原理与连接详解     一.网络OSI七层及各层作用   应用层:文件传输,电子邮件,文件服务,虚拟终端 TFTP,HTTP,SNMP,FTP,SMTP,DNS,Telnet 表示层:数据格式化,代码转换,数据加密 没有协议 会话层:解除或建立与别的接点的联系 没有协议 传输层:提供端对端的接口 TCP,UDP 网络层:为数据包选择路由 IP,ICMP,RIP,OSPF,BGP,IGMP 数据链路层:传输…
一:概述 - 由于 IP 的传输是无状态的,IP 提供尽力服务,但并不保证数据可以到达主机. - 所以,数据的完整性需要更上层的 传输层来保证.TCP和UDP 均属于 传输层. 二:UDP - 特点 - 不具有可靠性的数据报协议. - UDP 虽然可以确定发送消息的大小,却不能保证消息的到达. - 应用场景 - 即时通讯 - 包总量较少通讯 - 广播通信 三:TCP - 特点 - 面向连接的,可靠的流协议. - 流即为不间断的数据结构,虽然可以保证发送的顺序,但是还是犹如没有任何间隔的发送给服务…
OSI模型中最下面的两层用来解决两个硬件设备在物理上的通信问题(如规定怎么将电平信号转换为数字信号),相对应的TCP/IP模型中,这部分代表将会将机器封装为一个MAC地址来实现通讯.网络层是关于,具体到应该由谁.哪一个设备来接受传输的信号,所以对应的TCP/IP模型中,用IP地址来表示"接收方"的地址,用于建立连接. 对应到怎么实现的问题,看上图,可以看到每一层对应的包里面的头部信息,即发送的时候,从应用层到数据链路层一层层下来进行"包装",加上用于对应层的标识部分…
今天调试bug时, 忘了将原始的check_sum值reset,导致发包-抓包后发现.check-sum 错误. 来看一看check-sum:简单讲就是对要计算的数据,以16bit为单元进行累加,然后取反 checksum在收包和发包时意义不一样 TCP收包时: /* * @csum: Checksum (must include start/offset pair) * @csum_start: Offset from skb->head where checksumming should s…
以太帧: 1.前导码(7字节):使接收器建立比特同步. 2.起始定界符SFD(1字节):指示一帧的开始. 3.目的地址DA(6字节):指出要接收该帧的工作站. 4.源地址SA(6字节):指示发送该帧的工作站地址. 5.数据字段长度长度(2字节):指示其后的逻辑链路控制(LLC)数据字节的长度. 6.逻辑链路控制帧LLC:携带的用户数据. 7.填充字段PAD:以保证帧有足够长度来适应碰撞检测的需要. 8.帧校验序列FCS(4字节):采用循环冗余校验码(CRC)用于检验帧在传输过程中有无差错. ip…
计算机刚刚发明出来的时候,两台计算机之间是无法通信的,为了使计算机之间能够进行数据的交流,制定了OSI(Open SystemInterconnection)开放系统互联模型,而TCP/IP(我们所使用的)是在OSI之后发展而来的. 给大家画个OSI的参考模型: 我们可以把主机1和主机2看成是2个独立的网络.计算机之间的访问要经过复杂的层级关系,为什么要分成这么多得层级呢?肯定是为了方便开发,分散工作量,提高效率. 其中,网络层,数据链路层,物理层属于硬件. 物理层:主要制定物理设备的标准(比如…
最近面试,问到这方面的问题,这里总结一下: TCP (Transmission  Control  Protocol   传输控制协议):面向连接的,不可靠的,数据流服务.UDP (User  Datagram  Protocl   用户数据报协议):面向无连接的,不可靠的,数据报服务.TCP传输和UDP不一样,TCP传输是流式的,必须先建立连接,然后数据流沿已连接的线路(虚电路)传输.因此TCP的数据流不会像UDP数据报一样,每个数据报都要包含目标地址和端口,因为每个数据报要单独路由. TCP…
IP数据报的校验: IP数据报只需要对数据头进行校验,步骤如下: 将接收到的数据的checksum字段设置为0 把需要校验的字段的所有位划分为16位(2字节)的字 把所有16位的字相加,如果遇到进位,则将高于16字节的进位部分的值加到最低位上,举例,0xBB5E+0xFCED=0x1 B84B,则将1放到最低位,得到结果是0xB84C 将所有字相加得到的结果应该为一个16位的数,将该数取反则可以得到检验和checksum. 上述第2步中也可以不用每次把进位加到低位,可以等所有数据计算结束再将高位…
网络由下往上分为:   物理层--                       数据链路层-- 网络层--                       IP协议 传输层--                       TCP协议 会话层-- 表示层和应用层--           HTTP协议   1.TCP/IP连接  TCP 传输控制协议,是一种提供可靠数据传输的通用协议.   手机能够使用联网功能是因为手机底层实现了TCP/IP协议,可以使手机终端通过无线网络建立TCP连接.TCP协议可以…
TCP/IP 资源:http://download.csdn.net/detail/mao0514/9061265 server: #include<stdio.h> #include<winsock2.h> void main() { SOCKET servsock,clisock; struct sockaddr_in sa; struct sockaddr_in cliaddr; int servport=6666; char buff[256]; WSADATA ws; i…
一个大大的问号首先抛出,计算机之间是如何进行通信的? 计算机网络是通过传输介质.通信设施和网络通信协议,把分散在不同地点的计算机设备互连起来,实现资源共享和数据传输的系统. 网络协议就是数据按照一定的规则进行传输,为了统一网络传输的标准,国际标准化组织定义了 OSI 模型(开放系统互连参考模型). 通常 OSI 参考模型第一层到第三层称为底层(lower layer),又叫介质层(media layer),底层负责数据在网络中的传送,网络互连设备往往位于下三层,以硬件和软件的方式来实现.OSI…
http://www.cnblogs.com/feitian629/archive/2012/11/16/2774065.html 网络层的IP 协议是构成Internet 的基础.IP 协议不保证传输的可靠性,数据包在传输过程中可能丢失,可靠性可以在上层协议或应用程序中提供支持. 传输层可选择TCP 或UDP 协议.TCP 是一种面向连接的.可靠的协议,有点像打电话,双方拿起电话互通身份之后就建立了连接,然后说话就行了,这边说的话那边保证听得到,并且是按说话的顺序听到的,说完话挂机断开连接.也…
TCP/IP简介 虽然大家现在对互联网很熟悉,但是计算机网络的出现比互联网要早很多. 计算机为了联网,就必须规定通信协议,早期的计算机网络,都是由各厂商自己规定一套协议,IBM.Apple和Microsoft都有各自的网络协议,互不兼容,这就好比一群人有的说英语,有的说中文,有的说德语,说同一种语言的人可以交流,不同的语言之间就不行了. 为了把全世界的所有不同类型的计算机都连接起来,就必须规定一套全球通用的协议,为了实现互联网这个目标,互联网协议簇(Internet Protocol Suite…
在网络编程中的一个基本组件就是套接字(socket).套接字基本上是两个端点的程序之间的"信息通道".程序可能分布在不同的计算机上,通过套接字互相发送信息.套接字包括两个:服务器套接字和客户机套接字.在创建一个服务器套接字后,让它等待连接.这样它就在某个网络地址处(ip地址和端口的组合)监听,直到有客户端套接字连接.连接完成后,二者就可以进行交互了. socket套接字 一个套接字就是socket模块中socket类的一个实例.它的实例化需要3个参数: 第1个参数是地址族,默认是soc…
TCP.UDP详解 1.传输层存在的必要性 由于网络层的分组传输是不可靠的,无法了解数据到达终点的时间,无法了解数据未达终点的状态.因此有必要增强网络层提供服务的服务质量. 2.引入传输层的原因 面向连接的传输服务与面向连接的网络服务类似,都分为建立连接.数据传输.释放连接三个阶段:编址.寻址.流控制也是类似的.无连接的传输服务与无连接的网络服务也非常类似.一个很显然的问题:既然传输层的服务与网络层的服务如此相似,那么为什么我们还要两个独立的层呢? 原因在于:传输层的代码完全运行在用户的机器上,…
网络由上往下分为: 表示层和应用层 :HTTP协议(基于传输层的TCP协议,主要解决怎样包装数据) 会话层 传输层: TCP协议(基于网络层的IP协议).TPC/IP协议(主要解决数据怎样在网络中传输) 网络层: IP 协议 数据链路层 物理层 4.socket则是对TCP/IP协议的封装和应用(程序猿层面上).Socket本身并非协议.而是一个调用接口(API,它仅仅是提供了一个针对TCP或者UDP编程的接口).通过Socket,我们才干使用TCP/IP协议,实际上,Socket跟TCP/IP…