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

ipconfig /release /renew

screenshot ipconfig

Sous Windows, la commande Ipconfig affiche toutes les valeurs actuelles de la configuration du réseau TCP/IP et actualise les paramètres DHCP (Dynamic Host Configuration Protocol) et DNS (Domain Name System). Utilisé sans paramètres, ipconfig affiche l’adresse IP, le masque de sous-réseau et la passerelle par défaut de toutes les cartes.

ipconfig /release
Envoie un message DHCPRELEASE au serveur DHCP pour libérer la configuration DHCP actuelle et annuler la configuration d’adresse IP de toutes les cartes ou d’une carte spécifique si le paramètre Carte est inclus.

ipconfig /renew
Renouvelle la configuration DHCP de tous les cartes (si aucune carte n’est spécifiée) ou d’une carte spécifique si le paramètre Carte est inclus.

Les commandes sont entrées dans la fenêtre Command Prompt de Windows. Le recours à ces commandes est notamment nécessaire sous Windows Vista pour configurer un lapin Nabaztag si on n’arrive pas à se connecter sur l’adresse IP 192.168.0.1. Comme indiqué sur les pages help de Nabaztag, la séquence de commandes

ipconfig  /release
ipconfig  /renew

règle le problème.