Symbian3/SDK/Source/GUID-A9640739-462C-5D95-8DCC-D273CD8439AE.dita
changeset 0 89d6a7a84779
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-A9640739-462C-5D95-8DCC-D273CD8439AE.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,15 @@
+<?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 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
+                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>
\ No newline at end of file