`
james_lover
  • 浏览: 44366 次
社区版块
存档分类
最新评论

今天被一个技术细节问到了:【关于多IP主机,客户端源IP如何选择】

阅读更多

Source address selection[http://linux-ip.net/gl/ip-cref/node155.html]

 

Linux 2.2 选择源 IP 地址使用以下三种机制:

 

1.  应用程序可以通过bind(2) 系统调用,应用至 sendmsg(2) 调用上,并通过辅助数据对象 IP_PKTINFO ,从而显式指定源 IP 地址。在这种情况下,操作系统内核仅仅检查其源 IP 地址是否正确,否则产生相应的错误。

2.  如果应用程序没有指定源IP 地址,包含源 IP 的路由表将决定数据包源 IP 地址,通过设置 ip route 命令的src 参数,从而指定源 IP 地址。如果路由表没有包含 src 属性,则使用主要 IP 地址。

3.  其它情况下内核搜寻绑定定数据包路由接口上的IP 地址, IPv6 选择第一个可用的 IP 地址。 IPv4 情况下,尽量选择与目标 IP 处于同一子网的源 IP ,如果目标 IP 与自己的所有 ip 没有处于同一子网,则使用第二种算法。

分享到:
评论

相关推荐

    .net获取客户端主机名和ip地址

    2. **GetHostEntry(string hostName)**:该方法接受一个主机名作为参数,并返回包含该主机名对应的IP地址列表的`HostEntry`对象。 ```csharp IPHostEntry hostEntry = Dns.GetHostEntry(hostName); foreach (IP...

    JS获取客户端IP地址、MAC和主机名的7个方法汇总

    ### JS获取客户端IP地址、MAC和主机名的7个方法详解 #### 一、使用JS获取客户端IP的方法 ##### 方法一:使用ActiveX获取IP(仅适用于IE浏览器) 这种方法依赖于`ActiveXObject`来实现,因此只能在允许运行ActiveX...

    java IP地址工具类,java IP地址获取,java获取客户端IP地址

    1. **获取本地IP地址**:在多网络接口的设备上,`IpUtils`可能提供方法来获取一个或所有本地IP地址。这通常需要遍历`NetworkInterface`的所有实例,并从中筛选出IPv4或IPv6的有效地址。 2. **获取客户端IP地址**:...

    java 获取客户端ip mac地址

    如果需要获取真实的客户端IP地址,还需要检查HTTP头部信息中的`X-Forwarded-For`字段。 #### 二、获取客户端 MAC 地址 获取客户端的MAC地址相对较为复杂,一般不推荐直接在Web应用中实现该功能。但在某些特定场景...

    设置域客户端桌面显示主机名和IP地址信息

    ### 设置域客户端桌面显示主机名和IP地址信息 在企业级网络环境中,为了方便技术支持人员快速定位和解决问题,经常会遇到需要在用户的计算机桌面上显示主机名、IP地址等信息的需求。传统的做法是让用户自己查找这些...

    DHCP完整服务端、客户端源代码

    2. **选择服务器**:客户端接收到来自多个服务器的DHCPOFFER后,选择一个并发送DHCPREQUEST。 3. **确认和配置**:一旦服务器确认(DHCPACK),客户端就会接收并应用配置信息。 4. **租约更新**:客户端会在租约期的...

    TCP/IP服务器和客户端

    这通常涉及到创建一个套接字,设置目标服务器的IP地址和端口号,然后调用connect函数发起连接请求。一旦连接成功,客户端可以发送数据并接收服务器的响应。 服务器端的工作则涉及监听套接字和处理连接请求。服务器...

    c#多线程socket开发(一个服务器对多个客户端)

    在服务器端的多线程开发中,我们首先需要获取主机名和IP地址,然后创建一个Socket对象,并将其绑定到指定的IP地址和端口号上。然后,我们使用Listen方法监听客户端的连接请求,并在.accept方法中创建一个新的...

    桌面显示IP主机名和自定义信息

    【标题】"桌面显示IP主机名和自定义信息"是一个实用的桌面管理工具,它能够帮助用户在桌面上直观地查看计算机的IP地址、主机名等网络信息,并且支持自定义显示其他重要的系统数据。 【描述】这个工具的核心功能是将...

    客户端源代码

    本主题聚焦于一个特定的客户端源代码实现,即“Socket客户端连接主机失败时自动跳转(多主机)”。这个功能对于网络应用程序的健壮性和可靠性至关重要,因为它允许客户端在主服务器不可用时无缝地切换到备用服务器,...

    w5500模块客户端服务器源代码

    模块内部集成了8个独立的SPI接口,每个接口都可以作为一个独立的socket,支持同时进行多个TCP或UDP连接。此外,W5500还具有自动MAC地址计算和IP包校验功能,提高了网络传输的稳定性和可靠性。 二、TCP服务器与...

    java中获取客户端IP MAC信息

    可以通过java获取客户端IPMAC主机名等信息。下载就能用,欢迎下载!

    JS简单获取客户端IP地址的方法【调用搜狐接口】

    本文实例讲述了JS简单获取客户端IP地址的方法。分享给大家供大家参考,具体如下: <!doctype html> <html> <head> <meta charset="utf-8"> <title>使用搜狐接口获取客户端IP地址</...

    dhcp服务器以及客户端源代码

    客户端选择一个合适的offer后,会发送DHCP请求(DHCP Request),服务器确认后发送DHCP确认(DHCP Ack)。在这个过程中,你可以研究客户端如何构造这些报文,以及如何处理服务器的响应。 在DHCP的实现中,通常涉及...

    Socket服务端客户端以tcp/ip协议发送接收报文

    IP(互联网协议)则是互联网上的主要通信协议,负责将数据包从源主机传输到目标主机。结合两者,TCP/IP协议提供了端到端的数据通信服务。 首先,我们来看服务端的实现。在Java中,通过`ServerSocket`类可以创建一个...

    获取本机IP和主机名方法

    首先,主机名是一个标识符,用于在网络中唯一标识一台计算机。IP地址(Internet Protocol Address)则是一个数字标识,同样用于在网络中区分不同的设备。两者都是网络通信中的关键元素。 在Windows系统中,你可以...

    VC++ 网络监控程序,分为服务端和客户端,先启动服务端,输入被监控的主机的IP,就可以了,还可以锁定该IP。客户端的作用不是太大,有兴趣的研究一下。

    程序的实现可能涉及到多线程技术,以处理并发连接和数据处理。服务端可能使用线程池管理多个客户端连接,确保系统的高效运行。同时,为了保证数据的安全性,开发者可能还会考虑加密算法,如SSL/TLS,来保护数据在...

    【精品】:c语言socket实现主机与客户端异步通信.doc

    一旦接收到第一个客户端,`flag`被设置为0,阻止服务器接受更多的连接,这样可以确保一次只处理一个客户端,但这也限制了服务器的并发能力。 12. **数据长度**: `MAXDATA`定义了最大传输数据量,这里为100字节。在...

    asp.net获取客户端IP用户名等信息

    此时,可以尝试从HTTP_X_FORWARDED_FOR头部获取原始客户端IP: ```csharp if (Request.ServerVariables["HTTP_VIA"] != null) { string user_IP = Request.ServerVariables["HTTP_X_FORWARDED_FOR"].ToString(); ...

    如何获得对方主机IP地址?

    例如,在Outlook Express或Foxmail等邮件客户端中,选择查看原始邮件信息,可以找到类似“Received: from xiecaiwen (unknown [11.111.45.25])”的信息,其中“11.111.45.25”即为发件人主机的IP地址。此外,如果您...

Global site tag (gtag.js) - Google Analytics