Symbian3/SDK/Source/GUID-A9640739-462C-5D95-8DCC-D273CD8439AE.dita
author Dominic Pinkman <Dominic.Pinkman@Nokia.com>
Thu, 21 Jan 2010 18:18:20 +0000
changeset 0 89d6a7a84779
permissions -rw-r--r--
Initial contribution of Documentation_content according to Feature bug 1266 bug 1268 bug 1269 bug 1270 bug 1372 bug 1374 bug 1375 bug 1379 bug 1380 bug 1381 bug 1382 bug 1383 bug 1385
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
0
89d6a7a84779 Initial contribution of Documentation_content according to Feature bug 1266 bug 1268 bug 1269 bug 1270 bug 1372 bug 1374 bug 1375 bug 1379 bug 1380 bug 1381 bug 1382 bug 1383 bug 1385
Dominic Pinkman <Dominic.Pinkman@Nokia.com>
parents:
diff changeset
     1
<?xml version="1.0" encoding="utf-8"?>
89d6a7a84779 Initial contribution of Documentation_content according to Feature bug 1266 bug 1268 bug 1269 bug 1270 bug 1372 bug 1374 bug 1375 bug 1379 bug 1380 bug 1381 bug 1382 bug 1383 bug 1385
Dominic Pinkman <Dominic.Pinkman@Nokia.com>
parents:
diff changeset
     2
<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
89d6a7a84779 Initial contribution of Documentation_content according to Feature bug 1266 bug 1268 bug 1269 bug 1270 bug 1372 bug 1374 bug 1375 bug 1379 bug 1380 bug 1381 bug 1382 bug 1383 bug 1385
Dominic Pinkman <Dominic.Pinkman@Nokia.com>
parents:
diff changeset
     3
<!-- This component and the accompanying materials are made available under the terms of the License 
89d6a7a84779 Initial contribution of Documentation_content according to Feature bug 1266 bug 1268 bug 1269 bug 1270 bug 1372 bug 1374 bug 1375 bug 1379 bug 1380 bug 1381 bug 1382 bug 1383 bug 1385
Dominic Pinkman <Dominic.Pinkman@Nokia.com>
parents:
diff changeset
     4
"Eclipse Public License v1.0" which accompanies this distribution, 
89d6a7a84779 Initial contribution of Documentation_content according to Feature bug 1266 bug 1268 bug 1269 bug 1270 bug 1372 bug 1374 bug 1375 bug 1379 bug 1380 bug 1381 bug 1382 bug 1383 bug 1385
Dominic Pinkman <Dominic.Pinkman@Nokia.com>
parents:
diff changeset
     5
and is available at the URL "http://www.eclipse.org/legal/epl-v10.html". -->
89d6a7a84779 Initial contribution of Documentation_content according to Feature bug 1266 bug 1268 bug 1269 bug 1270 bug 1372 bug 1374 bug 1375 bug 1379 bug 1380 bug 1381 bug 1382 bug 1383 bug 1385
Dominic Pinkman <Dominic.Pinkman@Nokia.com>
parents:
diff changeset
     6
<!-- Initial Contributors:
89d6a7a84779 Initial contribution of Documentation_content according to Feature bug 1266 bug 1268 bug 1269 bug 1270 bug 1372 bug 1374 bug 1375 bug 1379 bug 1380 bug 1381 bug 1382 bug 1383 bug 1385
Dominic Pinkman <Dominic.Pinkman@Nokia.com>
parents:
diff changeset
     7
    Nokia Corporation - initial contribution.
89d6a7a84779 Initial contribution of Documentation_content according to Feature bug 1266 bug 1268 bug 1269 bug 1270 bug 1372 bug 1374 bug 1375 bug 1379 bug 1380 bug 1381 bug 1382 bug 1383 bug 1385
Dominic Pinkman <Dominic.Pinkman@Nokia.com>
parents:
diff changeset
     8
Contributors: 
89d6a7a84779 Initial contribution of Documentation_content according to Feature bug 1266 bug 1268 bug 1269 bug 1270 bug 1372 bug 1374 bug 1375 bug 1379 bug 1380 bug 1381 bug 1382 bug 1383 bug 1385
Dominic Pinkman <Dominic.Pinkman@Nokia.com>
parents:
diff changeset
     9
-->
89d6a7a84779 Initial contribution of Documentation_content according to Feature bug 1266 bug 1268 bug 1269 bug 1270 bug 1372 bug 1374 bug 1375 bug 1379 bug 1380 bug 1381 bug 1382 bug 1383 bug 1385
Dominic Pinkman <Dominic.Pinkman@Nokia.com>
parents:
diff changeset
    10
<!DOCTYPE concept
89d6a7a84779 Initial contribution of Documentation_content according to Feature bug 1266 bug 1268 bug 1269 bug 1270 bug 1372 bug 1374 bug 1375 bug 1379 bug 1380 bug 1381 bug 1382 bug 1383 bug 1385
Dominic Pinkman <Dominic.Pinkman@Nokia.com>
parents:
diff changeset
    11
  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
89d6a7a84779 Initial contribution of Documentation_content according to Feature bug 1266 bug 1268 bug 1269 bug 1270 bug 1372 bug 1374 bug 1375 bug 1379 bug 1380 bug 1381 bug 1382 bug 1383 bug 1385
Dominic Pinkman <Dominic.Pinkman@Nokia.com>
parents:
diff changeset
    12
<concept xml:lang="en" id="GUID-A9640739-462C-5D95-8DCC-D273CD8439AE"><title>TCP/IP</title><shortdesc>This section describes the TCP/IP concepts as implemented by Symbian OS. </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><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 scope="external" href="http://www.ietf.org/rfc/rfc791.txt">RFC791</xref>  </p> </li> <li id="GUID-8219260F-D83C-575B-B92B-A9FF30E06100"><p>Internet Control Message Protocol (ICMP) <xref scope="external" href="http://www.ietf.org/rfc/rfc792.txt">RFC792</xref> and <xref scope="external" href="http://www.ietf.org/rfc/rfc950.txt">RFC950</xref>  </p> </li> <li id="GUID-18E9FDB7-EB17-5DEB-B075-6840F72B9F11"><p>Transmission Control Protocol (TCP) <xref scope="external" href="http://www.ietf.org/rfc/rfc793.txt">RFC793</xref>  </p> </li> <li id="GUID-509BB14D-7EF9-5768-A992-4A08B23204A5"><p>User Datagram Protocol (UDP) <xref scope="external" href="http://www.ietf.org/rfc/rfc768.txt">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><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><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><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
89d6a7a84779 Initial contribution of Documentation_content according to Feature bug 1266 bug 1268 bug 1269 bug 1270 bug 1372 bug 1374 bug 1375 bug 1379 bug 1380 bug 1381 bug 1382 bug 1383 bug 1385
Dominic Pinkman <Dominic.Pinkman@Nokia.com>
parents:
diff changeset
    13
                Disconnecting a remote host</linktext> </link> <link href="GUID-3AAE78A4-75C5-5607-8775-43DFB43DCFE8.dita"><linktext> Getting and Setting IP
89d6a7a84779 Initial contribution of Documentation_content according to Feature bug 1266 bug 1268 bug 1269 bug 1270 bug 1372 bug 1374 bug 1375 bug 1379 bug 1380 bug 1381 bug 1382 bug 1383 bug 1385
Dominic Pinkman <Dominic.Pinkman@Nokia.com>
parents:
diff changeset
    14
                Addresses</linktext> </link> <link href="GUID-95C166C3-2A25-55FB-88BD-62B7EFED2F8E.dita"><linktext> Using Domain Name
89d6a7a84779 Initial contribution of Documentation_content according to Feature bug 1266 bug 1268 bug 1269 bug 1270 bug 1372 bug 1374 bug 1375 bug 1379 bug 1380 bug 1381 bug 1382 bug 1383 bug 1385
Dominic Pinkman <Dominic.Pinkman@Nokia.com>
parents:
diff changeset
    15
                Resolution</linktext> </link> </related-links></concept>