TCP(Transmission Control Protocol):传输控制协议是一种面向连接的、可靠的、基于字节流的传输层通信协议。
HTTP(Hyper Text Transfer Protocol):超文本传输协议,运行在TCP之上,是一种通用的、无状态的协议。
在了解TCP、HTTP之前,先熟悉下7层模型和4层模型。
OSI 7层模型
应用层(Application Layer):为网络用户之间的通信提供专用的程序。
表示层(Presentation Layer):主要用于处理两个通信系统中数据或信息的表示方式。它包括数据格式交互,数据加密与解密,数据压缩与解压缩等功能。
会话层(Session Layer):主要功能是在不同的主机上组织各种进程进行会话,并管理数据交换。
传输层(Transport Layer):传送数据的单元是报文Message。向用户提供可靠的端到端的数据服务,透明的传送报文。
网络层(Network Layer):传输数据的单位是分组或包Packet,网络层的主要任务是通过路由算法,为数据包通过通信子网选择最合适的路径。
网络层要实现路由选择、拥塞控制和网络互连等功能。
数据链路层(Data Link Layer):传输数据的单位是帧Frame,采用差错控制和流量控制,使有差错的物理线路变成无差错的数据链路。
物理层(Physical Layer):传输数据的单位为比特bit。主要功能是利用物理传输介质为数据链路层提供物理连接,透明的传递比特流。
TCP/IP 4层模型
应用层(Application Layer):负责实现一切与应用程序相关的功能。一般是可见的,如利用FTP传输一个文件,请求一个和目标计算机的连接,在传输文件的过程中,用户和远程计算机交换的一部分是能看到的。
常见协议:
HTTP:超文本传输协议。
FTP:文件传输协议。
Telnet:远程终端协议。
SMTP:简单邮件传输协议。
DNS:域名服务器协议。
传输层(Transport Layer):负责提供可靠的传输服务。其功能包括:格式化信息流;提供可靠传输。
常见协议:
TCP:控制传输协议。
UDP:用户数据报协议。
网络层(Inter-network Layer):负责网络间的寻址。管理离散的计算机间的数据传输,如IP协议为用户和远程计算机提供了信息包的传输方法,确保信息包能正确到达目的机器。
常见协议:
IP:网际协议。
ICMP:Internet 控制消息协议。
ARP:地址解析协议。
RARP:反向地址解析协议。
网络接口层(Host-to-Net Layer):负责实际数据的传输。
常见协议:
Ethernet:以太网。
FDDI:光纤分布式数据接口。
PPP:点对点协议。
Socket
Socket的中文叫套接字或套接口。起源于UNIX。是针对TCP或UDP的具体接口实现
Http
HTTP是第7层(应用层)协议,它运行在TCP传输层协议之上。
HTTP长连接:复用tcp连接,节省tcp连接建立和断开的消耗。HTTP1.0默认短连接,HTTP1.1默认长连接,客户端和服务端的HTTP首部的Connection都要设置为keep-alive,才能支持长连接。
HTTP1.1/HTTP2.0区别:HTTP1.1基于文本格式传输数据,HTTP2.0采用二进制格式传输数据,多路复用,头部压缩。
RPC
RPC是远程过程调用(Remote Procedure Call),是一种框架。RPC中可以使用HTTP作为通讯协议,通讯协议只是RPC中的一部分。RPC中还有序列化、反序列化等等。