DLNA : Digital Living Network Alliance

Last update : June 17, 2012;

DLNA logo

The Digital Living Network Alliance (DLNA) allows consumers to connect and enjoy their music, videos and photos from any consumer device (computers, printers, cameras, cell phones, and other multimedia devices) from anywhere in their homes. DLNA (website : dlna.org) is a non-profit collaborative trade organization established by Sony in June 2003, that is responsible for defining interoperability guidelines to enable sharing of digital media between these devices . The private guidelines are built upon existing public standards and specify a set of restricted ways of using the standards in order to achieve interoperability.

Today there are 26 promoter members and 199 contributor members. In early 2011, DLNA began a Software Certification program in order to make it easier for consumers to share their digital media across a broader range of products. Today there are over nine thousand products on the market that are DLNA certified.

DLNA uses Universal Plug and Play (UPnP) for media management, discovery and control.

The DLNA Certified Device Classes are separated as follows :

  • Digital Media Servers (DMS) store content and make it available to networked media devices
  • Digital Media Controller (DMC) find content on digital media servers and play it on digital media renderers
  • Digital media renderers (DMR) play content received from a digital media controller
  • Digital media players (DMP) find content on the network and provide playback and rendering capabilities
  • Digital media printers (DMPr) provide printing services to the DLNA home network

Examples for DMS include personal computers or network-attached storage (NAS) devices. All DLNA devices can be mobile (wireless). Bridges between mobile handheld device network connectivity and home network connectivity are provided by  Mobile Network Connectivity Functions (M-NCF). Content transformations between required media formats for home network and mobile handheld devices iare provided by Media Interoperability Units (MIU).

DLNA is a refinement of UPnP, a set of rules and restrictions in the name of interoperability. Full DLNA specifications are available only to DLNA members who pay for. UPnP specifies the abstract device interfaces, the specifications for UPnP are available at the UPnP forum.

Wellknown, registered, dynamic and private ports

In computer networks a port is a communications endpoint in a computer’s host operating system. A port is associated with an IP address of the host, as well as the type of protocol (TCP, UDP, SC)used for communication. A port is identified for each address and protocol by a 16-bit number, commonly known as the port number which completes the destination address for a communications session. Different IP addresses or protocols may use the same port number for communications.

The Internet Corporation for Assigned Names and Numbers (ICANN) is responsible for the global coordination of  Internet protocol resources which includes the registration of commonly used port numbers.

The port numbers are divided into three ranges :

  • well-known ports (0 – 1023
  • registered ports (1024 – 49151)
  • dynamic or private ports (49152 -65535)

Examples :

Well-known ports :

  • 1 : Echo
  • 20 & 21 : File Transfer Protocol (FTP)
  • 23 : Telnet remote login service
  • 25 : Simple Mail Transfer Protocol (SMTP)
  • 43  : Whois
  • 53 : Domain Name System (DNS) service
  • 80 : Hypertext Transfer Protocol (HTTP) used in the World Wide Web
  • 110 : Post Office Protocol (POP3)
  • 143 : Internet Message Access Protocol (IMAP)
  • 194 : IRC
  • 443 : HTTP Secure (HTTPS)
  • 554 : RTSP
  • 636 : LDAP

Registered ports :

  • 1234 : VLC
  • 1220 : Qicktime Server Admin
  • 1935 : RTMP
  • 2948, 2949 : MMS
  • 3306 : MySQL
  • 5004, 5005 : RTP
  • 5060, 5061 : SIP
  • 5269 : XMPP
  • 5500, 5800, 5900 : VNC
  • 8008 : HTTP Alternate
  • 25565 : MySQL

Dynamic and private ports :

The dynamic port numbers (also known as the private port numbers) are the port numbers that are available for use by any application to use in communicating with any other application, using the Internet’s Transmission Control Protocol (TCP) or the User Datagram Protocol (UDP).

More informations about computer ports are available at the following links :

Concurrent connections in browsers

The HTTP/1.1 RFC says a single-user client SHOULD NOT maintain more than 2 simultaneous connections with any server or proxy. This rule is on a per server basis. Using multiple domain names, such as 1.mydomain.com, 2.mydomain.com, 3.mydomain.com, allows a web developer to achieve a multiple of the per server connection limit, even if all the domain names are CNAMEs to the same IP address. This is called domain sharding. There are several issues with this technique : The main one is that domain sharding results in more DNS lookups and takes extra time to make the initial connections.

Modern browsers don’t follow the guideline and exceed 2 connections per server. The following list shows some actual values :

Browser connections per host max connections
IE 9 6 35
Firefox 10 6 60
Safari 5.1 6 35
Chrome 19 6 40
Opera 11 6 35
iPhone 4 4 30
Android 3 6 35
BlackBerry 7 5 5
Opera Mobile 2 6

The data has been provided by Browserscope, a community-driven project for profiling web browsers. The goals of Browserscope are to foster innovation by tracking browser functionality and to be a resource for web developers.

Every web developer can participate in the Browserscope project by gathering test results from users “in the wild”. The project was launched in September 2009. The owner’s of the project are Lindsey Simon and Steve Souders.

More informations about concurrent (simultaneous, parrallel) browser connections are available at the following links :

Google App Engine (GAE)

Google App Engine

GAE (Google App Engine) is a platform for developing and hosting web applications in Google-managed data centers. It was first released as a beta version in April 2008. GAE is cloud computing technology. It virtualizes applications across multiple servers and data centers. GAE is Platform as a Service while AWS (Amazon Web Services) is Infrastructure as a Service.

GAE is free up to a certain level of used resources. Fees are charged for additional storage, bandwidth, or CPU cycles required by the application.

The applications of the logged Google developer are available at https://appengine.google.com/

List of GAE applications

The dashboard allows to manage the different applications (quotas, instances, logs, cron jobs, task queues, blacklists, datastore, blob viewer, settings, permissions, billing, resources, …). A very efficient feature is the version control based on the app.yaml file :

GAE version control

Another useful feature is the error logging :

GAE error logging reports

ccTLD & gTLD

ccTLD (country code top-level domain) is an Internet top-level domain generally used or reserved for a country, a sovereign state, or a dependent territory. In 2010, the IANA (Internet Assigned Numbers Authority) began implementing internationalized country code TLDs, consisting of language-native characters when displayed in an end-user application.

A gTLD (generic top-level domain) is another category of top-level domains maintained by the IANA. The core group of generic top-level domains consists of the com, info, net, and org domains. In addition, the domains biz, name, and pro are also considered generic, however, these are designated as restricted, because registrations within them require proof of eligibility within the guidelines set for each.

A third category of  top-level domains, called sponsored TLD,  is a specialized TLD that has a sponsor representing a specific community served by the domain. The communities involved are based on ethnic, geographical, professional, technical or other theme concepts proposed by private agencies or organizations that establish and enforce rules restricting the eligibility of registrants to use the TLD. Some examples are edu, gov, tel, mobi, …

IANA is operated by ICANN (Internet Corporation for Assigned Names and Numbers).

CDN push and pull

A content delivery network (CDN) is a collection of web servers distributed across multiple locations to deliver content more efficiently to users.

There are two population methods  : push and pull.

Pull requires virtually no work on the server side:  URL’s are rewritten to the files by replacing  the server domain name with the CDN’s domain name. The CDN will then apply the Origin Pull technique and will periodically pull the files from the origin (the server). How often that is, depends on how headers have been configured  (particularly the Expires header).

Push requires a fair amount of work at the server side to sync files to the CDN. But you gain flexibility because you can decide when files are synced, how often and if any preprocessing should happen.

Most CDN’s support both origin pull and one or more push methods (for instance Amazon Cloudfront).

Wim Leers published on his website his bachelor thesis about “Improving Drupal’s page loading performance” with a chapter of key properties of CDN‘s.

WebDAV

Last Update : July 1, 2012

WebDAV (Web-based Distributed Authoring and Versioning) is a set of methods based on HTTP that facilitates collaboration between users in editing and managing documents and files stored on servers. WebDAV was defined in RFC 4918 by a working group of the Internet Engineering Task Force (IETF).

The WebDAV protocol makes the Web a readable and writable medium. It provides a framework for users to create, change and move documents on a server.

Resources about WebDAV are available at the webdav.org website.

Spoon virtualization

On November 8th, 2010, Spoon announced the immediate availability of the world’s first free cloud hosting service for desktop applications. Spoon allows software developers to make their existing desktop applications available in the cloud, with no installs. Spoon applications can be accessed from the Spoon.net library or embedded into any website, blog, or social edia service as a “Spoon Feed” with a single line of HTML.

Unlike other forms of cloud computing, Spoon completely preserves the richness and responsiveness of traditional desktop applications. Users can save files to local folders, print, and even migrate offline to continue working while disconnected. Spoon’s unique virtualization technology completely eliminates dependencies and conflicts, and seamlessly handles patches and upgrades.

Today I created an account at spoon.net and installed the spoon plugin. I was able to succesfully  run different browser versions of Firefox and Safari in the cloud (without insallting these browsers on my laptop)  to test the compliance of a current web design project with these browsers. I am impressed by this new cloud technology.

RTMP streaming for Amazon CloudFront

RTMP (Real Time Messaging Protocol) is a web transmission standard which allows a backend server to transfer video, audio and data to the Flash Player. It’s particularly useful for video streaming, since the Flash Player can communicate back to the server about how much video it has consumed, and how much more video the server needs to send. This is a distinct advantage over so-called progressive download video, where a web server simply begins sending bytes out to the video player over standard HTTP until there are no more bytes to send.

In addition to saving bandwidth and allowing better seeking control, RTMP is harder to steal content, allows dynamic bitrate switching and is able to stream live content.

Amazon added RTMP to the CloudFront servers in December 2009 and thus became a real CDN (Content Delivery Network), offering content providers a simple and reliable way to host, format and deliver their video content at high speeds.

CloudFront Streaming is very easy to set up with the JW Player 5.3.

Today a created the first video-distributions on Amazon CloudFront by using the AWS-Console. This process is very straightforward.

The following parameters are used to embed a streaming-videofile in a webpage using a flash-player or the HTML5 <video> tag.

  • videofile = path/filename.ext
  • streamer = rtmp://xxxxxxxxxxxxx.cloudfront.net/cfx/st/
  • provider = rtmp

The suffixes /cfx/st/ at the end of the URL are required to access the streaming-server at the CloudFront server. Videofile extensions can be mp4, flv and webm.

DNS Diagnose Tools

There are a lot of online and desktop tools available to manage DNS and diagnose DNS problems.

My favorite online tool is network-tools.com, a website operated since 1998 by The Keyword Factory of Ocean City, NJ.

This site offers the following diagnose results for a given  url :

  • Ping
  • Lookup
  • Trace
  • Whois (IDN Conversion Tool)
  • DNS Records (Advanced Tool)
  • Network Lookup
  • Spam Blacklist Check
  • URL Decode
  • URL Encode
  • HTTP Headers  [SSL]
  • Email Verification

An express diagnose method to obtain all relevant informations with one test is also available.

An example of the results from retrieving DNS records for www.html5.lu is given hereafter :

DNS servers
ns1.dns-stock.com
ns2.dns-stock.com

Answer records
html5.lu MX
preference: 10
exchange: venus.vo.lu
3600s
html5.lu NS ns2.dns-stock.com 3600s
html5.lu NS ns1.dns-stock.com 3600s
html5.lu SOA
server: ns1.dns-stock.com
email: sysop@vo.lu
serial: 2010082701
refresh: 28000
retry: 2800
expire: 2419200
minimum ttl: 3600
3600s
html5.lu A 85.93.210.131 3600s

Authority records

Additional records
venus.vo.lu A 80.90.45.96 28800s
venus.vo.lu A 80.90.45.97 28800s