Symbian3/SDK/Source/GUID-A9640739-462C-5D95-8DCC-D273CD8439AE.dita
author Dominic Pinkman <dominic.pinkman@nokia.com>
Tue, 20 Jul 2010 12:00:49 +0100
changeset 13 48780e181b38
parent 7 51a74ef9ed63
permissions -rw-r--r--
Week 28 contribution of SDK documentation content. See release notes for details. Fixes bugs Bug 1897 and Bug 1522.

<?xml version="1.0" encoding="utf-8"?>
<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
<!-- This component and the accompanying materials are made available under the terms of the License 
"Eclipse Public License v1.0" which accompanies this distribution, 
and is available at the URL "http://www.eclipse.org/legal/epl-v10.html". -->
<!-- Initial Contributors:
    Nokia Corporation - initial contribution.
Contributors: 
-->
<!DOCTYPE concept
  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
<concept id="GUID-A9640739-462C-5D95-8DCC-D273CD8439AE" xml:lang="en"><title>TCP/IP</title><shortdesc>This section describes the TCP/IP concepts as implemented by the
Symbian platform. </shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
<p>The TCP/IP is a plug-in architecture. Clients access its services through
the generic Sockets Server Client API, and specify protocol-specific behaviour
through TCP/IP specific utility types and constants. </p>
<p>The TCP/IP API has the following three key concepts: </p>
<ul>
<li id="GUID-7D1C1EC3-87D6-5C30-9671-63CDF8CDC05A"><p>TCP/IP Socket </p> </li>
<li id="GUID-1412D36F-1834-56E7-A904-8C5577BFD841"><p>Domain Name Resolver </p> </li>
<li id="GUID-A2A04887-0E9E-5A94-BD78-CAD2CB720343"><p>Internet Addresses </p> </li>
</ul>
<section id="GUID-6EDFE283-E780-4A9B-93B4-5E1FEA0EE906"><title>TCP/IP Socket</title> <p>The TCP/IP protocol module (tcpip.prt)
provides TCP/IP communication services to client applications. This module
provides the following four fundamental transport and network layer protocols: </p> <ul>
<li id="GUID-4EE43C12-9065-5B5A-8DA1-C1D299408E41"><p>Internet Protocol (IP) <xref href="http://www.ietf.org/rfc/rfc791.txt" scope="external">RFC791</xref>  </p> </li>
<li id="GUID-8219260F-D83C-575B-B92B-A9FF30E06100"><p>Internet Control Message
Protocol (ICMP) <xref href="http://www.ietf.org/rfc/rfc792.txt" scope="external">RFC792</xref> and <xref href="http://www.ietf.org/rfc/rfc950.txt" scope="external">RFC950</xref>  </p> </li>
<li id="GUID-18E9FDB7-EB17-5DEB-B075-6840F72B9F11"><p>Transmission Control
Protocol (TCP) <xref href="http://www.ietf.org/rfc/rfc793.txt" scope="external">RFC793</xref>  </p> </li>
<li id="GUID-509BB14D-7EF9-5768-A992-4A08B23204A5"><p>User Datagram Protocol
(UDP) <xref href="http://www.ietf.org/rfc/rfc768.txt" scope="external">RFC768</xref>  </p> </li>
</ul> <p>Clients do not access the protocol module directly. Clients use the
protocol module through the Sockets Server Client API. The module also provides
a DNS service that can be accessed through the Sockets Server Client API standard
host name resolution interface, <xref href="GUID-5442E589-1BFB-39A0-98B3-3744E51F8386.dita"><apiname>RHostResolver()</apiname></xref>. Socket
services are provided through the generic interface <xref href="GUID-66497E39-6A48-3B2C-BE17-5826210505AB.dita"><apiname>RSocket()</apiname></xref>.
It is possible for TCP/IP services to be used over many types of network interface.
To enable access to TCP/IP networks through a dial-up serial connection, Point-to-Point
protocol (PPP) is provided. </p> </section>
<section id="GUID-DCC92F00-9743-48D5-B93D-6CD61872F428"><title>Domain Name Resolver</title> <p>Domain name resolver is a
program that extracts the information from name servers in response to client
requests. The domain name resolution service uses the normal sockets API,
for example, UDP and TCP to communicate with the name servers. Resolvers must
access at least one name server and uses its information to answer a query
directly. A resolver is a system procedure that is accessible to the user
programs, for example, mail programs, TELNET and FTP. This indicates that
the protocol is not required between the resolver and the user programs. </p> <p>A
very important goal of the resolver is to eliminate the network delay and
the load on the name server. </p> </section>
<section id="GUID-62DA50B4-EA55-4975-9F35-D9C5F572E002"><title>Internet Addresses</title> <p>The TCP/IP program uses a socket
address encapsulated in a <codeph>TInetAddr</codeph> object. The <codeph>TInetAddr</codeph> object
stores the IP address and port of a socket. This is the expected form for
passing address information when using <codeph>RSocket()</codeph> and <codeph>RHostResolver()</codeph> for
TCP/IP. </p> <p>The TCP/IP program also handles IP addresses represented in
the following formats: </p> <ul>
<li id="GUID-0310B249-26DE-53E6-AA50-BEE114EA6E53"><p>As a dotted-decimal
string, For example, 194.129.2.54 stored in a descriptor. </p> </li>
<li id="GUID-D5BCC6F8-954D-564C-B9D6-032FED950F8F"><p>As an unsigned 32-bit
integer - the usual binary representation of an IP address. This can be used
to initialise a <codeph>TInetAddr</codeph> through the relevant constructor. </p> </li>
<li id="GUID-C683FEEC-C3F5-5542-8AAA-2E1A76F3E1C5"><p>The 4 integers forms
a dotted-decimal address and the macro INET_ADDR is used to convert this into
integer format in the appropriate byte-order. </p> </li>
</ul> <p> <b>Note:</b> All addresses are handled in the native byte order.
It means the user do not need to use byte-order conversion functions, for
example, BSD’s <xref href="GUID-1E24E920-D34A-38D4-98B1-6AE44B98113C.dita"><apiname>htonl()</apiname></xref> or <xref href="GUID-013170BC-E395-3887-8EE1-BBDBE5AD8C31.dita"><apiname>htons()</apiname></xref>. </p> </section>
<section id="GUID-3D557650-275B-4359-8A61-03A345EEF947"><title>Routes and Interfaces</title> <p>The TCP/IP protocol must
establish the following information to communicate with a remote host through
a socket: </p> <ul>
<li id="GUID-F9ABF503-6687-5B87-A082-C0844A36C0E6"><p>the IP address and port
of the socket </p> </li>
<li id="GUID-D3423B61-CBE1-58A4-83EF-9AD18BB018EE"><p>a route to the remote
host </p> </li>
<li id="GUID-85BA7CE9-93E0-58A7-A9D1-5E15FBF523FF"><p>a network interface
by which to access that route </p> </li>
</ul> <p>The actions to do this are performed when: </p> <ul>
<li id="GUID-FA6AD28F-3EC9-5429-B5DE-CAEAF1633CDA"><p>A TCP socket is connected
with <xref href="GUID-D4F08503-F1EF-3531-9C3C-4AF24A6255F0.dita#GUID-D4F08503-F1EF-3531-9C3C-4AF24A6255F0/GUID-AC5A49E9-337D-334A-9CD0-DB8226372306"><apiname>RSocket::Connect()</apiname></xref>  </p> </li>
<li id="GUID-02FA2CD0-AD09-5E9F-AF10-6018AA9D6001"><p>a UDP socket is written
to with <xref href="GUID-D4F08503-F1EF-3531-9C3C-4AF24A6255F0.dita#GUID-D4F08503-F1EF-3531-9C3C-4AF24A6255F0/GUID-ADE2383D-3075-30B4-8F63-6D837EB75AEF"><apiname>RSocket::Send()</apiname></xref>, <xref href="GUID-D4F08503-F1EF-3531-9C3C-4AF24A6255F0.dita#GUID-D4F08503-F1EF-3531-9C3C-4AF24A6255F0/GUID-29825F33-D844-358A-8CCA-791AE167CDCE"><apiname>RSocket::Write()</apiname></xref> or <xref href="GUID-D4F08503-F1EF-3531-9C3C-4AF24A6255F0.dita#GUID-D4F08503-F1EF-3531-9C3C-4AF24A6255F0/GUID-F948E0A6-DC1A-3FCD-A391-0FEE0F673D36"><apiname>RSocket::SendTo()</apiname></xref>  </p> </li>
<li id="GUID-53FC4772-8A69-5514-A3F1-48E0FF1CC305"><p>A UDP socket is connected
with <xref href="GUID-D4F08503-F1EF-3531-9C3C-4AF24A6255F0.dita#GUID-D4F08503-F1EF-3531-9C3C-4AF24A6255F0/GUID-AC5A49E9-337D-334A-9CD0-DB8226372306"><apiname>RSocket::Connect()</apiname></xref>  </p> </li>
</ul> </section>
</conbody><related-links>
<link href="GUID-B8DEA3EE-7BA7-5A29-9A27-B87EE0EB254F.dita"><linktext>Accessing
TCP/IP Sockets</linktext></link>
<link href="GUID-182A7A60-80BD-5E54-917A-8F4C26BB94CB.dita"><linktext> Connecting
and                 Disconnecting a remote host</linktext></link>
<link href="GUID-3AAE78A4-75C5-5607-8775-43DFB43DCFE8.dita"><linktext> Getting
and Setting IP                 Addresses</linktext></link>
<link href="GUID-95C166C3-2A25-55FB-88BD-62B7EFED2F8E.dita"><linktext> Using Domain
Name                 Resolution</linktext></link>
</related-links></concept>