The Transmission Control Protocol (TCP) is the reliable, connection-oriented transport layer protocol of the TCP/IP protocol suite. TCP is reliable, in that its data packets (properly referred to as segments) are guaranteed to arrive at the destination host in order. The receiving host sends an acknowledgement (ACK) of received segment numbers back to the sender. TCP contains a retransmission scheme. TCP is connection-oriented, in that a connection-initiation handshake sequence precedes any data transmission, after which the client (the host that initiates the connection) and the server (the host that accepts the connection) maintain a virtual connection with each other by means of keepalive packets and/or ongoing bidirectional data transmissions. The notion of a TCP session, while not absolutely technically correct, makes sense.
Most application layer protocols used on the Internet use TCP as their transport layer protocols, including HTTP, FTP, SMTP, TELNET, and POP.
Contrast TCP with UDP, a connectionless, unreliable transport layer protocol. The choice between TCP and UDP is usually the choice between the convenience of built-in reliability (TCP) versus reduced overhead and speed (UDP)--TCP usually wins out. Application designers are typically willing to sacrifice some speed and packet overhead for not having to design their own reliability mechanisms into the application.