SO_SNDBUF 發(fā)送緩沖區(qū)大小 int
設(shè)置發(fā)送緩沖區(qū)保留大小
與 SO_MAX_MSG_SIZE 或TCP滑動(dòng)窗口無關(guān)如果一般發(fā)送
包很大很頻繁
那么解決這個(gè)選項(xiàng)
每個(gè)套接口都一個(gè)發(fā)送緩沖區(qū)和一個(gè)接收緩沖區(qū)
接收緩沖區(qū)被TCP和UDP用來將接收到
數(shù)據(jù)一直保存到由解決進(jìn)程來讀
TCP:TCP通告另一端
窗口大小
TCP套接口接收緩沖區(qū)不可能溢出
因?yàn)閷?duì)方不允許發(fā)出超過所通告窗口大小
數(shù)據(jù)
這就
TCP
流量控制
如果對(duì)方無視窗口大小而發(fā)出了超過宙口大小
數(shù)據(jù)
則接 收方TCP將丟棄它
UDP:當(dāng)接收到
數(shù)據(jù)報(bào)價(jià)裝不進(jìn)套接口接收緩沖區(qū)時(shí)
此數(shù)據(jù)報(bào)價(jià)就被丟棄
UDP
沒
流量控制
;快
發(fā)送者可以很容易地就淹沒慢
接收者
導(dǎo)致接收方
UDP丟棄數(shù)據(jù)報(bào)價(jià)
SO_RCVLOWAT 接收緩沖區(qū)下限 int
SO_SNDLOWAT 發(fā)送緩沖區(qū)下限 int
每個(gè)套接口都一個(gè)接收低潮限度和一個(gè)發(fā)送低潮限度
它們
函數(shù)selectt解決
接收低潮限度
讓select返回“可讀”而
套接口接收緩沖區(qū)中必須
數(shù)據(jù)總量
——對(duì)于一個(gè)TCP或UDP套接口
此值缺省為1
發(fā)送低潮限度
讓select返回“可寫” 而
套接口發(fā)送緩沖區(qū)中必須
可用空間
對(duì)于TCP套接口
此值常缺省為2048
對(duì)于UDP解決低潮限度
由于其發(fā)送緩沖區(qū)中可用空間
字節(jié)數(shù)
從不變化
只要 UDP套接口發(fā)送緩沖區(qū)大小大于套接口
低潮限度
這樣
UDP套接口就總
可寫
UDP沒
發(fā)送緩沖區(qū)
只
發(fā)送緩沖區(qū)
大小
SO_RCVTIMEO 接收超時(shí) struct timeval
SO_SNDTIMEO 發(fā)送超時(shí) struct timeval
SO_REUSERADDR 允許重用本地地址和端口 int
充許綁定已被解決地址(或端口號(hào))
可以辦法bind
man
SO_EXCLUSIVEADDRUSE
獨(dú)占模式解決端口就
不充許和其它源代碼解決SO_REUSEADDR共享
解決某一端口
確定多重綁定解決誰
時(shí)候
根據(jù)一條原則
誰
指定最明確則將包遞交給誰
而且沒
權(quán)限之分
也就
說低級(jí)權(quán)限
用戶
可以重綁定
高級(jí)權(quán)限如服務(wù)啟動(dòng)
端口上
這
非常重大
一個(gè)安全隱患
如果不想讓自己源代碼被監(jiān)聽那么解決這個(gè)選項(xiàng)
SO_TYPE 獲得套接字類型 int
SO_BS數(shù)碼相機(jī)OMPAT 與BSD系統(tǒng)兼容 int
==========================================================================
IPPROTO_IP
--------------------------------------------------------------------------
IP_HDRINCL 數(shù)據(jù)包中包含IP首部 int
這個(gè)選項(xiàng)常用于黑客技術(shù)中隱藏自己
IP地址
IP_OPTINOS IP首部選項(xiàng) int
IP_TOS 服務(wù)類型
IP_TTL 生存時(shí)間 int
以下IPV4選項(xiàng)用于組播
IPv4 選項(xiàng) 數(shù)據(jù)類型 描 述
IP_ADD_MEMBERSHIP struct ip_mreq 加入到組播組中
IP_ROP_MEMBERSHIP struct ip_mreq 從組播組中退出
IP_MULTICAST_IF struct ip_mreq 指定提交組播報(bào)價(jià)文接口
IP_MULTICAST_TTL u_char 指定提交組播報(bào)價(jià)文TTL
IP_MULTICAST_LOOP u_char 使組播報(bào)價(jià)文環(huán)路效或無效
頭文件中定義了ip_mreq結(jié)構(gòu):
[code:1:63724de67f]
struct ip_mreq {
struct in_addr imr_multiaddr; /* IP multicast address of group */
struct in_addr imr_interface; /* local IP address of interface */
};
[/code:1:63724de67f]
若進(jìn)程要加入到一個(gè)組播組中用soket
setsockopt()函數(shù)發(fā)送該選項(xiàng)
該選項(xiàng)類型
ip_mreq結(jié)構(gòu)
它
第一個(gè)字段imr_multiaddr指定了組播組
地址
第二個(gè)字段imr_interface指定了接口
IPv4地址
IP_DROP_MEMBERSHIP
該選項(xiàng)用來從某個(gè)組播組中退出數(shù)據(jù)結(jié)構(gòu)ip_mreq
解決辦法與上面相同
IP_MULTICAST_IF
該選項(xiàng)可以修改網(wǎng)絡(luò)接口結(jié)構(gòu)ip_mreq中定義新
接口
IP_MULTICAST_TTL
設(shè)置組播報(bào)價(jià)文數(shù)據(jù)包
TTL(生存時(shí)間)
默認(rèn)值
1
表示數(shù)據(jù)包只能
本地
子網(wǎng)中傳送
IP_MULTICAST_LOOP
組播組中成員自己也會(huì)收到它向本組發(fā)送
報(bào)價(jià)文
這個(gè)選項(xiàng)用于抉擇
否激活這種狀態(tài)