日本高清免费一本视频100禁_在线不卡欧美精品一区二区三区_国产一区二区好的精华液_中文综合在线_国产啊啊啊视频在线观看_大地资源网免费观看高清

IT之道-艾銻知道

您當前位置: 主頁 > 資訊動態 > 艾銻分享 >

IP、ICMP、UDP、TCP 校驗和算法分享-IT運維


2020-06-03 20:34 作者:admin 瀏覽量:

IP、ICMP、UDP、TCP 校驗和算法分享-IT運維

 
IT運維工作,以服務為中心,以穩定、安全、高效為三個基本點,確保公司的互聯網業務能夠 7×24 小時為您提供高質量的服務。
 
下面由網絡運維工程師為您講解專業的解決方案 
 
以前看計算機網絡相關的書,每次看到IP或者UDP報頭校驗和時,都一瞥而過,以為相當簡單,不就是16bit數據的相加嗎。最近在研究《TCP/IP詳解 卷1:協議》這本書,看到校驗和是16bit字的二進制反碼和(暈,以前都沒注意原來是反碼和,看來以前看書不仔細啊!罪過,罪過~~),覺得很奇怪,為什么會用反碼和,而不是直接求和呢?(因為我認為TCP/IP協議里面的算法和思想一般都是非常經典的,人家這么做一定有原因的)下面就來探索一下這個校驗和算法具體怎么實現的。
 首先,IP、ICMP、UDP和TCP報文頭部都有校驗和字段,大小都是16bit,算法也基本一樣:
 在發送數據時,為了計算數據包的校驗和。應該按如下步驟:
(1)把校驗和字段置為0;   
(2)把需校驗的數據看成以16位為單位的數字組成,依次進行二進制反碼求和;   
(3)把得到的結果存入校驗和字段中。   
在接收數據時,計算數據包的校驗和相對簡單,按如下步驟:   
(1)把首部看成以16位為單位的數字組成,依次進行二進制反碼求和,包括校驗和字段;   
(2)檢查計算出的校驗和的結果是否為0;   
(3)如果等于0,說明被整除,校驗是和正確。否則,校驗和就是錯誤的,協議棧要拋棄這個數據包。
 雖然上面四種報文的校驗和算法一樣,但在作用范圍存在不同:IP校驗和只校驗20字節的IP報頭;而ICMP校驗和覆蓋整個報文(ICMP報頭+ICMP數據);UDP和TCP校驗和不僅覆蓋整個報文,而且還有12字節的IP偽首部,包括源IP地址(4字節)、目的IP地址(4字節)、協議(2字節,第一字節補0)和TCP/UDP包長(2字節)。另外UDP、TCP數據報的長度可以為奇數字節,所以在計算校驗和時需要在最后增加填充字節0(注意,填充字節只是為了計算校驗和,可以不被傳送)。
這里還要提一點,UDP的校驗和是可選的,當校驗和字段為0時,表明該UDP報文未使用校驗和,接收方就不需要校驗和檢查了!那如果UDP校驗和的計算結果是0時怎么辦呢?書上有這么一句話:“如果校驗和的計算結果為0,則存入的值為全1(65535),這在二進制反碼計算中是等效的。”
講了這么多,那這個校驗和到底是怎么算的呢?
業:IT駐場服務 網絡機房綜合布線 計算機網絡安全維護 解決方案
1. 什么是二進制反碼求和
對一個無符號的數,先求其反碼,然后從低位到高位,按位相加,有溢出則向高位進1(跟一般的二進制加法規則一樣),若最高位有進位,則向最低位進1。
首先這里的反碼好像跟我們以前學的有符號數的反碼不一樣(即正數的反碼是其本身,負數的反碼是在其原碼的基礎上,符號位不變,其余各位取反),這里不分正負數,直接每個位都取反!
上面加粗的那句是跟我們一般的加法規則不太一樣的地方:最高位有進位,則向最低位進1。確實有些疑惑,為什么要這樣做呢?仔細分析一下(為了方便說明,以 4bit二進制反碼求和舉例),上面的這種操作,使得在發生加法進位溢出時,溢出的值并不是10000,而是1111。也即是當相加結果滿1111時溢出,這樣也可以說明為什么0000和1111都表示0了(你同樣可以發現,任何數與這兩個數做二進制反碼求和運算結果都是原數,這恰好符合數0的加法意義)。
下面再舉例兩種二進制反碼求和的運算:
原碼加法運算                                               反碼加法運算
3(0011)+ 5(0101)= 8(1000)      3(1100)+ 5(1010)=  8(0111)
8(1000)+ 9(1001)= 1(0001)      8(0111)+ 9(0110)=  2(1101)
從上面兩個例子可以看出,當加法未發生溢出時,原碼與反碼加法運算結果一樣;當有溢出時,結果就不一樣了,原碼是滿10000溢出,而反碼是滿1111溢出,所以相差正好是1。舉例只是為了形象地觀察二進制反碼求和的運算規則,至于為什么要定義這樣的規則以及該運算規則還存在其它什么特性,可能就需要涉及代數理論的東西的了(嗚嗚~~數學理論沒學好啊,只能從表面上分析分析)。
另外關于二進制反碼求和運算需要說明的一點是,先取反后相加與先相加后取反,得到的結果是一樣的?。ㄊ聦嵣衔覀兊木幊趟惴ɡ铮瑤缀醵际窍认嗉雍笕》?。)
2. 校驗和算法的實現

講了什么是二進制反碼求和,那么校驗和的算法實現就簡單多了。廢話少說,直接上代碼:
 
復制代碼
代碼如下:

[cpp] view plaincopy
//計算校驗和
USHORT checksum(USHORT *buffer,int size)
{
unsigned long cksum=0;
while(size>1)
{
cksum+=*buffer++;
size-=sizeof(USHORT);
}
if(size)
{
cksum+=*(UCHAR *)buffer;
}
//將32位數轉換成16
while (cksum>>16)
cksum=(cksum>>16)+(cksum & 0xffff);
return (USHORT) (~cksum);
}
buffer是指向需校驗數據緩存區的指針,size是需校驗數據的總長度(字節為單位)
4~13行代碼對數據按16bit累加求和,由于最高位的進位需要加在最低位上,所以cksum必須是32bit的unsigned long型,高16bit用于保存累加過程中的進位;另外代碼10~13行是對size為奇數情況的處理!
14~16行代碼的作用是將cksum高16bit的值加到低16bit上,即把累加中最高位的進位加到最低位上。這里使用了while循環,判斷cksum高16bit是否非零,因為第16行代碼執行的時候,仍可能向cksum的高16bit進位。有些地方是通過下面兩條代碼實現的:cksum = (cksum >> 16) + (cksum & 0xffff);
cksum += (cksum >>16);這里只進行了兩次相加,即可保證相加后cksum的高16位為0,兩種方式的效果一樣。事實上,上面的循環也最多執行兩次!
17行代碼即對16bit數據累加的結果取反,得到二進制反碼求和的結果,然后函數返回該值。
專業:IT機房建設 辦公大樓網絡布線 IT硬件設備維護外包  運維服務方案
3. 為什么使用二進制反碼求和呢?
好了,最后一個問題,為什么要使用二進制反碼來計算校驗和呢,而不是直接使用原碼或者補碼?
這個問題我想了很久,由于水平有限實在弄不明白,于是在百度上一陣狂搜,什么都沒有(不知道是百度不給力,還是大家都不關注這個問題呢?)。果斷換google,敲了3個關鍵詞:why checksum tcp,嘿嘿 結果第二篇就是我想要的文章了?。。?br /> 先把鏈接給大家吧:http://www.netfor2.com/checksum.html
這篇文章主要介紹二進制反碼求和(the 1's complement sum)與補碼求和(the 2's complement sum)的區別,另外還說明了在TCP/IP校驗和中使用反碼求和的優點。
It may look awkword to use a 1's complement addition on 2's complement machines. This method however has its own benefits.
Probably the most important is that it is endian independent. Little Endian computers store hex numbers with the LSB last (Intel processors for example). Big Endian computers put the LSB first (IBM mainframes for example). When carry is added to the LSB to form the 1's complement sum (see the example) it doesn't matter if we add 03 + 01 or 01 + 03. The result is the same.
Other benefits include the easiness of checking the transmission and the checksum calculation plus a variety of ways to speed up the calculation by updating only IP fields that have changed.
上面是原文的一部分,說明在TCP/IP校驗和中使用反碼求和的一些優點:
a. 不依賴系統是大端還是小端。 即無論你是發送方計算或者接收方檢查校驗和時,都不需要調用htons 或者 ntohs,直接通過上面第2節的算法就可以得到正確的結果。這個問題你可以自己舉個例子,用反碼求和時,交換16位數的字節順序,得到的結果相同,只是字節順序相應地也交換了;而如果使用原碼或者補碼求和,得到的結果可能就不相同!
以上文章由北京艾銻無限科技發展有限公司整理
 
 

相關文章

IT外包服務
二維碼 關閉
主站蜘蛛池模板: freesex呦交_人人精品视频_国产日韩精品综合网站_亚欧在线高清专区_超碰97最新_亚洲欧洲一区二区在线观看_久草在线资源观看_二区三区在线 | 亚洲性日韩精品一区二区三区_5566成人网_毛片毛片毛片毛片毛片毛片毛片_国产精品美女久久久久高潮_成人九色_青青成线在人线免费啪_av中字幕久久_欧美最猛性bbbbxxxx | 亚洲欧美另类国产_欧美日韩亚洲国产一区_97久久精品人人做人人爽50路_国产在线看片免费人成视频97_国产日本一级二级三级_超碰国产人人做人人爽久_久操免费视频_欧美一区二区三区片 国产a区_99精品欧美一区二区三区_在线观看一区不卡_国产成人片无码视频在线观看_亚洲精品乱码久久观看网_国产精品久久这里只有精品_先锋中文字幕在线资源_久草在线中文888 | 四虎永久在线精品国产馆v视影院_永久免费观看美女裸体视频的网站_女教师の爆乳bd在线观看_亚洲加勒比无码一区二区_性欧美牲交xxxxx视频欧美_五月色婷婷在线影院_国产人伦视频_粉嫩av一区二区三区在线 成人一在线视频日韩国产_超碰在线公开97_久久亚洲精品国产一区_国产精品久久不能_午夜亚洲精品专区高潮日w_kaori肉感在线播放_www.四虎影视.com_欧美日韩久 | 好爽好紧好大的免费视频国产_亚洲欧美日韩久久一区二区_亚洲一级毛片免费看_国产午夜一级_成人3D动漫一区二区三区_成年免费视频播放网站推荐_FREE性欧美人与DOOG_国产成人精品免费久久久久 | 色欲AV蜜桃一区二区三_日韩激情中文字幕_亚洲一区二区三区免费看_日韩深夜视频_国产精品久国产精品_久久福利视频一区_日本高清WWW午色夜在线视频_人与性动交AAAABBBB视频 | av乱码av免费aⅴ成人_国产四区视频_www.888www看片_亚洲欧美激情小说另类_免费A级毛片无码免费视_亚洲精品在线视频播放_久久精品96_国产亚州精品美女久久久免费 | 亚瑟av亚洲精品一区二区_亚洲第三色_在线观看无码不卡AV_内射人妻无套中出无码_欧美激情五月_色婷婷久_免费欧美在线_jizz久久精品永久免费 | 亚洲第一成年人视频_麻豆网站在线_狠狠鲁视频_亚洲人成人影院在线观看_萍萍的性荡生活2_欧美一级日韩一级无毒不卡_国产精品久久精品99国产百盛_蜜臀av性久久久久蜜臀aⅴ四虎 | 欧美精品一二三区免费_性大片爱赏网免费观看_久久免费视频5_亚洲AV无码一区二区三区国产_亚洲国产成人精品在线_久草在线视频网_四虎5151久久欧美毛片_性xxxx欧美老妇胖老太269 | 日本特级淫片在线观看_看全色黄大色黄女片爽名优_老司机中文字幕_成人1区2区_美女很黄免费_亚洲成av人无码不卡影片_欧美老妇毛茸茸二毛_日韩视频精品一区 亚洲国产久_人人插人人舔_日韩无线码精品中文字幕视频手机_麻豆做爰免费观看_亚洲无码动漫一区_亚洲精品主播自拍_成人免费网站_伦理2男一女3p黑人 | 亚洲欧美另类国产_欧美日韩亚洲国产一区_97久久精品人人做人人爽50路_国产在线看片免费人成视频97_国产日本一级二级三级_超碰国产人人做人人爽久_久操免费视频_欧美一区二区三区片 国产a区_99精品欧美一区二区三区_在线观看一区不卡_国产成人片无码视频在线观看_亚洲精品乱码久久观看网_国产精品久久这里只有精品_先锋中文字幕在线资源_久草在线中文888 | 91精品国产综合久久久久影院不卡_国产精品成人一区二区_中文字幕AV一区乱码_九色tm视频_极品白浆_呻吟求饶的人妻中文字幕_中文字幕丰满伦孑_国产精品手机免费 | 天天摸天天搞_国产视频精品久久_麻豆网站免费_国产精品久久久久久久久久蜜臀_激情成人开心网_国产女精品视频网站免费_精品中文字幕在线观看_免费在线观看亚洲 | 总裁与秘书啪啪日常h男女_福利视频99_www.亚洲区_亚洲快插_麻豆tv在线_chien国产乱露脸对白_国产网红在线_国产精品久久秋霞鲁丝片 | 一级片在线免费_偷偷做久久久久网站_精品国产髙清在线看国产毛片_yjizz视频_av网站一区二区三区_国产精品国精无码A片AV_麻豆伦理视频_亚洲宅男一区 | 佐野ゆいな在线播放_人人看97_成年人在线播放_国产一区二区三区不卡av_精品人妻无码一区二区三区在线_2022精品久久久久久中文字幕_国产亚洲一卡2卡3卡4卡老狼_毛片24种姿势无遮无拦 | 91嫩草国产线免费观看_欧美日产亚洲国产精品_国产视频午夜_成人永久免费网站在线观看_逼逼操操_国产精品国产精品不卡_国产98色在线_亚洲精品一区国产精品 男人j桶进女人p无遮挡免费的视频_亚洲kkk4444在线观看_极品少妇被啪到呻吟喷水_国产精品臀控福利在线观看_97视频国产自在自线2020_视频h在线_国产成人午夜福利r在线观看观看_午夜福利啪啪片 | www.五月激情.com_国产99视频精品免费视看6_天天在线看无码AV片_在线地址一地址二免费看_88国产精品久久现线拍久青草_国产一区在_欧美黄色一区_三区高清视频 | 亚洲情综合五月天_久色精品视频_凹凸69堂国产成人精品_日日日插插插_91麻豆精品国产自产在线游戏_亚洲va中文字幕无码久久不卡_亚洲激情一级片_永久黄网站色视频免费观看 | 在线深夜视频_99精品国产一区二区三区在线观看_国产农村妇女毛片_成人乱码免费视频A片含羞草传媒_国产亚洲综合一区二区三区_亚洲精品午夜不卡_牛牛视频一区二区三区_人人人妻人人人妻人人人 | 亚洲国产熟妇无码日韩_国产亚洲欧美日韩国产片_女人天天干夜夜爽视频_日韩在线观看视频一区二区三区_中国XVIDEOS厕所偷窥_狠狠色狠狠色综合日日不卡_在线观看免费亚洲_国产又色又爽又黄的网站在线 | 青青草国产在线视频_日韩一区二区精品在线观看_精品视频国产_以色列最猛性xxxxx视频_久天啪天天久久99久久_久久精品国产色蜜蜜麻豆_gogo午夜影院_日本成aⅴ人片日本伦 | 午夜在线视频一区二区三区_国产精品91久久久久久_黄色录像a级_在线播放免费av_久久精品婷婷_美女天天干_四虎黄色录像_oxox国产午夜精品 | 国产精品久久久久久久福利竹菊_久久激情小视频_国产伦精品一区二区三区视频黑人_久久精品无码午夜福利理论片_久色成人在线_色婷婷久久综合中文久久_成人欧美一区二区三区黑人免费_国产高潮a片羞羞视频涩涩 | 无码aⅴ一区二区三区_亚洲色欲色欲欲WWW在线_国产a国产片_一一高清视频在线观看_四虎影库久免费视频_人妻少妇精品视频专区_国产在线精品免费一区_国产视频综合网 | 国产欧美一区二区精品婷婷_毛片免费视频肛交颜射免费视频_艳Z门照片无码AV_天堂va_97精品人妻系列无码人妻_40厘米全进去XXXX猛交_午夜大片网_日本热久久 | 伊人九九九有限公司_柠檬导航精品导航_67194熟妇在线观看线路1_av女优天堂在线观看_在线视频一二三_色妺妺在线视频_亚洲婷婷在线视频_国产精品熟 | 欧美人与动牲交A免费观看_一本色道综合久久亚洲精品_变态孕交videosgratis孕妇_国模无码视频一区二区三区_无码精品人妻一区二区三刘亦菲_一级片视频播放_一级成人毛片_FUCK东北老女人HD对话 | 四虎4hu永久免费_无码精品A在线观看无_精品久久人妻AV中文字幕_国产成A人亚洲精V品无码_日本xxxx网站_国产乱magnet_中文字幕无码日韩专区_久久久久亚洲精品无码网址蜜桃 | 九九视频精品全部免费播放_国产51人人成人人人人爽色哟哟_全职猎人1999在线动漫免费观看_91好色视频_九色在线网站_超碰97人人草_亚洲成AV人片高潮喷水_黄色成人在线播放 | 国产日韩在线一区_色婷婷激情一区二区三区_狠狠做五月深爱婷婷伊人_成人二区_国产又黄又大又粗视频_亚洲性免费视频_日韩三级精品_91经典在线 | cao视频_欧美亚洲三区_国产精品人妻无码久久久_亚洲一二三在线_国产精品久久久久久久久粉嫩_2021久久_黄色短片网站_免费1区2区3区 | 色欲视频综合免费天天_麻豆网站在线看_久久久久久久久久一区二区_91国内视频在线_欧美毛多水多肥妇_无码裸模视频在线观看_国产精品久人妻精品老妇_a级毛片免费 | 99精品国产在热久久无码_亚洲hd_91中文字幕在线播放_丰满少妇免费做爰大片人_亚洲综合第三页_污草莓樱桃丝瓜秋葵榴莲黄瓜白狐_欧美激情肉欲高潮无码鲁大师_男女下面一进一出免费视频网站 | av免费网页_久久久无码a片观看免费_亚洲做爰日本做爰_7799精品天天综合网_97精品在线播放_99热手机在线_亚洲色图啪啪_日韩欧美在线中文字幕 | 夜夜高潮天天爽欧美_国产精品扒开腿做爽爽爽A片小_亚洲精品污_国产特黄大片aaaaa毛片_羞羞午夜爽爽爽影视大全_5x社区sq未满十八视频在线_性中国熟妇videofreesex_caoporn国产一区二区 | 中日韩精品无码一区二区三区_国产精品福利视频一区_国产成人一区二区视频免费_国产精品麻豆视频国产馆_日本国产一区二区三区在线观看_free国产粉嫩熟妇xxxhd_国产精品无码久久综合_激情影院内射美女 | 日日噜噜夜夜狠狠久久蜜桃_CHINESE熟女熟妇1乱老女人_亚洲a片成人无码av_香蕉久久人人97超碰caoproen_2024国产在线拍揄自揄视频_国产伦精品一区二区三区无广告_在线综合视频_成人欧美一区二区三区男男 | 看a级片_亚洲乱妇老熟女爽到高潮的片_天天爽夜夜爽人人爽曰_精品久久久一二三区播放播放播放视频_国产人妻人伦精品一区二区网站_午夜看片网_呦女人与动人物A级毛片_精品无码国产污污污免费 | www·黄_亚洲熟熟妇xxxx_刺激对白勾搭视频在线观看_字幕网资源yellow在线观看_欧美一级射_大陆熟妇丰满多毛XXXX_色婷婷国产精品综合在线观看_色99在线 |