精华内容
下载资源
问答
  • 如何让某台源主机跨过所有这些不兼容网络发送数据到另一台目标主机呢 ?解决办法是一层运行在每台主机和路由器上的协议软件,这个软件实现一种协议,这种协议控制主机和路由器协同工作来实现数据传输,从而消除...
    5997f0ca3f1dd734cd5be21bc439d8f6.png

    接上文:网络的相关概念介绍:以太网、局域网、互联网

    互联网络重要的特性是能由采用完全不同和不兼容技术的各种局域网和广域网组成。如何让某台源主机跨过所有这些不兼容的网络发送数据到另一台目标主机呢 ?

    解决办法是一层运行在每台主机和路由器上的协议软件,这个软件实现一种协议,这种协议控制主机和路由器协同工作来实现数据传输,从而消除不同网络之间的差异。这种协议必须提供两种基本能力:

    • 命名机制。不同局域网技术有不同和不兼容的方式来为主机分配地址,互联网络协议通过定义一种一致的主机地址格式消除了这些差异,每台主机会被分配至少一个这种互联网络地址(Internet address),这个地址唯一标识了这台主机。
    • 传送机制。在电缆上编码位和将这些位封装成帧方面,不同的联网技术有不同的和不兼容的方式,互联网络协议通过定义一种把数据位捆扎成不连续的片(包)的统一方式,消除了这些差异。一个包由包头和有效载荷组成,其中包头包括包的大小以及源主机和目标主机的地址,有效载荷包括从源主机发出的数据位。
    2652ad781d125cd2bd9b635ad82974eb.png

    上图展示了主机和路由器如何使用互联网络协议在不兼容的局域网间传送数据的一个示例。这个互联网络示例由两个局域网通过一台路由器连接而成,一个客户端运行在主机A上,主机A与LAN1相连,它发送一串数据字节到运行在主机B上的服务器端,主机B连接在LAN2上。这个过程有8个基本步骤:

    1. 运行在主机A上的客户端进行一个系统调用,从客户端的虚拟地址空间复制数据到内核缓冲区中;
    2. 主机A上的协议软件通过在数据前附加互联网络包头和LAN1帧头,创建了一个LAN1的帧。互联网络包头寻址到互联网络主机B,LAN1帧头寻址到路由器,然后它传送此帧到适配器。注意LAN1帧的有效载荷是一个互联网络包,而互联网络包的有效载荷是实际的用户数据,这种封装是基本的网络互连方法之一;
    3. LAN1适配器复制该帧到网络上;
    4. 当此帧到达路由器时,路由器的LAN1适配器从电缆上读取它,并把它传送到协议软件;
    5. 路由器从互联网络包头中提取出目标互联网络地址,并用它作为路由表的索引,确定向哪里转发这个包,本例中是LAN2。路由器剥落旧的LAN1的帧头,加上寻址到主机B的新的LAN2帧头,并把得到的帧传送到适配器;
    6. 路由器的LAN2适配器复制该帧到网络上;
    7. 此帧到达主机B时,它的适配器从电缆上读到此帧,并将它传送到协议软件;
    8. 最后主机B上的协议软件剥落包头和帧头。当服务器进行一个读取这些数据的系统调用时,协议软件最终将得到的数据复制到服务器的虚拟地址空间。
    5d214cb36e512229238b15d2e11abc80.png

    全球IP因特网

    全球IP因特网是最著名和最成功的互联网络实现。从1969年开始出现,因特网内部体系结构不断发展变化。但从20世纪80年代早期开始,客户端-服务器应用的组织就一直保持着相当的稳定。

    f10c14a257a8c0cd98305be7f07fe80f.png

    每台因特网主机都运行实现TCP/IP协议(Transmission Control Protocol / Internet Protocol,传输控制协议/互联网络协议)的软件,几乎每个现代计算机系统都支持这个协议。

    TCP/IP实际是一个协议族,每一个都提供不同的功能。如IP协议提供基本的命名方法和递送机制,这种递送机制能够从一台因特网主机往其他主机发送包,也叫做数据报(datagram)。IP机制从某种意义上而言是不可靠的,因为数据报在网络中丢失或重复,它并不会试图恢复。UDP(unreliable datagram Protocol,不可靠数据报协议)稍微扩展了IP协议,这样一来,包可以在进程间而不是在主机间传送。TCP是一个构建在IP之上的复杂协议,提供了进程间可靠的全双工连接。

    从程序员的角度,可以把因特网看做一个世界范围的主机集合,满足以下特性:

    • 主机集合被映射为一组32位的IP地址;
    • 这组IP地址被映射为一组称为因特网域名(Internet domain name)的标识符;
    • 因特网主机上的进程能够通过连接(connection)和任何其他因特网主机上的进程通信。
    4e6bdb694eb3418a09416377520607c9.png

    扩展阅读

    网络编程模型:客户端-服务器

    TCP的3次握手,4次挥手

    计算机系统的硬件组织:总线、IO、主存、CPU

    展开全文
  • App Store 自2016年6月1日开始实施全新策略,所有提交至苹果 App Store 的 iOS 应用申请必须要兼容面向硬件识别和网络路由的最新互联网协议:IPv6-only 标准。 一、IPv4与IPv6介绍 1,二者的区别 (1)IPv4 是...
    App Store 自2016年6月1日开始实施全新策略,所有提交至苹果 App StoreiOS 应用申请必须要兼容面向硬件识别和网络路由的最新互联网协议:IPv6-only 标准。

    一、IPv4与IPv6介绍
    1,二者的区别
    (1)IPv4 是互联网协议(Internet ProtocolIP)的第四版,也是第一个被广泛使用,目前运用最多的互联网技术协议。
    IPv4 地址格式是这个样子:123.58.25.46
    (2)IPv6 IPv4 的下一个版本 。IPv6 地址长度为 128 位,地址空间增加了 2^128-2^32 个,它在提高安全性方面相比前代有着较大的提升。此外,身份认证和隐私权也是 IPv6 的关键特性。
    IPv6 地址格式是这个样子:2001:da8:215:4009:250:56ff:fe97:40c7


    2,什么是IPV6-Only支持

    (1)目前当我们用 iOS 设备连接上 Wifi4G3G 等网络时,设备被分配的地址均是 IPV4 地址。但是随着运营商和企业逐渐部署 IPV6 DNS64/NAT64 网络之后,设备被分配的地址会变成 IPV6 的地址,而这些网络就是所谓的 IPV6-Only 网络,并且仍然可以通过此网络去获取 IPV4 地址提供的内容。 

    (2)这里说的支持 IPV6-Only 网络,其实就是说让应用在 IPv6 DNS64/NAT64 网络环境下仍然能够正常运行。
    (3)但由于我们目前的实际网络环境仍然是 IPV4 网络,所以应用需要能够同时保证 IPV4 IPV6 环境下的可用性。

    二、如何让应用支持IPV6-Only
    1,不要用IP地址
    比如我们与服务器进行数据请求。要使用域名(如www.hangge.com),而不是使用硬编码的 IPv4地址(123.58.25.46)。

    2,使用高级的网络API
    这些高级的网络 API 包括:CFNetworkNSURLNSURLSessionNSURLRequestNSURLConnectionWebKit。这些高级的API不仅便于使用,而且很多底层的像适配 IPv6 的工作都已经帮我们做好了,我们可以放心使用。
    而对于一些内部是封装使用高级API的第三方库:比如 ReachabilityAlamofire、最新版的 AFNetWorking。我们自然也不需要做什么,就可以兼容 IPv6

    3,让底层的socket API同时支持IPV4和IPV6
    如果我们应用中使用了长连接,那肯定会使用到底层 socket API。这就需要我们手动来判断当前网络来生成对应 IP 格式。
    推荐使用谷歌的开源库 CocoaAsyncSocket。这个是支持 IPv6 的。

    三、搭建一个IPv6测试环境
    前面讲了这么多,不如在本地搭建一个 IPv6 网络测试环境。让 App 在这个环境下跑跑看,测试下有没有问题。
    (1)首先你要有台通过网线上网的 Mac 电脑(注意是通过有线方式,不能是 WiFi 方式)
    (2)打开“系统偏好设置”,按住“Option”键的同时点击“共享
    原文:Swift - 如何让应用支持IPv6-only网络(附:搭建IPv6测试环境)

    (3)会发现在共享界面中多了个“创建 NAT64 网络”的复选框,勾选它。同时开启互联网共享功能。
    原文:Swift - 如何让应用支持IPv6-only网络(附:搭建IPv6测试环境)

    (4)这样我们就使用 Mac 做了一个 NAT64 网络热点。
    原文:Swift - 如何让应用支持IPv6-only网络(附:搭建IPv6测试环境)

    (5)最后用 iPhone 连接这个 Wi-Fi 热点,测试程序即可。注意:要把手机设置成飞行模式(先点飞行,再点WiFi)。防止手机使用蜂窝移动网络,如果有代理什么的也要去掉。
     
    原文:Swift - 如何让应用支持IPv6-only网络(附:搭建IPv6测试环境)

    (6)这里写一个很简单的测试样例,通过IP地址来获取数据(202.108.22.5 是百度搜索首页的 IP
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    //创建NSURL对象
    let urlString:String="http://202.108.22.5"
    let url:NSURL! = NSURL(string:urlString)
    //创建请求对象
    let request:NSURLRequest = NSURLRequest(URL: url)
    let session = NSURLSession.sharedSession()
    let dataTask = session.dataTaskWithRequest(request,
                   completionHandler: {(data, response, error) -> Void in
                    if error != nil{
                        print(error?.code)
                        print(error?.description)
                    }else{
                        let str = NSString(data: data!, encoding: NSUTF8StringEncoding)
                        print(str)
                    }
    }) as NSURLSessionTask

    (7)使用 iOS8 系统的手机测试下,可以发现使用 ip 是无法请求到数据的(为什么用 iOS8 后面会说明)。
    原文:Swift - 如何让应用支持IPv6-only网络(附:搭建IPv6测试环境)

    (8)如果改成通过域名的话,便可以获取到数据。
    1
    2
    //let urlString:String="http://202.108.22.5"
    let urlString:String="http://www.baidu.com"
    原文:Swift - 如何让应用支持IPv6-only网络(附:搭建IPv6测试环境)

    注意:为什么我手机在 IPv6 NAT64环境下,使用IP地址也能获取到数据?
    你的手机肯定版本是 iOS9 的。如果是 iOS8.4 及以下版本肯定是不能正常访问。
    苹果官方解释如下:
    In iOS 9 and OS X 10.11 and later, NSURLSession and CFNetwork automatically synthesize IPv6 addresses from IPv4 literals locally on devices operating on DNS64/NAT64 networks. However, you should still work to rid your code of IP address literals.

    大意就是虽然 iOS9 自动会将 IPV4 地址合成 IPV6 地址,让其在 DNS64/NAT64 网络上运行。但你仍然需要把这种写死的IP地址给去掉(比如改成域名)。

    展开全文
  • <br />设计移动网络的网站最难的一点是兼容性和跨设备访问。举个极端的例子,一个经过优化的网站在iPhone或Android设备上看起来很棒,但在 Symbian和BlackBerry上却完全崩溃,无法正常浏览。同样,一个简单的...

    设计移动网络的网站最难的一点是兼容性和跨设备访问。举个极端的例子,一个经过优化的网站在iPhone或Android设备上看起来很棒,但在 Symbian和BlackBerry上却完全崩溃,无法正常浏览。同样,一个简单的wap站点可能在手机上表现良好,但是在新的或者更先进的设备上浏览效果就大打折扣了。

    以下是一些关于移动网站测试和跨设备兼容性的具体技巧注意点

    1. 缩小焦点

    你肯定想让你的网站在所有可能访问的设备上看起来都完美无瑕,但是,对开发者和设计人员来说,这是不实际的。

    与其尝试让网站支持每一种平台,不如为网站确立一些清楚的目标平台。例如,你知道你的大部分用户使用iPhone,那么首先就应该把精力放在为网站制作一个iPhone增强版版本。

    反之,如果你的流量大部分来自亚洲、中东和南美洲,你可能应该注重网站在Symbian系统上的效果。

    还有一件必须很重要的事必须记住,下一代移动设备大部分都在使用基于Webkit渲染引擎的浏览器。诺基亚S40和S60的内置浏览器、苹果的safari、Palm的webOS、Google的Android,还有即将到来的黑莓6.0系统的浏览器都用上了Webkit。

    一致地使用Webkit并不意味着他们会用相同的方式渲染内容,但至少能给开发者们一个判断的基线。

    2. 使用模拟器

    如果手上没有任何你想测试的目标设备,模拟器也是个不错的选择。

    iphone模拟器-ibbdemo

    列举几个我们最喜爱的工具:

    • iBBDemo2 - 一个Adobe Air创建的iPad和iPhone模拟器,据说还即将推出支持Android的版本。这个应用运行速度有点慢,不过对ios设备的呈现效果模拟的很到位。
    • Android SDK - Android SDK和模拟器同时发布的,你可以在windows和Mac上安装。
    • Blackberry Web Development Page — 这个页面包括黑莓模拟器和黑莓设计技巧。
    • Symbian S60 SDKs — 诺基亚的网站上提供sybian s60的资料和模拟器。
    • Opera Mini Emulator — Opera有一个桌面版本的移动浏览器和大量的设计资源。

    3. 使用多重样式表

    在你的站点上包含一个可以用参数来增减功能的样式表,当然,必须是设备支持的。这是个优雅而有效的跨设备处理方法。

    这里有一些解决方案:

    Dominique Hazael-Massieux去年写过一篇很不错的文章,列举了一些手持设备支持的最基础的、常见的样式表参数。

    Dave Shea在2008年提供的解决方案现在仍然适用于很多设备。

    最近, Chris Coyier在 CSS-Tricks上讨论了如何通过CSS和jQuery解决屏幕尺寸和多浏览器兼容的问题,还提供了示例代码下载。

    4. 设置User Agent

    如果你想在电脑的浏览器上更直观地进行测试,改变一下user agent就可以了。每一种设备都带有属于自己的user agent,以便浏览器识别。

    Safari和Firefox都有提供改变user agent的插件,你很容易就能看到网站在其他浏览器下呈现的模样。在Firefox上,可以下载Chris Pederick的User Agent Switcher,并且可以添加更多的移动浏览器的user agent。

    一旦插件安装,你可以从菜单中选择一个新user agent,如下图所示。

    User Agent Switcher

    safari中只要启用开发模式(编辑->偏好设置->高级->选中“在菜单栏中显示‘开发’菜单”),然后从“开发”菜单下的“用户代理”中选择user agent,如下图所示。

    safari-user-agent

    5. 使用CMS

    如果你的网站使用Wordpree、Drupal这样的内容管理系统,最好的选择是使用一个移动版插件。例如wordpress上流行的WPtouch插件。这个插件有免费和付费的版本,适用于不同的设备,你甚至可以指定哪些设备启用移动版样式表、载入完整的页面。

    Drupal也有很多移动插件。

    展开全文
  • 那么如何让自己的程序兼容这个?方法其实C#本来已经提供给你的,而且很简单,(个人只懂C#,所以其他语言没研究过)不过前提就是服务器必须先申请域名,这个这里不作详解。 socket网络的知识这里也不说。不过我们...

    最近苹果升级的IOS10,所以那边网络环境变成IPV6,如果你的程序不兼容IPV6,苹果的程序会以这个不兼容的原因驳回审核。

    那么如何让自己的程序兼容这个?方法其实C#本来已经提供给你的,而且很简单,(个人只懂C#,所以其他语言没研究过)不过前提就是服务器必须先申请域名,这个这里不作详解。

    socket网络的知识这里也不说。不过我们修改的就是socket的API的某个字段,你没听错就是这样简单!

    AddressFamily.InterNetwork

    改成

    AddressFamily.InterNetworkV6
    

    就是这么简单 ,加上V6,不过我还是把完整的代码放上来,以便参考

    protected string _url = "XXXX.com";
    protected bool CreateSocket()
    	{
    		try
    		{
                IPAddress[] address = Dns.GetHostAddresses(_url);//判断域名使用是ipv6还是ipv4
                if (address.Length != 0)
                {
                    _isIpv6 = address[0].AddressFamily == AddressFamily.InterNetworkV6;//这里作一个判定,为了后面接收服务器的IPV4是否转换IPV6 这里没需要转换的话可以不写,只是一个标志位
                    _socket = new Socket(address[0].AddressFamily, SocketType.Stream, ProtocolType.Tcp);
                }
                else
                {
                    _socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
                }
                    
    			_socket.SetSocketOption(SocketOptionLevel.Socket,SocketOptionName.ReceiveTimeout,3000);
    			return true;
    		}
    		catch
    		{
    			this.OnSenderException();
    			return false;
    		}
    	}
    

      然自己搭建IPV6环境自己测试!

    转载于:https://www.cnblogs.com/xxxtony/p/7695594.html

    展开全文
  • App Store 自2016年6月1日开始实施全新策略,所有提交至苹果 App Store 的 iOS 应用申请必须要兼容面向硬件识别和网络路由的最新互联网协议:IPv6-only 标准。 一、IPv4与IPv6介绍 1,二者的区别 ...
  • 传统办公到数字化办公的发展由虚拟桌面代替了传统的PC,成为了办公领域的主流办公方式。在云办公还未普遍出现在大众的工作中时,虚拟...性能、兼容性和使用门槛更是不符合市场的需求。云办公如何改变这种现状呢?云...
  • 那么如何能拿到不被兼容的设备型号以及所不被支持的API,这个时候我们就需要只用小程序给我们提供的设备类API。现在我们来看下设备类API的使用方法。Success表示了接口调用成功的回调函数,fail代表了接口调用失败...
  • 经济结构 设计的目标是参与者和网络目标激励兼容,以尽可能少的规则务实地奖励有效和可靠的存 储。这些机制的行为以及它们之间的相互作用在设计过程中都是需要被考虑的因素。其他经济 结构和产品服务可以在...
  • Protobuf是后起之秀,其在效率、兼容性等方面更加出色。很多人在项目技术选项中,尤其是网络通信、通用数据交换等场景应该会优先选择Protobuf。 白鹭引擎首席架构师王泽曾经发布了一个开源项目Protobuf-egret,提供...
  • 在我们使用PowerShell这个Windows工具的时候,也许会遇到怎么才能在PowerShell窗口中发起的Http网络请求模拟一个真实的浏览器的问题。而这其中有两个必须知道的命令:invoke-webrequest和invoke-restmethod。因为...
  • 我们分享如何进行兼容性测试。 希望对大家有帮助。 如何开展兼容性测试? 1、Web兼容性测试 首先进行手动测试。 测试工程师测试主流浏览器和常用操作系统,以测试主流程和主界面,以查看主流程和主界面是否存在...
  • 以前前端提到网络请求通常是指浏览器,但现在随着 Node.js、小程序的出现,网络请求不再局限于浏览器。本文将带你了解不同请求的原理,以及如何为项目选择合适的请求库。1. 请求原理1.1 浏览器浏览器通过 ...
  • 目前ipv6的应用越来越广泛,慢慢将...关于如何让程序支持ipv6可以参考 https://blog.csdn.net/v6543210/article/details/106927210 示例代码见:https://github.com/alongL/ipv6_demo 这个文章只讲如何兼容ipv4和...
  • 我正在构建一个应用程序,用户在连接到wifi时上传大文件 . 唯一的问题是,当连接到多机场扩展wifi网络时,手机会在SAME SSID上的MAC地址之间切换 . 我最终得到了一系列超时,断开连接和重新连接 .谁能在这里解释我...
  • 在单位装了centos,平常进行lamp开发之余也可以学到了些linux系统维护,网络安全等方面的东西,可惜的是开发出来的网站兼容性极差,特别是人无语的IE6,没办法,用的人多,痛苦也得改,还得改好,所以记录下如何在...
  • 在做好手机站后,如何让网页自动识别移动端并作出跳转,这是个问题。现在各种移动设备太多了,要想全部涵盖挺麻烦的。其实这些问题各大网络平台早已考虑好了,这里就借用百度平台的js识别移动端,感觉还不错,兼容的...
  • 不知道你所说的连接是指用作视屏输出还是纯上网。...2. 接入到HS201后打开其配置页面,就是HS201的IP,默认为192.168.168.254,在IE下打开,我发现其管理页面对浏览器兼容貌似不太好。 3. 在Operat
  • 二十五、如何让飞秋配置默认路径跟程序同目录? 通过如下方法来实现:在同飞秋FeiQ.exe目录下(目录名最好为feiq),新建一个feiq.ini文件(内容为空),这时运行飞秋FeiQ.exe,有配置信息都会保存在飞秋同目录下的...
  • 如何查看自己电脑蓝牙的版本?

    万次阅读 多人点赞 2019-10-12 13:22:45
    蓝牙是一种短距离网络技术,可以您将兼容设备(如耳机、音箱、鼠标或键盘等)以无线的方式连接到 Windows 10 PC。尽管在大部分情况下,用户无需担心所使用蓝牙适配器的版本,但有时为子用上特殊功能,您必需拥有...
  • 而现在更多的内置网络功能被视为嵌入式系统的基本特性,同样的如何解决潜入网络具备M2M功能问题将成为未来的走向。  以太网以其容易使用、低价、高频宽、高稳定性、安全性佳以及兼容性佳等众多优点,逐渐赶超...
  • css和图片如何实现圆角边框

    千次阅读 2016-05-11 16:39:07
    圆角框,因为其样式比直角框漂亮,所以成为设计师心中偏爱的设计元素。现在的web标准下大量的网页、博客都采用圆角框设计,...我们来回顾一下目前网络流行的都有哪些解决方案。 1,无图片纯css圆角框 收录理由:兼容
  • 教你如何破解

    2012-05-20 01:55:50
    教你如何破解无线网络密码 教你如何破解随着社会的进步!WIFI上网日益普及,特别是大城市中随便在一个小区搜索一下就能找到好多热点,搜索到热点然后链接上去那么我们就可以尽情的享受免费上网服务了。 教你如何破解...
  • charles 作为平台兼容性抓包工具,在windows ...手机和电脑连接同一个网络,查询电脑的IP地址(ipconfig),查询出来后,在手机端配置代理,见如下: 手机端设置代理成功后,Charles就会弹出一个框,直接点击允许
  • SpreadJS是一款基于 HTML5 的纯前端表格控件,兼容 450 种以上的 Excel 公式,具备...离线填报,作为数据填报的典型应用场景之一,可以业务人员在生产环境中,随时随地随心的完成填报工作,而不受限于网络。 离线..

空空如也

空空如也

1 2 3 4 5 ... 17
收藏数 325
精华内容 130
关键字:

如何让网络兼容