pbootcms网站模板|日韩1区2区|织梦模板||网站源码|日韩1区2区|jquery建站特效-html5模板网

如何在套接字上設置不分段 (DF) 標志?

How to set the don#39;t fragment (DF) flag on a socket?(如何在套接字上設置不分段 (DF) 標志?)
本文介紹了如何在套接字上設置不分段 (DF) 標志?的處理方法,對大家解決問題具有一定的參考價值,需要的朋友們下面隨著小編來一起學習吧!

問題描述

我正在嘗試設置 DF(不分段標志)以使用 UDP 發送數據包.

I am trying to set the DF (don't fragment flag) for sending packets using UDP.

看Richard Steven 的書Volume 1 Unix Network Programming;Sockets Networking API,我找不到如何設置它.

Looking at the Richard Steven's book Volume 1 Unix Network Programming; The Sockets Networking API, I am unable to find how to set this.

我懷疑我會用 setsockopt() 來做,但在第 193 頁的表格中找不到它.

I suspect that I would do it with setsockopt() but can't find it in the table on page 193.

請建議如何做到這一點.

Please suggest how this is done.

推薦答案

您可以使用 setsockopt() 調用來實現,使用 IP_DONTFRAG 選項:

You do it with the setsockopt() call, by using the IP_DONTFRAG option:

int val = 1;
setsockopt(sd, IPPROTO_IP, IP_DONTFRAG, &val, sizeof(val));

這是一個解釋這個的頁面更詳細.

Here's a page explaining this in further detail.

對于 Linux,您似乎必須使用值為 IP_PMTUDISC_DO(或 IP_PMTUDISC_DONT 以將其關閉)的 IP_MTU_DISCOVER 選項:

For Linux, it appears you have to use the IP_MTU_DISCOVER option with the value IP_PMTUDISC_DO (or IP_PMTUDISC_DONT to turn it off):

int val = IP_PMTUDISC_DO;
setsockopt(sd, IPPROTO_IP, IP_MTU_DISCOVER, &val, sizeof(val));

我沒有測試過這個,只是查看了頭文件和一些網絡搜索,所以你需要測試它.

I haven't tested this, just looked in the header files and a bit of a web search so you'll need to test it.

至于是否有另一種方式可以設置 DF 標志:

As to whether there's another way the DF flag could be set:

我在我的程序中找不到強制 DF 標志"的任何地方已設置,但 tcpdump 表明已設置.還有其他方法可以設置嗎?

I find nowhere in my program where the "force DF flag" is set, yet tcpdump suggests it is. Is there any other way this could get set?

從這個優秀的頁面這里:

IP_MTU_DISCOVER: 設置或接收套接字的路徑 MTU 發現設置.啟用后,Linux 將在此套接字上執行 RFC 1191 中定義的路徑 MTU 發現.在所有傳出數據報上都設置了不分段標志.系統范圍的默認值由 ip_no_pmtu_disc sysctl 控制,用于 SOCK_STREAM 套接字,并在所有其他套接字上禁用.對于非 SOCK_STREAM 套接字,用戶有責任將數據打包成 MTU 大小的塊,并在必要時進行重新傳輸.如果設置了此標志(使用 EMSGSIZE),內核將拒絕大于已知路徑 MTU 的數據包.

IP_MTU_DISCOVER: Sets or receives the Path MTU Discovery setting for a socket. When enabled, Linux will perform Path MTU Discovery as defined in RFC 1191 on this socket. The don't fragment flag is set on all outgoing datagrams. The system-wide default is controlled by the ip_no_pmtu_disc sysctl for SOCK_STREAM sockets, and disabled on all others. For non SOCK_STREAM sockets it is the user's responsibility to packetize the data in MTU sized chunks and to do the retransmits if necessary. The kernel will reject packets that are bigger than the known path MTU if this flag is set (with EMSGSIZE).

在我看來,您可以使用 sysctl 設置系統范圍的默認值:

This looks to me like you can set the system-wide default using sysctl:

    sysctl ip_no_pmtu_disc

返回<代碼>錯誤:ip_no_pmtu_disc";在我的系統上是一個未知的密鑰,但它可能被設置在你的系統上.除此之外,我不知道還有什么會影響設置(除了前面提到的 setsockopt()).

returns "error: "ip_no_pmtu_disc" is an unknown key" on my system but it may be set on yours. Other than that, I'm not aware of anything else (other than setsockopt() as previously mentioned) that can affect the setting.

這篇關于如何在套接字上設置不分段 (DF) 標志?的文章就介紹到這了,希望我們推薦的答案對大家有所幫助,也希望大家多多支持html5模板網!

【網站聲明】本站部分內容來源于互聯網,旨在幫助大家更快的解決問題,如果有圖片或者內容侵犯了您的權益,請聯系我們刪除處理,感謝您的支持!

相關文檔推薦

Assertion failed (size.widthgt;0 amp;amp; size.heightgt;0)(斷言失敗(size.width0 amp;amp; size.height0))
Rotate an image in C++ without using OpenCV functions(在 C++ 中旋轉圖像而不使用 OpenCV 函數)
OpenCV: process every frame(OpenCV:處理每一幀)
Why can#39;t I open avi video in openCV?(為什么我不能在 openCV 中打開 avi 視頻?)
OpenCV unable to set up SVM Parameters(OpenCV 無法設置 SVM 參數)
Convert a single color with cvtColor(使用 cvtColor 轉換單一顏色)
主站蜘蛛池模板: 派财经_聚焦数字经济内容服务平台 | 液压油缸-液压站生产厂家-洛阳泰诺液压科技有限公司 | 福兰德PVC地板|PVC塑胶地板|PVC运动地板|PVC商用地板-中国弹性地板系统专业解决方案领先供应商! 福建成考网-福建成人高考网 | 全钢实验台,实验室工作台厂家-无锡市辰之航装饰材料有限公司 | 许昌奥仕达自动化设备有限公司 | 3d打印服务,3d打印汽车,三维扫描,硅胶复模,手板,快速模具,深圳市精速三维打印科技有限公司 | 合金耐磨锤头_破碎机锤头_郑州市德勤建材有限公司 | 油冷式_微型_TDY电动滚筒_外装_外置式电动滚筒厂家-淄博秉泓机械有限公司 | PSI渗透压仪,TPS酸度计,美国CHAI PCR仪,渗透压仪厂家_价格,微生物快速检测仪-华泰和合(北京)商贸有限公司 | 土壤肥料养分速测仪_测土配方施肥仪_土壤养分检测仪-杭州鸣辉科技有限公司 | 无水硫酸铝,硫酸铝厂家-淄博双赢新材料科技有限公司 | 鼓风干燥箱_真空烘箱_高温干燥箱_恒温培养箱-上海笃特科学仪器 | 智能风向风速仪,风速告警仪,数字温湿仪,综合气象仪(气象五要素)-上海风云气象仪器有限公司 | 微妙网,专业的动画师、特效师、CG模型设计师网站! - wmiao.com 超声波电磁流量计-液位计-孔板流量计-料位计-江苏信仪自动化仪表有限公司 | RFID电子标签厂家-上海尼太普电子有限公司 | 外观设计_设备外观设计_外观设计公司_产品外观设计_机械设备外观设计_东莞工业设计公司-意品深蓝 | uv固化机-丝印uv机-工业烤箱-五金蚀刻机-分拣输送机 - 保定市丰辉机械设备制造有限公司 | 膜片万向弹性联轴器-冲压铸造模具「沧州昌运模具」 | 网带通过式抛丸机,,网带式打砂机,吊钩式,抛丸机,中山抛丸机生产厂家,江门抛丸机,佛山吊钩式,东莞抛丸机,中山市泰达自动化设备有限公司 | 中控室大屏幕-上海亿基自动化控制系统工程有限公司 | 高压管道冲洗清洗机_液压剪叉式升降机平台厂家-林君机电 | 济南拼接屏_山东液晶拼接屏_济南LED显示屏—维康国际官网 | 磁力加热搅拌器-多工位|大功率|数显恒温磁力搅拌器-司乐仪器官网 | 四探针电阻率测试仪-振实密度仪-粉末流动性测定仪-宁波瑞柯微智能 | 气象监测系统_气象传感器_微型气象仪_气象环境监测仪-山东风途物联网 | 济南办公室装修-厂房装修-商铺装修-工装公司-山东鲁工装饰设计 | 扬尘监测_扬尘监测系统_带证扬尘监测设备 - 郑州港迪科技有限公司 | 防渗膜厂家|养殖防渗膜|水产养殖防渗膜-泰安佳路通工程材料有限公司 | 水质传感器_水质监测站_雨量监测站_水文监测站-山东水境传感科技有限公司 | 美国查特CHART MVE液氮罐_查特杜瓦瓶_制造全球品质液氮罐 | MES系统-WMS系统-MES定制开发-制造执行MES解决方案-罗浮云计算 | 合肥白癜风医院_合肥治疗白癜风医院_合肥看白癜风医院哪家好_合肥华研白癜风医院 | T恤衫定做,企业文化衫制作订做,广告T恤POLO衫定制厂家[源头工厂]-【汉诚T恤定制网】 | 淘趣英语网 - 在线英语学习,零基础英语学习网站 | arch电源_SINPRO_开关电源_模块电源_医疗电源-东佑源 | 注浆压力变送器-高温熔体传感器-矿用压力传感器|ZHYQ朝辉 | 气弹簧定制-气动杆-可控气弹簧-不锈钢阻尼器-工业气弹簧-可调节气弹簧厂家-常州巨腾气弹簧供应商 | 电动葫芦|防爆钢丝绳电动葫芦|手拉葫芦-保定大力起重葫芦有限公司 | 宿松新闻网 宿松网|宿松在线|宿松门户|安徽宿松(直管县)|宿松新闻综合网站|宿松官方新闻发布 | 耐磨陶瓷,耐磨陶瓷管道_厂家-淄博拓创陶瓷科技 | 翅片管散热器价格_钢制暖气片报价_钢制板式散热器厂家「河北冀春暖气片有限公司」 |