networking - How is communication between two computers without port forwarding possible? -


i'm working on project in have send information between computers on internet. obvious solution assure there isn't fuzz in way port-forwarding. however, noticed applications skype able open connections such these without making user port forward (in cases). noticed when able retrieve ip of person on other end of call using tool such netstat.

so question is: how skype, , "other" applications, manage this? how open "common" router?

note: haven't read networking , might trivial if have reads on subject or related networking, thankful.

skype uses technique called "hole punching" through firewalls.

i wrote long description here. that:

in general, hole punching requires following:

  • an external, public server target initial connections, , helps coordinate connection process.
  • two peers behind nat, connected directly.
  • nat implementations lenient in traffic accept, , predictable in how operate.
  • a protocol (like tcp) lenient in traffic accepts , which, in particular, uses state machine , messages more symmetric server / client roles assumed @ higher level.

the general process (bearing in mind rough sketch) hole punching is:

  • peers connect central, public server , agree on pairs connect.
  • the central server identifies, each nat, how future outgoing connections created (when peer makes connection passes
    through nat port must opened on on nat receive response; typically port numbers used sequential).

(actually, details above tcp hole punching. it's possible skype uses udp, general idea similar).


Comments

Popular posts from this blog

javascript - backbone.js Collection.add() doesn't `construct` (`initialize`) an object -

php - Get uncommon values from two or more arrays -

Adding duplicate array rows in Php -