The difference and connection between HTTP and TCP

Source: Internet
Author: User
Tags ack network function

I believe many of the novice mobile phone networking development friends want to know what is the difference between the HTTP and socket connection, hope that through their own shallow understanding can help beginners.

First, the basic concept

1. TCP connection

Mobile phone can use the network function is because the bottom of the mobile phone implementation of TCP/IP protocol, you can make the mobile phone terminal through the wireless network to establish a TCP connection. TCP protocol can provide an interface to the upper network, so that the transmission of the upper network data is based on the "No Difference" network.

Setting up a TCP connection requires a "three-time handshake":

First handshake: The client sends a SYN packet (SYN=J) to the server and enters the Syn_send state, waiting for the server to confirm;

Second handshake: The server receives the SYN packet, it must confirm the customer's SYN (ACK=J+1), and also send itself a SYN packet (syn=k), that is, the Syn+ack packet, when the server enters the SYN_RECV state;

Third handshake: The client receives the server's Syn+ack packet, sends the acknowledgment packet ack (ACK=K+1) to the server, the packet is sent, the client and the server enter the established state, and the handshake is completed three times.

The data is not included in the packets that are delivered during the handshake, and the client and server formally begin transmitting the data after the three handshake is complete. Ideally, once a TCP connection is established, the TCP connection is maintained until either side of the communication actively closes the connection. When disconnected, both the server and the client can initiate a request to disconnect the TCP connection, and the disconnection process requires a "four handshake" (the process is not fine-grained, that is, the server interacts with the client and finally determines the disconnection)


2. HTTP connection

The HTTP protocol, the Hypertext Transfer Protocol (hypertext Transfer Protocol), is the foundation of Web networking and one of the most commonly used protocols for mobile networking, an application built on the TCP protocol.

The most notable feature of an HTTP connection is that each request sent by the client requires a server loopback response, and the connection is actively released after the request has ended. The process from establishing a connection to closing a connection is called a "one-time connection."

1) in HTTP 1.0, each request from the client requires a separate connection to be established, and the connection is automatically freed after the request is processed.

2) in HTTP 1.1, multiple requests can be processed in a single connection, and multiple requests can overlap, without waiting for a request to end before sending the next request.

Because HTTP is actively releasing the connection after each request ends, the HTTP connection is a "short connection", which requires constant connection requests to the server to maintain the client program's online status. As a general practice, there is no need to obtain any data immediately, and the client will keep a "keep-connected" request to the server at regular intervals, and the server responds to the client after receiving the request, indicating that the client is "online". If the server can not receive the client's request for a long time, it is considered that the client "offline", if the client cannot receive a reply from the server for a long time, it is considered that the network has been disconnected.


3. Socket principle

3.1 Socket (socket) concept

Socket (socket) is the cornerstone of communication and is the basic operating unit of network communication supporting TCP/IP protocol. It is an abstract representation of the endpoint in the network communication process and contains five kinds of information that must be used for network communication: the protocol that the connection uses, the IP address of the local host, the protocol port of the local process, the IP address of the remote host, and the protocol port of the remote process.

When the application layer communicates data through the transport layer, TCP encounters a problem that provides concurrent services for multiple application processes at the same time. Multiple TCP connections or multiple application processes may require data to be transmitted over the same TCP protocol port. To differentiate between different application processes and connections, many computer operating systems provide a socket (socket) interface for applications interacting with the TCP/IP protocol. The application layer can communicate with the transport layer through the socket interface, differentiate the communication from different application processes or network connections, and realize the concurrent service of data transmission.


3.2 Establishing a socket connection


Establishing a socket connection requires at least one pair of sockets, one running on the client, called Clientsocket, and the other running on the server side, called ServerSocket.

The connection between sockets is divided into three steps: Server listening, client request, connection acknowledgement.

Server monitoring: Server-side sockets do not locate specific client sockets, but are waiting for the status of the connection, real-time monitoring network status, waiting for the client connection request.

Client request: Refers to the client's socket to make a connection request, to connect to the target is the server-side socket. To do this, the client's socket must first describe the socket of the server it is connecting to, indicate the address and port number of the server-side socket, and then make a connection request to the server-side socket.

Connection confirmation: When a server-side socket hears or receives a connection request from a client socket, it responds to a client socket request, establishes a new thread, sends a description of the server-side socket to the client, and once the client confirms the description, the two sides formally establish the connection. While the server-side socket continues to be in the listening state, it continues to receive connection requests from other client sockets.


4. Socket connection and TCP connection

When you create a socket connection, you can specify the transport layer protocol used, which can support different transport layer protocols (TCP or UDP), which is a TCP connection when a connection is made using the TCP protocol.


5. Socket connection and HTTP connection

Since the socket connection is usually a TCP connection, once the socket connection is established, the communication parties can start sending data content to each other until the two sides are disconnected. However, in real network applications, the client-to-server communication often needs to traverse multiple intermediary nodes, such as routers, gateways, firewalls, and so on, most firewalls will turn off long inactive connections and cause the Socket connection to be disconnected, so it needs to be polled to tell the network that the connection is active.

The HTTP connection uses a "request-response" approach, not only to establish a connection at the time of the request, but also to be able to reply to the server after the client has made a request to the server.

In many cases, the server side is required to proactively push data to the client, keeping the client and server data in real time and in sync. At this point, if the two sides established a socket connection, the server can directly transfer the data to the client, if the two sides establish an HTTP connection, the server needs to wait until the client sends a request before the data can be sent back to the client, so the client periodically sends a connection request to the server, not only to remain online, It also asks the server if there is any new data, and if so, it passes the data to the client.

II. Mutual relations

First of all, to correct the concept I have always misunderstood, I always thought that HTTP and TCP are two different, but the status of the same protocol, although know that TCP is the transport layer, and HTTP is the application layer learned today, know that HTTP is based on the TCP connection, simply say, TCP is simply to establish a connection that does not involve any actual data that we need to request, simple transmission. HTTP is used to send and receive data, which is actually applied.

First: From the transport layer, the first is the TCP connection, we want to connect with the server TCP connection, need to pass three connections, including: request, confirm, establish the connection. The legendary "three-time Handshake protocol".

First: C sends a request for a concatenated bit code SYN and a randomly generated sequence number to the SEQ, and then s receives the data.

Second time: S received this request to connect the bit code, ah, someone sent me a request, then I would like to accept his request, to achieve confirmation, so, sent a confirmation code ACN (seq+1), and Syn,seq to C, and then C received, this is the second connection.

The third time: C received a confirmation of the code and before the SYN sent a comparison, even yo, on the, so he sent a ACN (seq+1) to s,s received after the establishment of a connection, so that the TCP connection is completed.

Simple is: request, confirm, connect.

Second: from the actual data application, the HTTP

After the previous client and application server establish a TCP connection, it is necessary to use the HTTP protocol to transmit the data, the HTTP protocol simply, or request, confirm, connect.

The overall is C sends an HTTP request to s,s received this HTTP request, and then returns to the Chttp response, then C middleware or browser to render the data into a Web page, displayed in front of the user.

First: Send an HTTP request to S, which includes the request header and the requested content:

Request Header:

Included, 1. The requested method is Post/get, the requested Url,http protocol version 2. The requested data, and the encoding method 3 whether there are cookies and cooies, whether the cache, etc.

The difference between a post and a GET request is that get puts the request content behind the URL, but the URL length is limited. Post is a form of the situation, suitable for entering a password, and so on, because it is not displayed in the URL, so it is more secure.

Request Body:

That is, the requested content.

Second: s receives an HTTP request and then returns an HTTP response based on the request header.

Response header: Includes 1.cookies or Sessions2. Status 3. Content size, etc.

Response Body:

That is, the content of the response, including, JS or something.

Third, C received a series of rendering by the browser, including the execution of JS script.

This is what I understand the basic knowledge of webtcp,http, to be continued .....

TCP is the underlying communication protocol, which defines the specification for data transfer and connection methods
HTTP is an application-layer protocol that defines the specification for the content of the transmitted data
The data in the HTTP protocol is transmitted using the TCP protocol, so support for HTTP will also support TCP

HTTP is supported by WWW service
and TCP/IP is protocol
It is the foundation of Internet International Network. TCP/IP is the basic communication protocol used in the network.
TCP/IP is actually a set of protocols, which includes hundreds of various features of the protocol, such as: remote login, File transfer and e-mail, and the TCP protocol and IP protocol is to ensure the complete transmission of data two basic important protocol. Generally speaking, TCP/IP is the Internet protocol family, not just TCP and IP.

The difference and connection between HTTP and TCP

Contact Us

The content source of this page is from Internet, which doesn't represent Alibaba Cloud's opinion; products and services mentioned on that page don't have any relationship with Alibaba Cloud. If the content of the page makes you feel confusing, please write us an email, we will handle the problem within 5 days after receiving your email.

If you find any instances of plagiarism from the community, please send an email to: info-contact@alibabacloud.com and provide relevant evidence. A staff member will contact you within 5 working days.

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.