V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
httpbin - 协议调试工具
httpstatuses - 协议状态码查询
httpie - cURL-like tool for humans
Fiddler
aiqier
V2EX  ›  HTTP

我们在使用 socket 编程中的 tcp 通信和 http 请求,都会设置 connect timeout, 这个连接时间就是三次握手么?

  •  
  •   aiqier · 2016-07-02 10:35:38 +08:00 · 3954 次点击
    这是一个创建于 3068 天前的主题,其中的信息可能已经有所发展或是发生改变。

    如题,这个 connect ,就是三次握手么,这个超时时间就是指三次握手的时间么?

    4 条回复    2016-07-02 12:19:27 +08:00
    bengol
        1
    bengol  
       2016-07-02 11:04:07 +08:00 via Android
    客户端前 2 次握手的时间
    2225377fjs
        2
    2225377fjs  
       2016-07-02 11:13:46 +08:00
    一般情况下 socket 层级设置 connect timeout 的确是在 connect 操作的超时(建立 tcp 连接,握手步骤),在异步或者同步的 connect 操作都有用。
    但是对于 http 层级来说,好像没有 connect timeout 这种说法,更多的是设置类似于 socket_timeout 类似的参数,这个是在一个 tcp 连接建立之后,长时间都没有 http 交互的话,服务器将会主动将这个 tcp 连接关闭。
    aiqier
        3
    aiqier  
    OP
       2016-07-02 12:16:30 +08:00
    @2225377fjs 但是无论是什么语言,在使用 http 库进行 http 请求时,都可以设置两个参数,一个是 connect timeout 一个是 readtimout
    ```
    class HTTPRequest(object):
    """HTTP client request object."""

    # Default values for HTTPRequest parameters.
    # Merged with the values on the request object by AsyncHTTPClient
    # implementations.
    _DEFAULTS = dict(
    connect_timeout=20.0,
    request_timeout=20.0,
    follow_redirects=True,
    max_redirects=5,
    decompress_response=True,
    proxy_password='',
    allow_nonstandard_methods=False,
    validate_cert=True)

    def __init__(self, url, method="GET", headers=None, body=None,
    auth_username=None, auth_password=None, auth_mode=None,
    connect_timeout=None, request_timeout=None,
    if_modified_since=None, follow_redirects=None,
    max_redirects=None, user_agent=None, use_gzip=None,
    network_interface=None, streaming_callback=None,
    header_callback=None, prepare_curl_callback=None,
    proxy_host=None, proxy_port=None, proxy_username=None,
    proxy_password=None, allow_nonstandard_methods=None,
    validate_cert=None, ca_certs=None,
    allow_ipv6=None,
    client_key=None, client_cert=None, body_producer=None,
    expect_100_continue=False, decompress_response=None,
    ssl_options=None):
    ```
    aiqier
        4
    aiqier  
    OP
       2016-07-02 12:19:27 +08:00
    @2225377fjs 这是一个 python 的客户端,你看它有:

    connect_timeout=20.0,
    request_timeout=20.0,
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3367 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 12:07 · PVG 20:07 · LAX 04:07 · JFK 07:07
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.