TE
科技回声
首页24小时热榜最新最佳问答展示工作
GitHubTwitter
首页

科技回声

基于 Next.js 构建的科技新闻平台,提供全球科技新闻和讨论内容。

GitHubTwitter

首页

首页最新最佳问答展示工作

资源链接

HackerNews API原版 HackerNewsNext.js

© 2025 科技回声. 版权所有。

Tether Launches HTML5-Based iPhone Tethering Solution

105 点作者 angkec大约 13 年前

19 条评论

st3fan大约 13 年前
This is based on speculation and guesswork ... but this is what I think they were doing with their original iTether application:<p>On the client (the Mac) they have a IOKit ethernet driver that shows up in Network Settings. This becomes your default route (after some fake DHCP magic) and then captures packets and relays them to their application that runs in userland.<p>Their userland application contains a lightweight TCP/IP stack that interprets those packets. (For example <a href="http://www.sics.se/~adam/lwip/" rel="nofollow">http://www.sics.se/~adam/lwip/</a>)<p>The lightweight TCP/IP stack contains unimplemented callbacks for opening/closing sending/receiving data. In this case those callbacks are implemented as a higher level network protocol.<p>That 'wrapped' TCP/IP protocol is then relayed to the iPhone via the usbmux protocol. This allows you to map a TCP/IP service on the device to a local port on the Mac. (I happen to have written a nice usbmux proxy three years ago)<p>So now the wrapped TCP/IP is arriving at the iPhone, in the form of higher level 'network stack commands'. The iPhone app now simply has to interpret these commands and translate them into real socket open/close read/write commands.<p>At this point packets are flowing through a fake Ethernet device driver to a secondary TCP/IP stack, over a USB cable to an iOS app which will do actual socket calls and talk to the real network.<p>Soooo, my guess is that for this new app they use basically the same setup except that the iOS app is gone and replaced with a simple web page with web sockets that point to both that fake TCP/IP stack on the mac and to a hosted proxy service on their end. Relaying data back and forth.<p>Crazy hack. Amazing it works :-)
评论 #3687019 未加载
评论 #3687773 未加载
评论 #3687022 未加载
shankinson大约 13 年前
Hey guys. I'm the developer behind this tech.<p>Glad to see it's got you thinking :). It took a lot of brainstorming and testing/debugging to get this up and running.<p>Hope you enjoy it!
评论 #3686648 未加载
评论 #3686791 未加载
angkec大约 13 年前
Ok so I went ahead and bought the service. Here's what I found out: You'll have to keep the tether client application running on your Mac or PC. So not gonna work for wifi-only iPads. Then you will need to keep the html5 webpage open in order to receive data. They instruct you to set iPhone's screen lock to "never" so it doesn't automatically shuts the web page down in 1 minute or so. So I imagine you can't take phone calls when tethering as the webpage will go offline.<p>Pricing wise, the first year costs $15 and will be $30 from second year on. They set my paypal up for recurring payment.<p>Performance wise it's pretty fast on my iPhone 4. Setting up took about 2~3 min, very easy to do. The html5 app needs to connect to both the tether website and the client computer. Took me a few tries to connect to both but once they are connected the speed is pretty comparable to tetherme in jailbroken iPhones.
评论 #3686694 未加载
评论 #3687669 未加载
thought_alarm大约 13 年前
Wow. Cool hack.<p>But if you're friends with an iOS developer, you can ask him or her to build an ad-hoc copy of iProxy for your iPhone and it won't cost you anything.<p>(Or get 100 of your closest iPhone-using friends to pitch in on an iOS developer account)<p><a href="https://github.com/tcurdt/iProxy/wiki" rel="nofollow">https://github.com/tcurdt/iProxy/wiki</a>
评论 #3686901 未加载
Wilya大约 13 年前
The way they do it is elegant, and could be used in many other places than just the iPhone. All you need is a browser that supports websockets.<p>I'm not really aware of that stuff, but I'm a bit curious. Do websockets really work over mobile networks (which are, at least in my experience, transparent proxied, and where anything outside of HTTP-on-port-80/HTTPS-on-port-443 is blacklisted into oblivion) ?
评论 #3687025 未加载
评论 #3686577 未加载
评论 #3686767 未加载
stephen_g大约 13 年前
Do US carriers really still restrict tethering? That's really a shame, because the iPhone's built in tethering support is very good, and extremely elegant compared to apps and methods like this one...
评论 #3688009 未加载
smathieu大约 13 年前
For a company that will be handling all of my web browsing, I would have expected them to not store my password in clear text.<p>Doesn't inspire confidence :(<p>Great product idea though!
评论 #3686731 未加载
评论 #3686741 未加载
robbiet480大约 13 年前
How! That's what I really want to know. Streaming sockets?
评论 #3686447 未加载
mikebabineau大约 13 年前
Looks like a great service, unfortunate that they're subject to the HTML5/browser limitations (can't lock, etc).<p>Is there another way to distribute their native version besides through the app store?<p>My company use TestFlight (<a href="https://testflightapp.com/" rel="nofollow">https://testflightapp.com/</a>) for iOS game development. Is there anything similar, but better suited to end-user distribution?
abalone大约 13 年前
More fundamental than the "do they use websockets" question is "what is the multihoming behavior of iOS?"<p>Sockets alone are not enough -- you need cooperation from the OS to route connections over both wifi and cell data links in the desired fashion.<p>In this case we can infer it's two connections made by a script running on a web page: one with the "tethered" machine (over wifi) and one with Tether's proxy server (over cell data). The proxy server works in concert with a client on the tethered machine, and the script just relays data between those two connections.<p>The interesting thing is that iOS permits a single web page to connect over both network links simultaneously. I'm no expert but that seems like something Apple could, and would, kill with an update.<p>Really clever hack, though.
anonhacker大约 13 年前
I feel like this is not so hard to do with NodeJS and Web sockets.<p>Small NodeJS app that serves the client connection webpage and acts as a proxy. Set the proxy locally, When you get requests instead of fetching them ask the socket for the data and headers.<p>On the client just do an XMLHttpRequest for whatever and shove it back down the web socket to the proxy server. Done, Right? I'll do a little experiment when i have time...
tonster大约 13 年前
This is so cool! Like to see that even though they were rejected from the app store they still went ahead and found a way to make their idea a reality.
cft大约 13 年前
Too bad Android does not have any visible plans to implement WebSocket (which is now RFC 6455). Perhaps the development of HTML5 apps on Android has lower priority for Google than for Apple, to force the development effort into native, which they can curate and control. This hypothesis is also corroborated by comparing HTML5 performance in Android and in iOS (Android is usually 300-500% slower).
评论 #3687423 未加载
评论 #3686816 未加载
sev大约 13 年前
Very cool! Too bad the iphone can't lock, and that the wifi-only iPad can't benefit from this.<p>On a side note, UI related, when I am on this page: <a href="http://tether.com/iphone/" rel="nofollow">http://tether.com/iphone/</a> and click "Order Now" at the top right, the modal window opens behind the YouTube video.
评论 #3686586 未加载
yoda_sl大约 13 年前
Interesting concept... Thinking about it, they are making Safari act as the proxy/gateway. I did not dig into it but are they using web socket for achieving that? I can see their desktop app, sending the request/proxying to Safari which will in turns act the gateway to the net. Neat.
cyanbane大约 13 年前
This sounds awesome, but please don't send my password back over email.
RandallBrown大约 13 年前
I don't understand how this works. It seems like when you're connected to the ad-hoc wifi network, all web requests would go through there. How do they get around this?
评论 #3687346 未加载
fuzzythinker大约 13 年前
Why must I sign up in order to find out how much it cost?
评论 #3686993 未加载
rogerchucker大约 13 年前
Can we expect any way to tether a Wifi-only iPad or iPod touch to this service in future?