<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    歡迎光臨郝學武的blog。

    2013年12月17日

    因為TCP端口號是16位無符號整數, 最大65535, 所以一臺服務器最多支持65536個TCP socket連接.” – 一個非常經典的誤解! 即使是有多年網絡編程經驗的人, 也會持有這個錯誤結論.

    要戳破這個錯誤結論, 可以從理論和實踐兩方面來.

    理論

    系統通過一個四元組來唯一標識一條TCP連接. 這個四元組的結構是{local ip, local port, remote ip, remote port}, 對于IPv4, 系統理論上最多可以管理2^(32+16+32+16), 2的96次方個連接. 如果不僅僅考慮TCP, 則是一個五元組, 加上協議號(TCP, UDP或者其它).

    實踐

    服務器綁定一個ip:port, 然后accept連接, 所有accept的連接使用的本地地址也是同樣的ip:port.

    擴展內容

    如果某個客戶端向同一個TCP端點(ip:port)發起主動連接, 那么每一條連接都必須使用不同的本地TCP端點, 如果客戶端只有一個IP則是使用不同的本地端口, 該端口的范圍在*nix系統上的一個例子是32768到61000, 可以通過如下命令查看:

    [root@benegg.com ~]# cat /proc/sys/net/ipv4/ip_local_port_range 32768   61000 

    也就是說, 一個客戶端連接同一個服務器(比如進行壓力測試), 最多可以發起30000個左右的連接.

    TCP客戶端(TCP的主動發起者)可以在同一ip:port上向不同的服務器發起主動連接, 只需在bind之前對socket設置SO_REUSEADDR選項.

    系統支持的最大打開文件描述符數(包括socket連接):

    [root@benegg.com ~]# cat /proc/sys/fs/file-max 580382 

    單個進程所能打開的最大文件描述符數:

    [root@benegg.com ~]# ulimit -n 1024 

    結論

    無論是對于服務器還是客戶端, 認為”一臺機器最多建立65536個TCP連接”是沒有根據的, 理論上遠遠超過這個值.

    posted @ 2013-12-17 14:10 陜西BOY 閱讀(385) | 評論 (0)編輯 收藏


    posts - 17, comments - 65, trackbacks - 0, articles - 28

    Copyright © 陜西BOY

    主站蜘蛛池模板: 亚洲综合男人的天堂色婷婷| 亚洲色无码国产精品网站可下载| 久久精品无码专区免费青青| 亚洲久悠悠色悠在线播放| 国产成人涩涩涩视频在线观看免费| 深夜福利在线免费观看| 亚洲国产精品热久久| 日韩免费高清一级毛片在线| a毛片免费全部播放完整成| 亚洲一区二区三区精品视频| 亚洲国产综合无码一区二区二三区 | 午夜免费福利影院| a毛片免费全部在线播放**| 亚洲欧洲免费无码| 日韩亚洲人成在线综合日本| 午夜免费福利网站| 最近中文字幕完整版免费高清| 国产亚洲美女精品久久| 亚洲狠狠ady亚洲精品大秀| JLZZJLZZ亚洲乱熟无码| 日韩吃奶摸下AA片免费观看| 三根一起会坏掉的好痛免费三级全黄的视频在线观看 | 亚洲欧洲国产综合| 亚洲国产婷婷香蕉久久久久久| aⅴ在线免费观看| 亚洲小说区图片区| 国产无遮挡吃胸膜奶免费看 | 亚洲高清一区二区三区| 又大又粗又爽a级毛片免费看| 人体大胆做受免费视频| 亚洲一区影音先锋色资源| 成人永久福利免费观看| 免费国产污网站在线观看| 免费国产在线精品一区| 亚洲综合欧美色五月俺也去| 亚洲综合精品一二三区在线| 久久乐国产精品亚洲综合| 国产人成免费视频| 成人免费无码视频在线网站| 16女性下面无遮挡免费| 久久国产乱子伦精品免费看|